MySQL,AUTO_INCREMENTで連続番号を自動的に入力

スポンサーリンク

鍛錬 915

MySQL,AUTO_INCREMENTで連続番号を自動的に入力

テーブルの作成時に AUTO_INCREMENT を使用すると、テーブルにデータを追加する際、数値を自動的に1ずつ増加させて、連続した値をカラムに入力することができます。
 
使用方法は、以下に示す通りです。

CREATE TABLE テーブル名 (カラム名 カラムの型 AUTO_INCREMENT PRIMARY KEY, ・・・);

AUTO_INCREMENT を使用する際、PRIMARY KEY (主キー) や UNIQUE (ユニークキー) 等を使用して、カラムのデータが重複することを防ぐ必要があります。

関連記事:MySQL,PRIMARY KEYで主キーを設定する
関連記事:MySQL,UNIQUEで重複を禁じるユニークキーを設定する

スポンサーリンク

実行結果

以下は、テーブルを作成する際に AUTO_INCREMENT を使用して、連続した数値が自動的にカラムへ入力されるように設定しています。

テーブルを作成

今回は、1列目のカラム「id (データ型 int)」に、AUTO_INCREMENT と PRIMARY KEY を設定します。

1列目のカラム 2列目のカラム 3列目のカラム
id
(AUTO_INCREMENT)
(PRIMARY KEY)
name price

 
以下は、テーブル fruits を作成しています。

作成後に DESC を使用してテーブルの構造を表示し、カラム id に AUTO_INCREMENT と PRIMARY KEY が設定されていることを確認しています。

関連記事:MySQL,SHOW COLUMNSやDESCでカラム一覧を確認

mysql> 
mysql> create table fruits (
    ->   id int auto_increment primary key,
    ->   name varchar(256),
    ->   price int
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> 
mysql> 
mysql> desc fruits;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(256) | YES  |     | NULL    |                |
| price | int(11)      | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

データを入力する

以下は、作成したテーブル fruits にデータを入力しています。

カラム name と price にデータを入力するだけで、カラム id の値が自動的にインクリメントされていることが分かります。

id
(AUTO_INCREMENT)
(PRIMARY KEY)
name price
1 apple 250
2 orange 300
3 grape 500
mysql> 
mysql> insert into fruits (name, price) values ('apple', 250);
Query OK, 1 row affected (0.01 sec)

mysql> 
mysql> 
mysql> select * from fruits;
+----+-------+-------+
| id | name  | price |
+----+-------+-------+
|  1 | apple |   250 |
+----+-------+-------+
1 row in set (0.00 sec)

mysql> 
mysql> 
mysql> insert into fruits (name, price) values ('orange', 300);
Query OK, 1 row affected (0.00 sec)

mysql> insert into fruits (name, price) values ('grape', 500);
Query OK, 1 row affected (0.00 sec)

mysql> 
mysql> 
mysql> select * from fruits;
+----+--------+-------+
| id | name   | price |
+----+--------+-------+
|  1 | apple  |   250 |
|  2 | orange |   300 |
|  3 | grape  |   500 |
+----+--------+-------+
3 rows in set (0.00 sec)
タイトルとURLをコピーしました