C050 デフォルト制約・NOT NULL制約・ユニーク制約・チェック制約

テーブルを作成するときにカラムに保存できるデータの制約をつける場合が多くあります。今回は主な制約について4つ紹介します。

主要な制約の種類

デフォルト制約

カラムのデータ型のあとに DEFAULT 定数 と記述することでカラムにデフォルトの値を設定できます。デフォルト値が設定されているカラムに値が指定されなかった時にデフォルト値に設定された定数が格納されます。

下記のように記載することで、num1のデフォルト値として10が格納されます。

SQL
CREATE TABLE test
  (
    num1 int default 10
  );

NOT NULL制約

カラムに NOT NULL 制約を設定することでカラムに格納する値として NULLの格納を禁止することができます。データとして何かしらを保存させたい際に用います。

下記のように記載することで、nameカラムにNULLとして保存することはできなくなります。

SQL
create table test
  (
    name text not null  
  );

ユニーク制約

テーブルを作成するときにカラムに ユニーク制約をつけることでカラムに重複した値を格納することをできなくすることができます。カラムに対して同じ値を保存させたくない際に用います。

下記のように記載することで、num1カラムに同一数値は保存することはできなくなります。

SQL
create table test
  (
    num1 int UNIQUE
  );

チェック制約

データを追加する時に値が指定した条件を満たしているかどうかのチェックをすることができます。特定の条件を満たしているデータのみを保存したい場合に用います。

下記のように記載することで、num1カラムに10以上の数値は保存することはできなくなります

SQL
create table test
  (
    num1 int CHECK(num1 < 10)
  );

例題

ユニーク制約の説明として正しいものは下記のうちどれか

  1. カラムに重複した値を格納することをできなくする制約
  2. 特定の条件を満たしているデータのみを保存できる様にする制約
  3. カラムに値が指定されなかった時に自動で値が入る様にする制約
  4. NULL を禁止するための制約
回答

1. カラムに重複した値を格納することをできなくする制約
2はチェック制約、3はデフォルト制約、4はNOT NULL制約

---