データベースのチェック制約の書き方はどうするのですか?
データベースでは、CHECK制約を使用して列の値を制限することができます。CHECK制約は条件を定義し、行を挿入または更新する際にその条件を満たす必要があります。
CHECK制約の構文は以下の通りです。
CREATE TABLE table_name (
column_name data_type CONSTRAINT constraint_name CHECK (condition)
);
table_nameはテーブル名、column_nameは列名、data_typeは列のデータ型、constraint_nameは制約の名前、conditionは制約を満たす条件です。
以下はいくつかの例です:
- 値は0以上でなければなりません。
CREATE TABLE employees (
id INT,
salary DECIMAL CONSTRAINT check_salary CHECK (salary > 0)
);
- 指定された範囲内であることを制約する。
CREATE TABLE students (
id INT,
age INT CONSTRAINT check_age CHECK (age >= 18 AND age <= 25)
);
- 値は、規定された正規表現に従う必要があります。
CREATE TABLE emails (
id INT,
email VARCHAR(255) CONSTRAINT check_email CHECK (email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')
);
- 他の列との関係を満たすように、制約付き列の値を設定する必要があります。
CREATE TABLE orders (
id INT,
total_amount DECIMAL,
discount DECIMAL CONSTRAINT check_discount CHECK (discount >= 0 AND discount <= total_amount)
);
上記は一般的なCHECK制約の例です。具体的な要件に応じて、さらにカスタマイズした制約条件を定義することができます。