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」表示から確認できる
-
MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説
MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon
-
Accessのテーブルで主キーを追加・削除する方法をわかりやすく解説
Microsoft Accessでテーブルを作成すると、Accessが自動的にデータベーステーブルへ主キーを作成してくれます。しかし、ユーザーが任意のフィールドを主キーとして指定することも可能です。 Accessにおける主キー(Primary Key)とは、テーブル全体を通じて一意の値を持つフィールド、またはフィールドの組み合わせのことです。主キーには以下のような特徴があります。 データベース内の各行を一意に識別できる 常に値が格納されており、空(Null)にならない 一度設定された値が変更されることはない Accessのテーブルで主キーを追加・削除する手順 Accessのデータベーステー