MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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の重複を避けたいデータ移行時や、特定の番号体系を採用したいシステムなどで役立ちます。

  1. MySQLでテーブルを動的に作成する方法(ストアドプロシージャ活用)

    MySQLでテーブルを動的に作成したい場合は、ストアドプロシージャを利用するのが便利です。この記事では、StudentId(int型)とStudentName(varchar型)の2つのカラムを持つテーブルを、任意のテーブル名で動的に生成する手順を解説します。 ストアドプロシージャの作成 まず、テーブル名を引数として受け取り、動的にCREATE TABLE文を組み立てて実行するストアドプロシージャを作成します。 mysql> DELIMITER $$ mysql> CREATE PROCEDURE creatingDynamicTableDemo(yourTableName VAR

  2. MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法

    MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法MySQLでは、テーブル作成時にAUTO_INCREMENTオプションを指定することで、連番の開始値を任意の数値に設定できます。これにより、IDを100や1000など、特定の値から採番することが可能になります。以下の手順で、開始値を100に設定したAUTO_INCREMENTカラムを持つテーブルを作成し、その動作を確認してみましょう。1. テーブルの作成まず、AUTO_INCREMENT=100を指定してテーブルを作成します。mysql> create table DemoTable1907 (