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に戻るという違いがあります。用途に応じて使い分けるとよいでしょう。
-
MySQLのSELECT文でIN()に単一の値を指定することは可能か?
MySQLのIN()で単一の値を設定できます結論から言うと、MySQLのIN()句には単一の値を指定することが可能です。IN()は通常、複数の候補値をカンマ区切りで列挙するために使われますが、値が1つだけの場合でもエラーにはならず、正常に動作します。ここでは、実際にテーブルを作成して動作を確認してみましょう。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> FirstName varchar(20) -> ); Query OK, 0 rows affected
-
MySQLで他のカラムの値から新しいカラムの値を導出する方法
MySQLではユーザー定義変数(ユーザー変数)を活用することで、既存のカラムの値をもとに別のカラムの値を計算・導出できます。本記事では、累積和(累積合計)を求める具体例を通して、その方法をわかりやすく解説します。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable1868 ( Value int ); Query OK, 0 rows affected (0.00 sec)レコードの挿入insertコマンドを使って、テーブルにデータを挿入します。mysql> insert into DemoTable1