MySQLでAUTO_INCREMENT(自動増分)の開始値を変更する方法をわかりやすく解説
AUTO_INCREMENTとは?
MySQLのAUTO_INCREMENTは、新しいレコードが追加されるたびに数値を自動的に1ずつ増加させるデフォルトのプロパティです。通常は1から始まりますが、ALTERコマンドを使えば、この開始番号を任意の値に変更することが可能です。
本記事では、実際にテーブルを作成し、レコードを挿入しながら、AUTO_INCREMENTの開始値を変更する手順を順番に解説します。
ステップ1:テーブルを作成する
まず、CREATE TABLE文を使って、id列にAUTO_INCREMENTを設定したテーブルを作成します。
mysql> CREATE table AutoIncrementTable -> ( -> id int auto_increment, -> name varchar(200), -> Primary key(id) -> ); Query OK, 0 rows affected (0.70 sec)
ここでは、自動採番されるid列と、名前を格納するname列を持つシンプルなテーブルを作成しました。AUTO_INCREMENTを利用する列には、必ず主キー(PRIMARY KEY)などのインデックスが必要になる点に注意してください。
ステップ2:レコードを挿入する
次に、INSERT文を使ってテーブルにレコードを追加します。name列のみを指定すれば、idは自動的に採番されます。
mysql> INSERT into AutoIncrementTable(name) values('Carol');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT into AutoIncrementTable(name) values('Bob');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT into AutoIncrementTable(name) values('John');
Query OK, 1 row affected (0.18 sec)
ステップ3:挿入したデータを確認する
SELECT文でテーブルの中身を確認してみましょう。
mysql> SELECT * from AutoIncrementTable;
実行結果は以下の通りです。
+----+-------+ | id | name | +----+-------+ | 1 | Carol | | 2 | Bob | | 3 | John | +----+-------+ 3 rows in set (0.00 sec)
このように、3件のレコードが挿入され、idには1から順に連番が自動的に割り振られていることがわかります。
ステップ4:AUTO_INCREMENTの開始値を変更する
それでは本題です。次に挿入されるレコードのidが1000から始まるように、AUTO_INCREMENTの値を変更してみましょう。変更には以下の構文を使用します。
ALTER TABLE テーブル名 AUTO_INCREMENT = 開始番号;
実際に「AutoIncrementTable」の開始値を1000に変更する例がこちらです。
mysql> alter table AutoIncrementTable auto_increment = 1000; Query OK, 0 rows affected (0.16 sec) Records: 0 Duplicates: 0 Warnings: 0
エラーが出力されずに完了していれば、変更は成功しています。
注意点
- 指定する開始値は、現在テーブル内に存在する最大のid値より大きい必要があります。既存の最大値より小さい値を指定しても無効になります。
- InnoDBの場合、サーバー再起動後に未使用のAUTO_INCREMENT値がリセットされる挙動があるため、運用環境では注意が必要です。
ステップ5:変更後の動作を確認する
AUTO_INCREMENTの変更後、さらにレコードを挿入して動作を確認してみます。
mysql> INSERT into AutoIncrementTable(name) values('Taylor');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT into AutoIncrementTable(name) values('Sam');
Query OK, 1 row affected (0.17 sec)
再度SELECT文で全レコードを表示すると、以下のようになります。
+------+--------+ | id | name | +------+--------+ | 1 | Carol | | 2 | Bob | | 3 | John | | 1000 | Taylor | | 1001 | Sam | +------+--------+ 5 rows in set (0.00 sec)
ご覧のとおり、4件目以降のレコードには1000から始まる連番が自動的に割り振られています。既存のレコード(id:1〜3)には影響せず、新しく追加されるレコードだけに変更が適用される点もポイントです。
まとめ
MySQLでAUTO_INCREMENTの開始値を変更するには、ALTER TABLE テーブル名 AUTO_INCREMENT = 開始番号;というシンプルな構文を使用します。テストデータの作成やID体系の調整など、さまざまな場面で役立つテクニックなので、ぜひ覚えておきましょう。ただし、既存の最大idより大きい値しか指定できない点や、InnoDBでの再起動時の挙動には注意が必要です。
-
MySQLで001から始まる自動採番のユーザーIDシーケンス番号を表示する方法
MySQLでは、AUTO_INCREMENTで生成される連番は通常「1」から始まります。しかし、会員IDや管理番号などで「001」「002」のようにゼロ埋め(ゼロパディング)された形式で表示したいケースはよくあります。このような場合には、カラムに ZEROFILL 属性を指定し、テーブルを変更することで実現できます。以下、具体的な手順を順番に見ていきましょう。1. 検証用テーブルを作成するまず、動作を確認するためのサンプルテーブルを作成します。mysql> create table DemoTable1958 ( UserId int, UserName varc
-
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コマンドを使ってテ