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

MySQLでAUTO_INCREMENTの開始番号を変更する2つの方法

MySQLのAUTO_INCREMENT(自動採番)はデフォルトで1から始まりますが、状況によっては任意の番号から開始したいケースもあります。例えば、既存システムとのデータ連携やIDの体系を揃えたい場合などです。本記事では、AUTO_INCREMENTの開始値を変更する2つの方法を具体例とともに解説します。

方法1:ALTER TABLEクエリで変更する

すでに存在するテーブルのAUTO_INCREMENT開始値を変更するには、ALTER TABLEクエリを使用します。基本構文は以下の通りです。

ALTER TABLE table_name AUTO_INCREMENT = value;

実行例

まず、「id」列をAUTO_INCREMENTに設定したテーブルを作成し、データを挿入してみます。連番はデフォルトどおり1から始まります。

mysql> Create Table EMP(id int NOT NULL PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10));
Query OK, 0 rows affected (0.07 sec)

mysql> Insert Into EMP(Name) Values('Aryan');
Query OK, 1 row affected (0.02 sec)

mysql> Insert Into EMP(Name) Values('Yash');
Query OK, 1 row affected (0.04 sec)

mysql> Select * from EMP;
+----+-------+
| id | NAME  |
+----+-------+
| 1  | Aryan |
| 2  | Yash  |
+----+-------+
2 rows in set (0.00 sec)

ここで、途中から連番を10から振り直したい場合は、ALTER TABLEクエリでAUTO_INCREMENTの値を変更します。

mysql> Alter table emp auto_increment = 10;
Query OK, 2 rows affected (0.25 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> Insert Into EMP(Name) Values('Daksh');
Query OK, 1 row affected (0.03 sec)

mysql> Insert Into EMP(Name) Values('Shayra');
Query OK, 1 row affected (0.06 sec)

mysql> Select * from EMP;
+----+--------+
| id | NAME   |
+----+--------+
| 1  | Aryan  |
| 2  | Yash   |
| 10 | Daksh  |
| 11 | Shayra |
+----+--------+
4 rows in set (0.00 sec)

このように、AUTO_INCREMENTの値を10に変更した後は、新しく挿入されるレコードには10以降の連番が割り当てられます。なお、指定する値は現在の最大IDより大きい必要がある点に注意してください。

方法2:CREATE TABLEクエリで指定する

テーブルを新規作成する時点でAUTO_INCREMENTの開始値を決めておくことも可能です。CREATE TABLEクエリにAUTO_INCREMENTオプションを付けて指定します。

CREATE TABLE (Column1 INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Column2 data type) AUTO_INCREMENT = value;

実行例

mysql> Create Table EMP1(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10)) AUTO_INCREMENT = 100;
Query OK, 0 rows affected (0.11 sec)

上記のクエリでは、テーブル作成時にAUTO_INCREMENTの開始値を100に設定しています。このため、以降に挿入されるデータには、デフォルトの1ではなく100から連番が振られます。

mysql> Insert into emp1(name) values('Sohan');
Query OK, 1 row affected (0.04 sec)

mysql> Insert into emp1(name) values('Harshit');
Query OK, 1 row affected (0.05 sec)

mysql> Select * from emp1;
+-----+---------+
| id  | NAME    |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
+-----+---------+
2 rows in set (0.00 sec)

まとめ

AUTO_INCREMENTの開始番号を変更する方法は以下の2つです。

  • 既存テーブルの場合: ALTER TABLEクエリで「AUTO_INCREMENT = 値」を指定する
  • 新規テーブルの場合: CREATE TABLEクエリの末尾で「AUTO_INCREMENT = 値」を指定する

用途に応じて使い分けることで、柔軟なID設計が可能になります。

  1. MySQLで日付ごとの合計値を集計する方法【GROUP BY活用術】

    MySQLでは、datetime型の日付データを日ごとにグループ化し、数値の合計を求めることができます。本記事では、サンプルテーブルを作成し、DATE()関数とGROUP BY句、SUM()関数を組み合わせて日付ごとの合計を集計する手順を解説します。1. サンプルテーブルの作成まず、datetime型のカラムと、日数(カウント)を格納するint型のカラムを持つテーブルを作成します。mysql> create table DemoTable ( ShippingDate datetime, CountOfDate int ); Query OK, 0 rows affect

  2. MySQLのSOUNDEX()関数を使って発音が似た文字列を検索する方法

    SOUNDEX()関数とはMySQLのSOUNDEX()関数は、文字列からサウンドex(Soundex)コードと呼ばれる音声表現の文字列を返します。Soundexは、英語の発音の類似性に基づいて文字列をインデックス化するアルゴリズムで、発音がほぼ同じ2つの文字列は、同一のSoundexコードを持つという特徴があります。この特性を活かすことで、スペルは異なるが発音が似ている名前や単語を効率的に検索できます。SOUNDEX()を使用したクエリの基本構文MySQLでSOUNDEX()を使って検索するには、以下のような構文を使用します。SELECT * FROM テーブル名 WHERE SOUNDEX