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

MySQLでAUTO_INCREMENT(自動インクリメント)列をリセットする方法

MySQLで自動インクリメント(AUTO_INCREMENT)列の値をリセットしたい場合は、TRUNCATE TABLEコマンドを使用します。テーブルをTRUNCATEすると、すべてのデータが削除されるとともに、AUTO_INCREMENTのカウンターも初期化されます。その後、新しくレコードを挿入すると、IDは再び1から採番されます。

1. テーブルを作成する

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

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

2. レコードを挿入する

INSERTコマンドを使って、いくつかのレコードを追加してみましょう。

mysql> insert into DemoTable1888 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1888 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1888 values();
Query OK, 1 row affected (0.00 sec)

3. 挿入したレコードを確認する

SELECT文でテーブルの中身を確認します。

mysql> select * from DemoTable1888;

実行結果は以下のとおりです。IDが「1」「2」「3」と連番で採番されていることがわかります。

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

4. TRUNCATE TABLEで自動インクリメントをリセットする

ここで、AUTO_INCREMENT列をリセットするためのクエリを実行します。

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

TRUNCATE TABLEを実行すると、テーブル内の全レコードが削除され、テーブルは空の状態(Empty set)になります。

5. リセット後にもう一度レコードを挿入する

リセット後に再度レコードを挿入して、挙動を確認してみます。

mysql> insert into DemoTable1888 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1888 values();
Query OK, 1 row affected (0.00 sec)

SELECT文で確認します。

mysql> select * from DemoTable1888;

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

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

まとめ

このように、TRUNCATE TABLEを使えば、テーブルのデータを全件削除すると同時に、AUTO_INCREMENTのカウンターも初期化できます。新しく挿入されたレコードには、再び「1」から連番が振られることが確認できました。

なお、テーブル内のデータを残したままAUTO_INCREMENT値だけを変更したい場合は、「ALTER TABLE テーブル名 AUTO_INCREMENT = 値;」を使用します。ただし、指定できる値は現在の最大IDより大きい数値である必要がある点に注意してください。

  1. Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】

    はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId

  2. MySQLでシーケンスを作成する方法|AUTO_INCREMENTの使い方とルールを解説

    MySQLにおけるシーケンスとは?MySQLにおける「シーケンス」とは、1(指定した場合は0)から始まり、昇順で自動生成される整数の連番のことです。多くのアプリケーションでは、レコードを一意に識別するための番号を発行する目的でシーケンスが利用されています。具体例代表的な例としては、CRMシステムの顧客ID、人事管理システムの社員番号、設備管理システムの機器番号などが挙げられます。MySQLでシーケンスを自動的に作成するには、対象のカラムにAUTO_INCREMENT属性を設定します。通常は、主キー(PRIMARY KEY)カラムに対して適用するのが一般的です。AUTO_INCREMENTを使用