既存の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の追加はエラーになります。事前にデータを確認・修正しておきましょう。
- 複合主キーでは、各カラム単体での重複は許容されますが、組み合わせ全体としての一意性が保証されます。
-
MySQLで複数の列を持つテーブルに条件を作成する方法|IF()関数の使い方を解説
MySQLで条件分岐を実現するIF()関数とはMySQLで条件に応じて異なる値を返したい場合は、IF()関数を使用します。IF()関数は、指定した条件が真の場合と偽の場合で、それぞれ異なる値を返すことができる便利な関数です。IF()関数の基本構文IF(yourCondition, trueStatement, falseStatement);第1引数に条件式を指定し、条件が真(true)の場合は第2引数の値を、偽(false)の場合は第3引数の値を返します。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable612 (N
-
MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説
MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon