【MySQL】テーブルの主キーを自動インクリメント(AUTO_INCREMENT)に設定する方法
MySQLのテーブルで主キー(プライマリーキー)を自動インクリメント(自動採番)に設定するには、AUTO_INCREMENT 属性を使用します。以下が基本の構文です。
CREATE TABLE yourTableName
(
yourColumnName INT(6) ZEROFILL NOT NULL AUTO_INCREMENT,
PRIMARY KEY(yourColumnName)
);
AUTO_INCREMENT を指定したカラムには、レコードを挿入するたびに自動的に1ずつ増加する連番が割り当てられます。この属性は整数型のカラムにのみ使用可能で、通常は PRIMARY KEY 制約と組み合わせて利用します。
実際にテーブルを作成してみよう
まず、主キーに自動インクリメントを設定したテーブルを作成します。
mysql> CREATE TABLE DemoTable
(
UserId INT(6) ZEROFILL NOT NULL AUTO_INCREMENT,
PRIMARY KEY(UserId)
);
Query OK, 0 rows affected (0.81 sec)
ここでは ZEROFILL を指定しているため、6桁に満たない数値は先頭が0で埋められて表示されます。
レコードの挿入
次に、INSERTコマンドを使ってテーブルにレコードを挿入します。UserId の値を明示的に指定しなくても、自動的に採番されます。
mysql> INSERT INTO DemoTable values(); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO DemoTable values(); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO DemoTable values(); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO DemoTable values(); Query OK, 1 row affected (0.44 sec)
レコードの確認
SELECT文ですべてのレコードを表示して確認しましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+--------+ | UserId | +--------+ | 000001 | | 000002 | | 000003 | | 000004 | +--------+ 4 rows in set (0.00 sec)
このように、値を明示的に指定しなくても、UserId カラムに「000001」「000002」「000003」…という連番が自動的に振られていることがわかります。
補足:ZEROFILLと表示幅について
ZEROFILL は表示幅を固定し、足りない桁を0で埋めるための属性です。IDを見やすく整えられるメリットがある一方で、MySQL 8.0.17 以降では整数型の表示幅指定および ZEROFILL は非推奨(deprecated)となっています。そのため、新規のプロジェクトでは次のようにシンプルに記述することをおすすめします。
CREATE TABLE DemoTable
(
UserId INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(UserId)
);
AUTO_INCREMENT を活用すれば、ユーザーIDや注文番号などの一意な連番管理を手軽に実現できます。ぜひ実際の開発でも活用してみてください。
-
MySQLでテーブルのデータを削除した後にAUTO_INCREMENTを1から再開させる方法
MySQLでデータ削除後にAUTO_INCREMENTを1に戻す方法MySQLでは、DELETE文でレコードを削除してもAUTO_INCREMENTの値はリセットされず、次に挿入されるレコードには続きの番号が割り当てられます。自動インクリメントの値を1に戻したい場合は、TRUNCATE TABLEコマンドを使用します。本記事では、実際のSQL例を使ってその動作を確認していきます。検証用テーブルの作成まず、テーブルを作成します。mysql> create table DemoTable1796 ( StudentId int NOT NULL AUTO_INCREMENT
-
MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説
MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon