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

既存のMySQLテーブルの複数カラムにPRIMARY KEYを設定する方法

既存のテーブルの複数カラムにPRIMARY KEY制約を設定するには、ALTER TABLEステートメントとADDキーワードを組み合わせて使用します。これにより、単一カラムではなく、複数カラムから構成される「複合主キー(コンポジットプライマリキー)」を後から追加できます。

具体例

まず、次のような「Room_allotment」というテーブルがあるとします。

mysql> Create table Room_allotment(Id Int, Name Varchar(20), RoomNo Int);
Query OK, 0 rows affected (0.20 sec)

mysql> Describe Room_allotment;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Id     | int(11)     | YES  |     | NULL    |       |
| Name   | varchar(20) | YES  |     | NULL    |       |
| RoomNo | int(11)     | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.11 sec)

この時点では、どのカラムにも主キーが設定されていません。次に、「Id」カラムと「Name」カラムに対して複合PRIMARY KEYを追加するには、以下のクエリを実行します。

mysql> Alter Table Room_allotment ADD PRIMARY KEY(Id, Name);
Query OK, 0 rows affected (0.29 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> Describe Room_allotment;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Id     | int(11)     | NO   | PRI | 0       |       |
| Name   | varchar(20) | NO   | PRI |         |       |
| RoomNo | int(11)     | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.12 sec)

上記の結果セットを見ると、「Id」カラムと「Name」カラムのKey列が「PRI」と表示され、Null列が「NO」になっていることがわかります。これは、両方のカラムにPRIMARY KEYが正常に設定されたことを示しています。

補足ポイント

  • 複合主キーを設定すると、指定したすべてのカラムは自動的にNOT NULL制約を持つことになります。
  • 既存データにNULL値や重複した組み合わせが含まれている場合、PRIMARY KEYの追加はエラーになります。事前にデータを確認・修正しておきましょう。
  • 複合主キーでは、各カラム単体での重複は許容されますが、組み合わせ全体としての一意性が保証されます。
  1. MySQLで複数の列を持つテーブルに条件を作成する方法|IF()関数の使い方を解説

    MySQLで条件分岐を実現するIF()関数とはMySQLで条件に応じて異なる値を返したい場合は、IF()関数を使用します。IF()関数は、指定した条件が真の場合と偽の場合で、それぞれ異なる値を返すことができる便利な関数です。IF()関数の基本構文IF(yourCondition, trueStatement, falseStatement);第1引数に条件式を指定し、条件が真(true)の場合は第2引数の値を、偽(false)の場合は第3引数の値を返します。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable612 (N

  2. MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説

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