MySQLで主キー以外のINTカラムにAUTO_INCREMENTを設定し、1000から連番を開始する方法
MySQLでは、主キーとは別のINT型カラムにAUTO_INCREMENTを設定し、その開始値を1000にすることも可能です。やり方はシンプルで、通常どおりテーブルを作成した後、ALTER TABLE文で開始値を変更するだけです。ただし、AUTO_INCREMENTカラムには必ずインデックスが必要という重要なルールがあるため、注意しましょう。
1. テーブルを作成する
以下の例では、主キーのStudentIdとは別に、AUTO_INCREMENTを設定したStudentStartIdカラムを定義しています。AUTO_INCREMENTカラムにはインデックスが必須のため、INDEX(StudentStartId)を指定している点がポイントです。
mysql> create table DemoTable639 (
StudentId int PRIMARY KEY,
StudentStartId int AUTO_INCREMENT,
StudentName VARCHAR(50),
INDEX(StudentStartId)
);
Query OK, 0 rows affected (0.86 sec)
2. AUTO_INCREMENTの開始値を1000に設定する
続いて、ALTER TABLE文を実行して、AUTO_INCREMENTの開始値を1000に変更します。
mysql> alter table DemoTable639 AUTO_INCREMENT = 1000;
Query OK, 0 rows affected (0.28 sec)
Records: 0 Duplicates: 0 Warnings: 0
3. レコードを挿入する
INSERT文でデータを登録します。AUTO_INCREMENTが設定されたStudentStartIdカラムには値を指定する必要はなく、他のカラムだけを指定すれば連番が自動的に採番されます。
mysql> insert into DemoTable639(StudentId,StudentName) values(1,'John');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable639(StudentId,StudentName) values(2,'Chris');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable639(StudentId,StudentName) values(3,'Robert');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable639(StudentId,StudentName) values(4,'David');
Query OK, 1 row affected (0.16 sec)
4. 実行結果を確認する
SELECT文で全レコードを表示して確認してみましょう。
mysql> select *from DemoTable639;
実行結果は以下のとおりです。StudentStartIdに1000から始まる連番(1000、1001、1002、1003…)が自動的に割り振られていることがわかります。
+-----------+----------------+-------------+
| StudentId | StudentStartId | StudentName |
+-----------+----------------+-------------+
| 1 | 1000 | John |
| 2 | 1001 | Chris |
| 3 | 1002 | Robert |
| 4 | 1003 | David |
+-----------+----------------+-------------+
4 rows in set (0.00 sec)
まとめと注意点
- MySQLでAUTO_INCREMENTを設定できるカラムは、テーブルごとに1つだけです。
- AUTO_INCREMENTカラムにはインデックス(PRIMARY KEYまたは通常のINDEX)が必須です。本例のように主キーが別に存在する場合は、
INDEX(StudentStartId)のように通常のインデックスを付与します。 - 開始値の変更は
ALTER TABLE テーブル名 AUTO_INCREMENT = 1000;で行えます。既存データの最大値より小さい値を指定した場合、ストレージエンジンによっては自動的に最大値+1へ調整される点に注意してください。
-
MySQLでインデックス付きのテーブルを作成する方法を徹底解説
MySQLでは、テーブル作成後にCREATE INDEX文を使うことで、特定のカラムに対してインデックスを追加できます。検索速度の向上やデータ整合性の確保において、インデックスは非常に重要な役割を果たします。この記事では、基本的な構文から実際の実行例まで、順を追ってわかりやすく解説します。インデックス付きテーブルを作成する基本構文まずテーブルを作成し、その後CREATE INDEX文でインデックスを追加します。基本の構文は以下のとおりです。create table yourTableName ( yourColumnName1 dataType, yourColumnName2 dataTyp
-
MySQLで主キー(プライマリーキー)を削除する方法をわかりやすく解説
MySQLでテーブルから主キー(プライマリーキー)を削除するには、ALTER TABLE文を使用します。DROP PRIMARY KEY句を組み合わせることで、既存の主キーを簡単に削除できます。 基本構文 ALTER TABLE テーブル名 DROP PRIMARY KEY; それでは、実際にサンプルテーブルを使って手順を確認していきましょう。 手順1:サンプルテーブルを作成する まず、主キーを持つテーブルを作成します。 mysql> CREATE TABLE DemoTable -> ( -> StudentId int NOT NULL, -