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

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」と表示されている点です。これは、このカラムが複合一意キーの一部であることを示しています。これで、指定した複数カラムの組み合わせが一意になる複合キーが正しく設定されました。

  1. MySQLデータベースのテーブルで複合主キーを識別する方法

    MySQLでテーブルに複合主キー(コンポジットプライマリーキー)が設定されているかどうかを確認したい場合、information_schema.KEY_COLUMN_USAGE テーブルに対して集計関数 COUNT(*) を使用する方法が便利です。クエリの結果が1より大きい値を返した場合、そのテーブルには複数のカラムから構成される複合主キーが設定されていることになります。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1324 -> ( -> StudentId int, ->

  2. MySQLで主キー(プライマリーキー)を削除する方法をわかりやすく解説

    MySQLでテーブルから主キー(プライマリーキー)を削除するには、ALTER TABLE文を使用します。DROP PRIMARY KEY句を組み合わせることで、既存の主キーを簡単に削除できます。 基本構文 ALTER TABLE テーブル名 DROP PRIMARY KEY; それでは、実際にサンプルテーブルを使って手順を確認していきましょう。 手順1:サンプルテーブルを作成する まず、主キーを持つテーブルを作成します。 mysql> CREATE TABLE DemoTable -> ( -> StudentId int NOT NULL, -