MySQLで一意な複合キー(ユニーク制約)を作成する方法【ADD UNIQUEの使い方】
MySQLで複数のカラムを組み合わせて一意(ユニーク)な複合キーを作成するには、ADD UNIQUEコマンドを使用します。複合一意キーを設定すると、指定した複数のカラムの値の組み合わせがテーブル内で重複しないことが保証されます。
基本構文
ALTER TABLE テーブル名
ADD UNIQUE 一意キー名(カラム名1, カラム名2, ......N);
サンプルテーブルの作成
まずは例として、学生情報を管理するテーブルを作成しましょう。以下のクエリを実行します。
mysql> create table makeCompositeKeyDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(40),
-> StudentAge int,
-> StudentGrade char(1)
-> );
Query OK, 0 rows affected (2.34 sec)
テーブル構造の確認
DESCコマンドを使用して、テーブルの構造を確認してみましょう。
mysql> desc makeCompositeKeyDemo;
実行すると、次のような出力が得られます。
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| StudentName | varchar(40) | YES | | NULL | |
| StudentAge | int(11) | YES | | NULL | |
| StudentGrade | char(1) | YES | | NULL | |
+--------------+-------------+------+-----+---------+----------------+
4 rows in set (1.65 sec)
現時点では、主キー(PRI)としてIdカラムのみが設定されていることがわかります。
複合一意キーの追加
続いて、3つのカラムを組み合わせた一意な複合キーを追加します。以下のクエリを実行してください。
mysql> alter table makeCompositeKeyDemo add unique
Name_Age_Grade( StudentName,StudentAge,StudentGrade);
Query OK, 0 rows affected (0.69 sec)
Records: 0 Duplicates: 0 Warnings: 0
この例では、「StudentName(学生名)」「StudentAge(年齢)」「StudentGrade(学年)」の3つのカラムの組み合わせに対して一意性が適用されます。つまり、これら3つの値がすべて同一のレコードを二重に登録しようとすると、エラーが発生して登録できなくなります。
追加後のテーブル構造の確認
もう一度DESCコマンドでテーブル構造を確認しましょう。
mysql> desc makeCompositeKeyDemo;
実行結果:
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| StudentName | varchar(40) | YES | MUL | NULL | |
| StudentAge | int(11) | YES | | NULL | |
| StudentGrade | char(1) | YES | | NULL | |
+--------------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
注目すべきは、StudentNameカラムのKey列に「MUL」と表示されている点です。これは、このカラムが複合一意キーの一部であることを示しています。これで、指定した複数カラムの組み合わせが一意になる複合キーが正しく設定されました。
-
MySQLデータベースのテーブルで複合主キーを識別する方法
MySQLでテーブルに複合主キー(コンポジットプライマリーキー)が設定されているかどうかを確認したい場合、information_schema.KEY_COLUMN_USAGE テーブルに対して集計関数 COUNT(*) を使用する方法が便利です。クエリの結果が1より大きい値を返した場合、そのテーブルには複数のカラムから構成される複合主キーが設定されていることになります。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1324 -> ( -> StudentId int, ->
-
MySQLで主キー(プライマリーキー)を削除する方法をわかりやすく解説
MySQLでテーブルから主キー(プライマリーキー)を削除するには、ALTER TABLE文を使用します。DROP PRIMARY KEY句を組み合わせることで、既存の主キーを簡単に削除できます。 基本構文 ALTER TABLE テーブル名 DROP PRIMARY KEY; それでは、実際にサンプルテーブルを使って手順を確認していきましょう。 手順1:サンプルテーブルを作成する まず、主キーを持つテーブルを作成します。 mysql> CREATE TABLE DemoTable -> ( -> StudentId int NOT NULL, -