MySQLでAUTO_INCREMENT(自動インクリメント)の開始値を変更する方法
MySQLのAUTO_INCREMENT開始値を任意の数値に設定する
MySQLでは、AUTO_INCREMENT(自動インクリメント)カウンターはデフォルトで1から始まります。しかし、テーブル設計やデータ移行の都合上、特定の数値から採番を開始したいケースは少なくありません。そのような場合は、ALTER TABLE文を使って開始値を自由に変更できます。
基本構文
ALTER TABLE テーブル名 auto_increment = 開始したい整数値;
この構文を使えば、既存のテーブルの自動インクリメント開始値を任意の整数に設定できます。
実際に試してみよう
まず、動作を確認するためのサンプルテーブルを作成します。Counter列をAUTO_INCREMENTに設定し、主キーとして定義しています。
mysql> create table startAutoIncrement -> ( -> Counter int auto_increment , -> primary key(Counter) -> ); Query OK, 0 rows affected (0.90 sec)
次に、自動インクリメントを20から始まるように変更します。以下のクエリを実行してください。
mysql> alter table startAutoIncrement auto_increment=20; Query OK, 0 rows affected (0.30 sec) Records: 0 Duplicates: 0 Warnings: 0
レコードを挿入して動作を確認
続いて、INSERTコマンドでレコードを追加します。AUTO_INCREMENT列には値を指定しないため、空のVALUES()を渡します。
mysql> insert into startAutoIncrement values(); Query OK, 1 row affected (0.20 sec) mysql> insert into startAutoIncrement values(); Query OK, 1 row affected (0.14 sec) mysql> insert into startAutoIncrement values(); Query OK, 1 row affected (0.18 sec)
これで3件のレコードが挿入されました。先ほどAUTO_INCREMENTの開始値を20に変更したため、採番は20から始まるはずです。SELECT文で全レコードを表示して確認してみましょう。
mysql> select *from startAutoIncrement;
実行結果は以下の通りです。
+---------+ | Counter | +---------+ | 20 | | 21 | | 22 | +---------+ 3 rows in set (0.00 sec)
まとめと注意点
実行結果の通り、レコードには20、21、22という連番が自動的に採番されており、開始値の変更が正しく反映されていることがわかります。
AUTO_INCREMENTの開始値を変更する際は、以下の点に注意しましょう。
- 指定した値より大きい番号がすでに存在する場合、MySQLは既存の最大値より大きい値を自動的に採用します。
- InnoDBの場合、サーバー再起動後にAUTO_INCREMENT値が再計算されることがあります(MySQL 8.0以降では永続化されるため、この問題は解消されています)。
このようにALTER TABLE ... AUTO_INCREMENTを使えば、簡単に採番の開始値を制御できます。初期データとの整合性を保ちたい場合などにぜひ活用してください。
-
MySQLでNOT IN()を使ってテーブルから特定の値を除外する方法
MySQLでは、NOT IN()句を使用することで、テーブルから特定の値を除外してデータを取得できます。条件に含めたくない値をリストで指定するだけで、それらを除いたレコードを簡単に抽出できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable791 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100) ); Query OK, 0 rows affected (0.61 sec)テストデータの挿入次に、INSERTコマ
-
MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方
MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ