目次
AUTO_INCREMENTとは
AUTO_INCREMENTとは、指定したカラム(フィールド)に対してデータが追加されると、MySQLが一意の値を自動的に付与する機能のこと。
カラムに登録されたデータに連番を自動で付ける際に便利です。
AUTO_INCREMENTの使い方・設定方法
AUTO_INCREMENTは、整数か浮動小数点数のデータ型のカラムに対して設定可能です。
また、AUTO_INCREMENTをカラムに設定する際には、PRIMARY KEY(主キー)か、UNIQUE KEY(ユニークキー)を設定します。
AUTO_INCREMENTとPRIMARY KEYを併用して、連番を付けるのが一般的な設定方法です。
AUTO_INCREMENTを設定するには、以下のように記述します。
CREATE TABLE テーブル名 (カラム名 データ型 AUTO_INCREMENT);
サンプルで「my_table」テーブルを作成し、idカラムにAUTO_INCREMENTを設定しましょう。
mysql> CREATE TABLE my_table (id INT AUTO_INCREMENT, name VARCHAR(10), PRIMARY KEY (id));
テーブルを作成したらデータをひとつ追加してみます。
ここでは、以下のINSERT INTOコマンドでnameにデータを挿入してください。
mysql> INSERT INTO my_table (name) VALUE ('サンプルです');
「SELECT * FROM my_table」でテーブルを確認すると、以下のように表示されるはずです。
mysql> SELECT * FROM my_table; +----+--------------------+ | id | name | +----+--------------------+ | 1 | サンプルです | +----+--------------------+ 1 row in set (0.00 sec)
idに値を指定しなくても自動で「1」が追加されています。
AUTO_INCREMENTの初期値を設定する方法
先ほどのサンプルように、AUTO_INCREMENTは基本的に1から連番が振られていきます。
しかし、中には1以外の値から連番を振りたい時もあるでしょう。
AUTO_INCREMENTの値を指定するには、以下のように記述します。
CREATE TABLE テーブル名 (カラム名 データ型 AUTO_INCREMENT) AUTO_INCREMENT = 値;
phpMyAdminからAUTO_INCREMENTを設定する方法
phpMyAdminでAUTO_INCREMENTを設定する手順は以下の通りです。
- データベースからテーブルを選択
- 「Structure」タブを選択し、AUTO_INCREMENTを設定したいカラムを選択
- 右の方にある「A_I」にチェックを入れて保存
AUTO_INCREMENTの値を変更する方法
AUTO_INCREMENTの値を変更するには、以下のように記述します。
ALTER TABLE テーブル名 AUTO_INCREMENT = 値;
先ほど作成したmy_tableのidの値を50に変更してみましょう。
mysql> ALTER TABLE my_table AUTO_INCREMENT=50; mysql> INSERT INTO my_table (name) VALUE ('id=50です');
「SELECT * FROM my_table」でテーブルを確認すると、以下のように表示されるはずです。
mysql> SELECT * FROM my_table; +----+--------------------+ | id | name | +----+--------------------+ | 1 | サンプルです | | 50 | id=50です | +----+--------------------+ 2 rows in set (0.00 sec)
AUTO_INCREMENTのカラムを変更する方法
今はidカラムにAUTO_INCREMENTを設定していますが、別のカラムにAUTO_INCREMENTを設定し直したい場合もあるでしょう。
次に、AUTO_INCREMENTのカラムを変更する方法を解説します。
まずは、先ほどとは別に「new_id」が追加されたテーブルを用意しましょう。
ここでは「id」から「new_id」にAUTO_INCREMENTを変更します。
mysql> CREATE TABLE my_table2 (id INT AUTO_INCREMENT, new_id INT, name VARCHAR(10), PRIMARY KEY (id));
まずは、CHANGEコマンドでidのAUTO_INCREMENTを解除しましょう。
mysql> ALTER TABLE my_table2 CHANGE id id INT NOT NULL;
AUTO_INCREMENTを解除したら、PRIMARY KEYも解除します。
mysql> ALTER TABLE my_table2 DROP PRIMARY KEY;
最後に、新しく「new_id」にPRIMARY KEYとAUTO_INCREMENTを設定します。
mysql> ALTER TABLE my_table2 ADD PRIMARY KEY (new_id); mysql> ALTER TABLE my_table2 CHANGE new_id new_id INT AUTO_INCREMENT;
これで、AUTO_INCREMENTのカラムを変更できました。
この状態でカラムを確認すると、以下のように表示されるはずです。
mysql> SHOW COLUMNS FROM my_table2; +--------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+----------------+ | id | int | NO | | NULL | | | new_id | int | NO | PRI | NULL | auto_increment | | name | varchar(10) | YES | | NULL | | +--------+-------------+------+-----+---------+----------------+
AUTO_INCREMENTを追加(insert)する方法
作成済みのテーブルのカラムにAUTO_INCREMENTを追加したい場合は、変更する方法と同じようにPRIMARY KEYとAUTO_INCREMENTを設定すればOKです。
ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名); ALTER TABLE テーブル名 CHANGE カラム名 カラム名 データ型 AUTO_INCREMENT;
AUTO_INCREMENTを削除する方法
AUTO_INCREMENTを削除したい場合も、変更する方法と同じようにPRIMARY KEYとAUTO_INCREMENTを解除します。
ALTER TABLE テーブル名 CHANGE カラム名 カラム名 データ型 NOT NULL; ALTER TABLE テーブル名 DROP PRIMARY KEY;
まとめ
MySQLのAUTO_INCREMENTの設定や追加、変更方法などを解説しました。
AUTO_INCREMENTは自動で採番してくれ、使いこなせば非常に便利な機能です。
ぜひこの記事を参考に、AUTO_INCREMENTの使い方をマスターしてください!
AUTO_INCREMENTとPRIMARY KEYは、テーブルのひとつのカラムにのみ指定可能です。