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

【MySQL】AUTO_INCREMENT列(id)を0にリセットするクエリの書き方

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

MySQLで自動インクリメント列(id)を0に設定したり、任意の値にリセットしたりするには、ALTER TABLE文を使用します。

ALTER TABLE テーブル名 AUTO_INCREMENT=0;

上記の構文を実行すると、次に挿入されるレコードのIDは1から採番されます。

実行例:テーブルの作成

まず、検証用のテーブルを作成します。ここでは、初期のAUTO_INCREMENT値を109に設定しています。

mysql> create table DemoTable698 (
    ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY
) auto_increment=109;
Query OK, 0 rows affected (0.88 sec)

AUTO_INCREMENT値を0に戻すクエリ

以下のクエリを実行すると、AUTO_INCREMENT値を0にリセットできます。

mysql> alter table DemoTable698 AUTO_INCREMENT=0;
Query OK, 0 rows affected (0.21 sec)
Records: 0 Duplicates: 0 Warnings: 0

動作確認:レコードの挿入

INSERT文でレコードを挿入し、リセット後の挙動を確認しましょう。ここでは、リセット後にどのようにIDが採番されるかを見るため、値を指定せずにレコードを挿入します。

mysql> insert into DemoTable698 values();
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable698 values();
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable698 values();
Query OK, 1 row affected (0.12 sec)

結果の確認

SELECT文ですべてのレコードを表示します。

mysql> select * from DemoTable698;

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

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

このように、AUTO_INCREMENT=0を設定した後は、IDが1、2、3と先頭から順番に採番されていることが確認できます。

注意点

テーブルにすでにデータが存在する場合、AUTO_INCREMENT値を「現在の最大ID + 1」未満に設定しても、その値は無視され、自動的に最大IDの次の番号が採用される点に注意してください。既存データがあるテーブルを完全に初期化したい場合は、レコードを削除(DELETEまたはTRUNCATE)してからリセットを行うのが安全です。

  1. MySQLでJSON型カラムにデフォルト値を設定する方法

    MySQLでは、JSON型のカラムにもデフォルト値を設定できます。その場合は、DEFAULT制約を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 MODIFY COLUMN カラム名 JSON NOT NULL DEFAULT ( JSON_OBJECT() );サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。ここでは demo24 というテーブルを作成します。mysql> create table demo24 -> ( -> employee_information text -> ) ->; Query OK,

  2. MySQLのAUTO_INCREMENTとは?自動採番と初期値の設定方法をわかりやすく解説

    AUTO_INCREMENT属性の基本MySQLのAUTO_INCREMENT属性は、新しい行に対して一意の識別子(連番)を自動的に生成するために使用されます。カラムが「NOT NULL」として宣言されている場合、そのカラムにNULLを代入することで、連番のシーケンスを生成することが可能です。AUTO_INCREMENTカラムに任意の値を挿入すると、そのカラムは指定した値に設定され、同時にシーケンスもリセットされます。以降は、挿入された最大値を起点として、連続した値が自動的に生成されていきます。また、既存のAUTO_INCREMENTカラムを更新した場合も、AUTO_INCREMENTのシーケ