問題
13主キーと外部キー制約を追加しよう
主キーとは、その値が表の行を一意的に識別する制約で、 外部キーは、親テーブルに存在しないデータを子テーブルが持つことが無いようにするための制約のことです。
SQLの問題に挑戦しよう!
問題
「主キーと外部キー制約を追加しよう」
費目テーブルの「ID」に主キー制約、家計簿テーブルの費目IDに外部キー制約を設定しましょう。
期待する画面
解答と解説(主キーと外部キー制約を追加しよう)
解説
※ご登録後トークルーム下部にあるメニュー内
「無料問題集※解答付き」を押すと
解答閲覧用URLが届きます
主キーは「行を一意に識別する」ための列を指します。
そのため今回主キーに該当するのは費目テーブルの「ID」となります。
家計簿テーブルの「費目ID」は参照するためのものである為、外部キーに該当します。
主キー制約(PRIMARY KEY)を設定するには、データ型の後に'PRIMARY KEY'を記述しましょう。
テーブルを作成していない場合はCREATE TABLE文に続けて記述しますが、今回はすでにあるテーブルのカラムに追加するのでCHANGEを使用して書きます。
CHANGEは「変更前のカラム 変更後のカラム名 カラムの型」という構文に従って書きましょう。
次に外部キー制約(FOREIGN KEY)の設定です。
外部キーを後から追加する場合、CHANGEでは対応できない為、ADDを使って追加しましょう。
追加する際の構文は「ALTER TABLE 子テーブル名 ADD FOREIGN KEY(子の列名) REFERENCES 親テーブル名(親の列名)」となります。
補足
主キー制約をかけることで、UNIQUE制約とNOT NULL制約の両方の役割「'NULL'も重複も許されない列」を満たします。
ただ単に「'NULL'も重複も許されない列」ではなく、主キーとしての役割が期待されているというセマンティクスを持ちます。