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

MySQLでAUTO_INCREMENTをリセットする方法【TRUNCATE TABLEの使い方】

MySQLでテーブルのAUTO_INCREMENT(自動採番)の値をリセットしたい場合は、TRUNCATE TABLE文を使うのが最も簡単な方法です。TRUNCATEを実行すると、テーブル内の全データが削除されると同時に、AUTO_INCREMENTのカウンタも初期化されます。

AUTO_INCREMENTをリセットする基本構文

truncate table テーブル名;

それでは、実際に動作を確認していきましょう。

1. 検証用テーブルを作成する

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

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

2. レコードを挿入する

INSERTコマンドを使って、複数のレコードをテーブルに挿入します。

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

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

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

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

SELECT文で、テーブル内のすべてのレコードを表示して確認してみます。

mysql> select * from DemoTable;

出力結果

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

Idカラムに1〜4までの連番が自動的に採番されていることがわかります。

3. TRUNCATE TABLEでAUTO_INCREMENTをリセットする

以下のクエリを実行して、AUTO_INCREMENTをリセットします。

mysql> truncate table DemoTable;
Query OK, 0 rows affected (0.80 sec)

TRUNCATE実行後にもう一度レコードを挿入すると、AUTO_INCREMENTはデフォルトで1から再開されます。

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

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

再度、すべてのレコードを表示して確認しましょう。

mysql> select * from DemoTable;

出力結果

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

TRUNCATE後に挿入されたレコードには、Idが1から振り直されていることが確認できます。

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

DELETE FROM テーブル名; で全レコードを削除した場合、AUTO_INCREMENTのカウンタはリセットされず、連番は継続されます。AUTO_INCREMENT値を初期化したい場合は、必ずTRUNCATE TABLEを使用してください。

また、データを残したまま次の採番値だけを変更したい場合は、以下のようにALTER TABLEを使います。

ALTER TABLE テーブル名 AUTO_INCREMENT = 1;

※この場合、指定できる値は既存の最大Idより大きい数値である必要があります。

  1. MySQLのONとUSINGの違いを解説!JOIN句の使い分け方法を具体例で学ぶ

    MySQLにおけるONとUSINGの基本的な違いMySQLでテーブルを結合(JOIN)する際、一般的に使用されるのはONです。JOIN句では、結合条件となるカラムの組み合わせをONで指定します。一方、USINGは、結合する両方のテーブルが完全に同じ名前のカラムを共有している場合に便利な構文です。本記事では、実際にテーブルを作成しながら、ONとUSINGそれぞれの使い方と実行結果を詳しく見ていきましょう。ONを使った例1つ目のテーブルを作成するまず、外部キーを持つテーブルを作成します。mysql> CREATE table ForeignTableDemo -> ( ->

  2. MySQLルートパスワードをリセットまたは変更する方法【ALTER USERコマンド解説】

    MySQLのrootパスワードをリセットまたは変更するには、まず管理者モードでMySQLにログインする必要があります。ログイン後、mysqlデータベースに切り替えて、登録されているすべてのユーザーとホスト情報を確認できます。 1. ユーザー一覧の確認 以下のクエリを実行して、現在存在するユーザーとホストの一覧を表示します。 SELECT user,host FROM user; 実行結果は次のとおりです。 +------------------+-----------+ | user | host | +------------------+------