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

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のカウンタは自動的にはリセットされないため、連番に抜けが出る可能性がある点にも留意しておきましょう。

  1. 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,

  2. MySQLでテーブルから特定の行を抽出するクエリの書き方

    MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),