10月23日(金)2コマ目

今日、やったこと

制約

今日のホワイトボード

制約とは

テーブルに保存するデータを正しい状態に保つために、データ登録、変更、削除を行う際にチェックする仕組みが制約。
例えば、主キー列のデータは
  • 値が重複してはいけない
  • データは必ず必要
である。このルールをチェックするのが制約。

制約の設定方法

〇いつ設定する?

基本的にテーブル作成時に行う。

〇どうやって設定する

列制約構文と表制約構文の2種類ある。

[列制約構文]

列の定義と一緒に行う。
制約と制約対象列が1対1。

CREATE TABLE テーブル名 (
列名 データ型 constraint 制約名 制約内容,
列名 データ型 constraint 制約名 制約内容,
列名 データ型 constraint 制約名 制約内容,
);

「constraint 制約名」はオプション。制約名を設定したいとき利用。
図 列制約構文


[表制約構文]

列の定義後、制約の定義を行う。

CREATE TABLE テーブル名 (
列名 データ型,
列名 データ型,
列名 データ型,
constraint 制約名 制約内容,
constraint 制約名 制約内容,
constraint 制約名 制約内容
);

「constraint 制約名」はオプション。制約名を設定したいとき利用。

1制約で複数列を対象にできる。たとえば、複数列で主キーを構成する場合、制約と列が1対1な列制約構文では制約設定できないため、表制約構文を使う。
図 表制約構文

列制約構文と表制約構文

1つのCREATE TABLE文に列制約構文と表制約構文を混在させて制約設定することができる。
授業では、
  • 制約名付き制約は表制約構文
  • 制約名なし制約は列制約構文
で。

[例]商品マスタテーブル作成

CREATE TABLE 商品マスタ(
  ID  number(2),
  商品名  nvarchar2(16) NOT NULL,
  グループID number(2),
  価格 number(4),
  constraint pk_商品マスタ primary key(id),
  constraint chk_商品マスタ_価格 check(価格>=0 and 価格<=2000),
  constraint fk_商品マスタ_グループマスタ foreign key(グループid) references グループマスタ(id)
);

制約名

授業では以下の命名ルールで。
制約内容 命名規則
主キー制約 pk_テーブル名 pk_商品マスタ
ユニーク制約 unq_テーブル名_列名 unq_商品マスタ_商品名
チェック制約 chk_テーブル名_列名 chk_商品マスタ_価格
外部キー制約 fk_子テーブル名_親テーブル fk_商品マスタ_グループマスタ

コメント