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

MySQLでテーブルの主キー(AUTO_INCREMENT)をリセットする方法

テーブルの主キーを「リセットする」とは、AUTO_INCREMENT のカウンタ値を 1 に戻すことを意味します。MySQLでは ALTER TABLE 文を使うことで簡単に実行できます。

主キー(AUTO_INCREMENT)をリセットする基本構文

ALTER TABLE テーブル名 AUTO_INCREMENT = 1;

この一文だけで、次に挿入されるレコードのIDが再び1から採番されるようになります。以下、実際の手順をサンプルとともに見ていきましょう。

1. サンプルテーブルを作成する

まず、自動採番の主キーを持つテーブルを作成します。

mysql> CREATE TABLE ResetPrimaryKey
-> (
    -> Id int auto_increment,
    -> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.59 sec)

2. テストデータを挿入する

IDを指定せずに複数件のレコードを挿入します。

mysql> INSERT INTO ResetPrimaryKey VALUES();
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO ResetPrimaryKey VALUES();
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO ResetPrimaryKey VALUES();
Query OK, 1 row affected (0.09 sec)

mysql> INSERT INTO ResetPrimaryKey VALUES();
Query OK, 1 row affected (0.09 sec)

3. 現在のデータを確認する

SELECT 文で登録内容を確認してみましょう。

mysql> SELECT * FROM ResetPrimaryKey;

出力結果は以下の通りです。主キーである Id 列だけが表示されます。

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

4. ALTER TABLEでAUTO_INCREMENTをリセットする

ここで本題のリセット処理です。ALTER TABLE を使って AUTO_INCREMENT を1に設定します。

mysql> ALTER TABLE ResetPrimaryKey AUTO_INCREMENT = 1;
Query OK, 0 rows affected (0.21 sec)
Records: 0 Duplicates: 0 Warnings: 0

5. 設定が反映されたか確認する

DESC 文でテーブル構造を確認し、auto_increment プロパティが正しく設定されているかチェックしましょう。

mysql> DESC ResetPrimaryKey;

出力結果:

+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| Id    | int(11) | NO   | PRI | NULL    | auto_increment |
+-------+---------+------+-----+---------+----------------+
1 row in set (0.11 sec)

Extra 列に auto_increment と表示されており、Key 列が PRI(主キー)になっていることが確認できました。

注意点:既存データがある場合の挙動

AUTO_INCREMENT = 1 を指定しても、テーブル内にその値以上のIDを持つレコードが残っている場合、MySQLは自動的に「最大ID + 1」を採番します。つまり、既存データを消さずにIDを振り直すことはできません。

テーブルの中身を完全に空にしてIDを1から振り直したい場合は、以下のように TRUNCATE TABLE を使うのが確実です。

TRUNCATE TABLE ResetPrimaryKey;

TRUNCATE は全行を削除すると同時に AUTO_INCREMENT カウンタも初期化してくれるため、開発・テスト環境でのデータリセットに便利です。

まとめ

  • 主キーのリセット=AUTO_INCREMENT 値を1に戻すこと。
  • ALTER TABLE テーブル名 AUTO_INCREMENT = 1; で変更可能。
  • 既存レコードが残っている場合は最大ID+1から採番されるため注意。
  • 全データ削除と同時に初期化したいなら TRUNCATE TABLE がおすすめ。
  1. MySQLで主キー(AUTO_INCREMENT)をリセットする方法

    MySQLで主キー(AUTO_INCREMENT)の値をリセットするには、まずTRUNCATE TABLEでテーブルを空にし、その後ALTER TABLEでAUTO_INCREMENTの開始値を設定します。この記事では、具体的な手順をサンプルコードとともに解説します。 1. サンプルテーブルの作成 まず、AUTO_INCREMENT付きの主キーを持つテーブルを作成します。 mysql> create table DemoTable1929 ( UserId int NOT NULL AUTO_INCREMENT, PRIMARY KEY(UserId) )

  2. MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説

    MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon