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

MySQLでAUTO_INCREMENTの値を1から再スタートさせる方法

MySQLでAUTO_INCREMENT(自動採番)の値を1から振り直したい場合は、TRUNCATEでテーブルを初期化するのが最も簡単な方法です。ここでは、実際にサンプルテーブルを作成し、動作を順番に確認していきましょう。

サンプルテーブルの作成

まず、AUTO_INCREMENT列を持つテーブルを作成します。

mysql> create table DemoTable
(
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY
);
Query OK, 0 rows affected (1.44 sec)

次に、INSERTコマンドで複数のレコードを挿入します。

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.06 sec)

SELECT文で登録されたレコードをすべて表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+-----------+
| StudentId |
+-----------+
|         1 |
|         2 |
|         3 |
|         4 |
+-----------+
4 rows in set (0.00 sec)

このままさらにレコードを挿入すると、AUTO_INCREMENTであるStudentIdは「5」から継続して採番されます。連番を1から振り直したい場合は、まずテーブルをTRUNCATEします。

TRUNCATEでAUTO_INCREMENTをリセットする

AUTO_INCREMENTの値を1に戻すには、以下のようにTRUNCATE TABLEを実行します。

mysql> truncate table DemoTable;
Query OK, 0 rows affected (0.93 sec)
mysql> select *from DemoTable;
Empty set (0.00 sec)

TRUNCATE後はテーブルが空になり、AUTO_INCREMENTのカウンタも同時にリセットされます。改めてINSERTコマンドでレコードを挿入してみます。

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.07 sec)

SELECT文で内容を確認しましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。先ほどテーブルをTRUNCATEしたため、AUTO_INCREMENTが再び「1」から開始していることがわかります。

+-----------+
| StudentId |
+-----------+
|         1 |
|         2 |
|         3 |
+-----------+
3 rows in set (0.00 sec)

補足:DELETE文との違いに注意

DELETE文ですべての行を削除しても、AUTO_INCREMENTの値はリセットされません。その場合は ALTER TABLE DemoTable AUTO_INCREMENT = 1; を実行して明示的に番号を戻す必要があります。一方、TRUNCATEはテーブル全体を初期化する処理のため、AUTO_INCREMENTも自動的に1に戻るという違いがあります。用途に応じて使い分けるとよいでしょう。

  1. MySQLのSELECT文でIN()に単一の値を指定することは可能か?

    MySQLのIN()で単一の値を設定できます結論から言うと、MySQLのIN()句には単一の値を指定することが可能です。IN()は通常、複数の候補値をカンマ区切りで列挙するために使われますが、値が1つだけの場合でもエラーにはならず、正常に動作します。ここでは、実際にテーブルを作成して動作を確認してみましょう。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> FirstName varchar(20) -> ); Query OK, 0 rows affected

  2. MySQLで他のカラムの値から新しいカラムの値を導出する方法

    MySQLではユーザー定義変数(ユーザー変数)を活用することで、既存のカラムの値をもとに別のカラムの値を計算・導出できます。本記事では、累積和(累積合計)を求める具体例を通して、その方法をわかりやすく解説します。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable1868 ( Value int ); Query OK, 0 rows affected (0.00 sec)レコードの挿入insertコマンドを使って、テーブルにデータを挿入します。mysql> insert into DemoTable1