10月30日(木)3コマ目
今日、やったこと
- チェック制約
- 参照整合制約(外部キー制約)
今日のホワイトボード
チェック制約(列制約構文)
チェック制約とは、条件を満たすデータ以外は登録させないための制約。
キーワードcheckにつづく( )内に条件を書く。
条件はwhere句と同じ。
![]() |
| 図 チェック制約(列制約構文) |
実際のSQLは以下のとおり。
①商品マスタテーブル作成
列制約構文で、価格列にチェック制約を設定。
![]() |
| 図 商品マスタテーブル作成 |
②商品マスタテーブルにデータ登録(正常系)
問題なく登録できる。
![]() |
| 図 正常なデータを登録 => 登録できる |
③商品マスタテーブルにデータ登録(異常系)
チェック制約に引っかかるデータを登録。
エラーになり、登録できない。
![]() |
| 図 異常なデータを登録 => エラー発生 => 登録できない |
実際のSQLは以下のとおり。
①商品マスタテーブル作成
表制約構文で、価格列にチェック制約を設定。
![]() |
| 図 商品マスタテーブル作成(表制約構文) |
②商品マスタテーブルにデータ登録(正常系)
問題なく登録できる。
![]() |
| 図 正常なデータを登録 => 登録できる |
③商品マスタテーブルにデータ登録(異常系)
チェック制約に引っかかるデータを登録。
エラーになり、登録できない。
![]() |
| 図 異常なデータを登録 => エラー発生 => 登録できない |
参照整合制約(外部キー制約)
今までの制約は1つのテーブル内で完結したが、参照整合制約は
- 参照する側のテーブル(子テーブル)
- 参照される側のテーブル(親テーブル)
の両方をチェックする。
なお、参照される側(親テーブル)は主キー列が参照される。
参照する側(子テーブル)の別テーブルの主キーを参照する列を 外部キー と呼ぶ。
参照される側(親テーブル)として、グループマスタテーブルを作成、データを登録。
![]() |
| 図 グループマスタテーブル(親テーブル)作成 |
![]() |
| 図 グループマスタテーブルにデータ登録 |
参照整合制約(列制約構文)
キーワード references のあとに 参照先テーブル名( 列名 ) を指定。
![]() |
| 図 参照整合制約(列制約構文) |
実際のSQLは以下のとおり。
①商品マスタテーブル
列制約構文で、グループID列に 参照整合制約を設定。
なお、参照先は グループマスタテーブルのID列。
![]() |
| 図 商品マスタテーブル作成(列制約構文) |
②商品マスタテーブルにデータ登録(正常系)
問題なく登録できる。
![]() |
| 図 商品マスタテーブルに正常なデータ登録 => 登録できる |
③参照整合制約に違反する操作
商品マスタテーブルのグループID列に参照先にはない"4"を登録 => エラー発生
グループマスタテーブルの行を削除 => エラー発生
![]() |
| 図 参照整合制約に違反する操作 |
参照整合制約(表制約構文)
キーワード foreign key の( )内に外部キー列(別テーブルの主キー列を参照する列)を指定。キーワード references のあとに参照先テーブル名( 列名 )を指定。
![]() |
| 図 参照整合制約(表制約構文) |
実際のSQLは以下のとおり。
①商品マスタテーブル
表制約構文で、グループID列に 参照整合制約を設定。
外部キー列は グループID列。 => キーワード foreign key
参照先は グループマスタテーブルのID列。 => キーワード references
![]() |
| 図 商品マスタテーブル作成(表制約構文) |
練習問題をやってもらいます。

















