MySQLでAUTO_INCREMENT(自動連番)を任意の値から開始する方法
MySQLでAUTO_INCREMENTを特定の値から開始する方法
MySQLで自動インクリメント(AUTO_INCREMENT)の開始値を任意の数値に設定したい場合は、ALTER TABLEコマンドを使用します。基本構文は以下のとおりです。
ALTER TABLE テーブル名 AUTO_INCREMENT = 開始したい数値;
実際に動作を確認するため、まずはサンプルテーブルを作成しましょう。テーブル作成のクエリは以下のとおりです。
mysql> create table AutoIncrementSpecificPoint
-> (
-> BookId int auto_increment not null,
-> Primary key(BookId)
-> );
Query OK, 0 rows affected (0.56 sec)
初期状態での動作確認
次に、INSERTコマンドを使ってレコードを挿入します。クエリは以下のとおりです。
mysql> insert into AutoIncrementSpecificPoint values();
Query OK, 1 row affected (0.17 sec)
mysql> insert into AutoIncrementSpecificPoint values();
Query OK, 1 row affected (0.17 sec)
mysql> insert into AutoIncrementSpecificPoint values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into AutoIncrementSpecificPoint values();
Query OK, 1 row affected (0.10 sec)
上記のINSERTコマンドでは、最初の値が「1」から始まり、以降のレコードには1ずつ加算された値が自動的に割り当てられます。SELECT文ですべてのレコードを確認してみましょう。
mysql> select *from AutoIncrementSpecificPoint;
実行結果は以下のとおりです。
+--------+
| BookId |
+--------+
| 1 |
| 2 |
| 3 |
| 4 |
+--------+
4 rows in set (0.00 sec)
結果を見ると、AUTO_INCREMENTがデフォルトどおり「1」から開始していることがわかります。
ALTER TABLEで開始値を変更する
それでは、AUTO_INCREMENTの開始値を特定の数値に変更してみましょう。ここではALTER TABLEコマンドを使用し、開始値を「100」に設定します。
mysql> alter table AutoIncrementSpecificPoint auto_increment = 100;
Query OK, 0 rows affected (0.25 sec)
Records: 0 Duplicates: 0 Warnings: 0
開始値の変更後、再度INSERTコマンドでレコードを挿入します。
mysql> insert into AutoIncrementSpecificPoint values();
Query OK, 1 row affected (0.25 sec)
mysql> insert into AutoIncrementSpecificPoint values();
Query OK, 1 row affected (0.18 sec)
mysql> insert into AutoIncrementSpecificPoint values();
Query OK, 1 row affected (0.14 sec)
SELECT文で全レコードを表示して確認します。
mysql> select *from AutoIncrementSpecificPoint;
実行結果は以下のとおりです。新しく挿入されたレコードには、設定した「100」から始まる連番が割り当てられています。
+--------+
| BookId |
+--------+
| 1 |
| 2 |
| 3 |
| 4 |
| 100 |
| 101 |
| 102 |
+--------+
7 rows in set (0.00 sec)
このように、ALTER TABLEコマンドを使えば、すでにデータが存在するテーブルでも簡単にAUTO_INCREMENTの開始値を変更できます。
補足:テーブル作成時に開始値を指定する方法
テーブルを新規作成する時点で開始値を指定することも可能です。CREATE TABLE文の末尾にAUTO_INCREMENTオプションを付与してください。
mysql> create table SampleTable
-> (
-> Id int auto_increment not null,
-> Primary key(Id)
-> ) auto_increment = 500;
Query OK, 0 rows affected (0.45 sec)
注意点
AUTO_INCREMENTの値は、テーブル内の現在の最大値より小さい数値には設定できません。その場合、指定した値は無視され、最大値+1から連番が継続されます。また、レコードを削除してもAUTO_INCREMENTのカウンタは自動的にはリセットされないため、連番に抜けが出る可能性がある点にも留意しておきましょう。
-
MySQLで削除後のAUTO_INCREMENTフィールドを振り直す方法|1,3,5を1,2,3に連番化する
MySQLでは、行を削除した後もAUTO_INCREMENTの値は欠番のまま残ります。例えば、IDが「1,2,3,4,5」のテーブルから「2」と「4」を削除すると、残るのは「1,3,5」です。この記事では、この欠番を詰めて「1,2,3」という連番に振り直す方法を、実際のSQL文と実行結果とともにわかりやすく解説します。 1. サンプルテーブルを作成する まず、AUTO_INCREMENTフィールドを持つテーブルを作成します。 mysql> create table DemoTable1955 ( UserId int NOT NULL AUTO_INCREMENT,
-
MySQLでテーブルから特定の行を抽出するクエリの書き方
MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),