SQL Server の制約
SQL Server の制約とは?
制約とは、テーブル内のデータに対するルールのようなもので、制約に沿わないデータを保存しようとした場合は SQL Server がエラーを出します。
テーブル内のデータを、期待通りの正しい状態に保つためには、いろいろな方法があります。
データベースをただの入れ物のようにつかって、クライアントプログラムで制御する方法もあると思います。
私の意見としては、データベースにつけられる制約はできるだけつけるべきだと、強く思っています。
制約がきちんとついていると、間違ったデータを保存しようとしたり、削除しようとしたりした時にエラーにしてくれます。
そのエラーは、クライアントプログラム側でバリデーションを忘れていた際などにも、気づきになりますし、保存できたデータは制約に沿った信頼できるものです。
また、制約はクエリーオプティマイザーによって実行プランを生成する際にも使われるので、パフォーマンスの向上にもつながります。
SQL Server の制約の種類
SQL Server の制約には次のようなものがあります。
NOT NULL 制約
カラムに NULL が入らないように制限します。
UNIQUE 制約
カラムの値が一意になるように制限します。
CHECK 制約
カラムの値が、指定した条件で True となるように制限します。
PRIMARY KEY 制約
テーブル内の行を特定するために使われる制約で、各テーブルでひとつだけ指定できます。 NOT NULL で UNIQUE でなくてはいけません。 こちらでも説明しています -> 「SQL Server のプライマリーキー(主キー)とは?」
FOREIGN KEY 制約
制約を定義したカラムに、別テーブルの UNIQUE なカラム(通常はプライマリーキー)に存在する値のみが保存できるように制限します。
DEFAULT 制約
データ挿入時に値が指定されなかった場合に、DEFAULT 制約で指定した値が入ります。
それでは、実際に制約を生成してみましょう。