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

MySQLのALTER TABLE文で複合主キーを追加する方法

MySQLで複合主キーを追加するには

MySQLで既存のテーブルに複合主キー(コンポジットプライマリーキー)を追加したい場合は、ALTER TABLE文を使用します。複合主キーとは、2つ以上のカラムを組み合わせて1つの主キーとして定義するもので、組み合わせ全体がテーブル内で一意になるように制約をかけられるのが特徴です。

ここでは、実際にサンプルテーブルを作成し、複合主キーを追加する手順を順番に解説していきます。

1. デモ用テーブルを作成する

まずは練習用に、以下のクエリでテーブルを作成しましょう。

mysql> create table CompositePrimaryKey
   -> (
   -> Id int,
   -> StudentName varchar(100),
   -> Age int
   -> );
Query OK, 0 rows affected (0.56 sec)

この時点では、まだ複合主キーは設定されていません。次に、その状態を確認してみます。

2. DESCコマンドでテーブル構造を確認する

DESCコマンド(DESCRIBEの省略形)を実行すると、テーブルの構造を確認できます。

mysql> desc CompositePrimaryKey;

実行結果は以下の通りです。

+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| Id          | int(11)      | YES  |     | NULL    |       |
| StudentName | varchar(100) | YES  |     | NULL    |       |
| Age         | int(11)      | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
3 rows in set (0.09 sec)

上記の出力結果を見ると、Key列に「PRI」という表示がありません。これは主キーが一切設定されていないことを意味します。

3. ALTER TABLE文で複合主キーを追加する

それでは、ALTER TABLE文を使って複合主キーを追加しましょう。クエリは以下のようになります。

mysql>  ALTER table CompositePrimaryKey add primary key(Id,StudentName);
Query OK, 0 rows affected (1.26 sec)
Records: 0  Duplicates: 0  Warnings: 0

このクエリでは、「Id」カラムと「StudentName」カラムの2つを組み合わせて、複合主キーとして設定しています。これにより、この2つのカラム値の組み合わせがテーブル内で必ず一意になることが保証されます。

4. 追加結果を確認する

複合主キーが正しく設定されたかどうかを、再度DESCコマンドで確認してみましょう。

mysql> DESC CompositePrimaryKey;

実行結果は以下の通りです。

+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| Id          | int(11)      | NO   | PRI | NULL    |       |
| StudentName | varchar(100) | NO   | PRI | NULL    |       |
| Age         | int(11)      | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

出力結果を見ると、IdカラムとStudentNameカラムのKey列に「PRI」と表示されています。これは複合主キーの設定が正常に完了したことを示しています。

また、注目すべき点として、主キーに指定された2つのカラムのNull列が「NO」に変わっている点にも注目してください。主キーにはNULL値が許されないため、ALTER TABLE文で主キーを追加した際に、自動的にNOT NULL制約も適用されるのです。

まとめ

  • 既存のテーブルに複合主キーを追加するには、ALTER TABLE テーブル名 ADD PRIMARY KEY(カラム1, カラム2)という構文を使用する
  • 複数カラムをカンマ区切りで指定することで、それらの組み合わせに対して一意性制約がかかる
  • 主キーを追加すると、該当カラムには自動的にNOT NULL制約が適用される
  • 設定結果はDESCコマンドでKey列の「PRI」表示から確認できる
  1. MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説

    MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon

  2. Accessのテーブルで主キーを追加・削除する方法をわかりやすく解説

    Microsoft Accessでテーブルを作成すると、Accessが自動的にデータベーステーブルへ主キーを作成してくれます。しかし、ユーザーが任意のフィールドを主キーとして指定することも可能です。 Accessにおける主キー(Primary Key)とは、テーブル全体を通じて一意の値を持つフィールド、またはフィールドの組み合わせのことです。主キーには以下のような特徴があります。 データベース内の各行を一意に識別できる 常に値が格納されており、空(Null)にならない 一度設定された値が変更されることはない Accessのテーブルで主キーを追加・削除する手順 Accessのデータベーステー