MySQLでカラムを連番にする「AUTO_INCREMENT」

MySQLでテーブルのカラムを整数の連番にする設定を紹介します。ユーザーIDのカラムなど、整数の連番となるカラムで利用すると便利です。

カラムを整数の連番にする設定「auto_increment」

CREATE TABLE テーブル名 (カラム名 型情報 AUTO_INCREMENT, ...);

整数のデータ型が設定されているカラムに対して、AUTO_INCREMENTを設定することで整数の連番カラムとすることができます。

AUTO_INCREMENTが設定されたカラムには、自動で連番の値が保存されます。

AUTO_INCREMENTを設定した例

例えば、IDとNameだけのテーブルがあったとして、IDにauto_incrementが設定されていると以下のように、「1、2、3」と整数の連番になります。

+----+------+
| ID | Name |
+----+------+
| 1  | John |
| 2  | Nick |
| 3  | Mike |
+----+------+

初期値は1で行を追加する時に、ひとつ前のカラムに1を加えた値が保存されます。

基本的にAUTO_INCREMENTが設定されたカラムには自動で値が格納されていくように利用するのですが、任意の数値を指定して格納することも可能です。また重複した値を格納することもできます。

AUTO_INCREMENTを設定した時の注意点

AUTO_INCREMENTの設定にあたっていくつか注意すべきポイントがあります。

AUTO_INCREMENTを設定したカラムの制限

・カラムにインデックスを設定する必要がある
・カラムにDEFAULTは設定できない
・カラムには正の整数しか保存できない

行を削除した時の挙動

例えば、以下のようなAUTO_INCREMENTを設定したIDというカラムがあるとします。

+----+------+
| ID | Name |
+----+------+
| 1  | John |
| 2  | Nick |
| 3  | Mike |
+----+------+

このID:3の行を削除した後に、新しい行を追加した時のIDは「3」ではなく「4」となります。

そのほかにも、テーブル内の1つのカラムにしか設定できないといった制限もあります。


イベント