MySQL:テーブル作成クエリにおける「AUTO_INCREMENT = 5」とは何か?
MySQLでテーブルを作成する際に指定できる AUTO_INCREMENT = 5 は、自動採番される最初のレコードのIDを「1」ではなく「5」から開始させるためのオプションです。
通常、AUTO_INCREMENTを設定したカラムには、特に指定しない限り1から順に連番が振られていきます。しかし、AUTO_INCREMENT = 5 のように初期値を明示することで、採番のスタート地点を任意の数値に変更できます。
基本構文
記述方法は以下のとおりです。
CREATE TABLE yourTableName
(
yourColumnName1 dataType NOT NULL AUTO_INCREMENT,
.
.
.
N,
PRIMARY KEY(yourColumnName1)
)AUTO_INCREMENT=5;
それでは、実際にテーブルを作成して動作を確認してみましょう。
ケース1:デフォルト動作(1から採番)
まずは、AUTO_INCREMENTの初期値を指定しない場合の挙動です。デフォルトでは1から連番が始まります。
テーブル作成クエリは以下のとおりです。
mysql> create table defaultAutoIncrementDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(10),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (2.19 sec)
次に、INSERTコマンドを使っていくつかのレコードを追加します。
mysql> insert into defaultAutoIncrementDemo(Name) values('John');
Query OK, 1 row affected (0.23 sec)
mysql> insert into defaultAutoIncrementDemo(Name) values('James');
Query OK, 1 row affected (0.14 sec)
mysql> insert into defaultAutoIncrementDemo(Name) values('Robert');
Query OK, 1 row affected (0.14 sec)
mysql> insert into defaultAutoIncrementDemo(Name) values('Mike');
Query OK, 1 row affected (0.13 sec)SELECT文ですべてのレコードを表示すると、Idが1から始まっていることが確認できます。
mysql> select *from defaultAutoIncrementDemo;
実行結果は以下のとおりです。
+----+--------+
| Id | Name |
+----+--------+
| 1 | John |
| 2 | James |
| 3 | Robert |
| 4 | Mike |
+----+--------+
4 rows in set (0.00 sec)
ケース2:AUTO_INCREMENT = 5 を指定した場合(5から採番)
続いて、自動採番を5から開始させる場合の例です。テーブル作成時に AUTO_INCREMENT=5 を指定します。
mysql> create table AutoIncrementStartsFrom5
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(10),
-> PRIMARY KEY(Id)
-> )AUTO_INCREMENT=5;
Query OK, 0 rows affected (1.00 sec)
同様に、INSERTコマンドでレコードを追加していきます。
mysql> insert into AutoIncrementStartsFrom5(Name) values('Larry');
Query OK, 1 row affected (0.15 sec)
mysql> insert into AutoIncrementStartsFrom5(Name) values('David');
Query OK, 1 row affected (0.20 sec)
mysql> insert into AutoIncrementStartsFrom5(Name) values('Bob');
Query OK, 1 row affected (0.13 sec)
mysql> insert into AutoIncrementStartsFrom5(Name) values('Ricky');
Query OK, 1 row affected (0.14 sec)SELECT文で全レコードを表示してみましょう。
mysql> select *from AutoIncrementStartsFrom5;
実行結果は以下のとおりです。
+----+-------+
| Id | Name |
+----+-------+
| 5 | Larry |
| 6 | David |
| 7 | Bob |
| 8 | Ricky |
+----+-------+
4 rows in set (0.00 sec)
出力結果を見ると、Idが「5」から採番されていることがわかります。このように、テーブル作成時に AUTO_INCREMENT = 5 を指定すれば、連番の開始値を自由に制御できます。
補足:既存テーブルの開始値を変更する方法
なお、すでに作成済みのテーブルに対しては、ALTER TABLE文を使って同じように開始値を変更できます。
ALTER TABLE yourTableName AUTO_INCREMENT = 5;
この機能は、IDの重複を避けたいデータ移行時や、特定の番号体系を採用したいシステムなどで役立ちます。
-
MySQLでテーブルを動的に作成する方法(ストアドプロシージャ活用)
MySQLでテーブルを動的に作成したい場合は、ストアドプロシージャを利用するのが便利です。この記事では、StudentId(int型)とStudentName(varchar型)の2つのカラムを持つテーブルを、任意のテーブル名で動的に生成する手順を解説します。 ストアドプロシージャの作成 まず、テーブル名を引数として受け取り、動的にCREATE TABLE文を組み立てて実行するストアドプロシージャを作成します。 mysql> DELIMITER $$ mysql> CREATE PROCEDURE creatingDynamicTableDemo(yourTableName VAR
-
MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法
MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法MySQLでは、テーブル作成時にAUTO_INCREMENTオプションを指定することで、連番の開始値を任意の数値に設定できます。これにより、IDを100や1000など、特定の値から採番することが可能になります。以下の手順で、開始値を100に設定したAUTO_INCREMENTカラムを持つテーブルを作成し、その動作を確認してみましょう。1. テーブルの作成まず、AUTO_INCREMENT=100を指定してテーブルを作成します。mysql> create table DemoTable1907 (