ログイン
問題13

主キーと外部キー制約を追加しよう

主キーとは、その値が表の行を一意的に識別する制約で、 外部キーは、親テーブルに存在しないデータを子テーブルが持つことが無いようにするための制約のことです。

アイコン画像

問題13:主キーと外部キー制約を追加しよう

費目テーブルの「ID」に主キー制約、家計簿テーブルの費目IDに外部キー制約を設定しましょう。

ブラウザのアイコン期待する画面

解答の見本画像

タグアイコン解答ソースコード

              USE ninjacode;
ALTER TABLE 費目 CHANGE ID ID INT PRIMARY KEY;
ALTER TABLE 家計簿 ADD FOREIGN KEY(費目ID) REFERENCES 費目(ID);
¥SQL¥
            

コメントのアイコン解説

主キーは「行を一意に識別する」ための列を指します。
そのため今回主キーに該当するのは費目テーブルの「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'も重複も許されない列」ではなく、主キーとしての役割が期待されているというセマンティクスを持ちます。
SQLを学ぶなら現役エンジニア監修「甲賀コース」
キャンペーン

閉じる