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より大きい数値である必要がある点に注意してください。
-
Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】
はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId
-
MySQLでシーケンスを作成する方法|AUTO_INCREMENTの使い方とルールを解説
MySQLにおけるシーケンスとは?MySQLにおける「シーケンス」とは、1(指定した場合は0)から始まり、昇順で自動生成される整数の連番のことです。多くのアプリケーションでは、レコードを一意に識別するための番号を発行する目的でシーケンスが利用されています。具体例代表的な例としては、CRMシステムの顧客ID、人事管理システムの社員番号、設備管理システムの機器番号などが挙げられます。MySQLでシーケンスを自動的に作成するには、対象のカラムにAUTO_INCREMENT属性を設定します。通常は、主キー(PRIMARY KEY)カラムに対して適用するのが一般的です。AUTO_INCREMENTを使用