SQL Constraints
Check Constraintは、与えられた関係においてすべてのタプルが満たすべき述語を指定するために使用されます。

  • 属性に定義されたチェック制約は、その属性の値の範囲を制限します。
  • タプルの属性に追加される値がチェック制約に違反すると、チェック制約は偽と評価され、対応する更新が中止されます。
  • チェック制約は、一般に SQL の CREATE TABLE コマンドで指定します。
  • 構文:

    CREATE TABLE pets( ID INT NOT NULL, Name VARCHAR(30) NOT NULL, Breed VARCHAR(20) NOT NULL, Age INT, GENDER VARCHAR(9), PRIMARY KEY(ID), check(GENDER in ('Male', 'Female', 'Unknown')) );

    注意:上記の SQL コマンドのチェック制約では、GENDER が指定したカテゴリにのみ属するよう制限しています。 新しいタプルが追加された場合、またはリレーション内の既存のタプルが、前述の 3 つのカテゴリのいずれにも属さない GENDER で更新された場合、対応するデータベース更新が中止されます。

    Query

    Constraint: 年齢>=17の学生だけが大学に登録できます。
    Schema for student database in university:

    CREATE TABLE student( StudentID INT NOT NULL, Name VARCHAR(30) NOT NULL, Age INT NOT NULL, GENDER VARCHAR(9), PRIMARY KEY(ID), check(Age >= 17) );

    Student relation.学生データベースのスキーマ。

    StudentID Name Age Gender
    1001 Ron 18 男性
    1002 Sam 17 男性
    1003 Georgia 17 Female
    1004 Erik 19 不明
    1005 クリスティン 17 女性

    解説です。 上記の関係では、関係のスキーマのチェックステートメントに記載されている制約によると、すべての学生の年齢は17歳以上である。 しかし、次のSQL文が実行された場合:

    INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');

    データベース更新はありませんし、年齢< 17年として。

    チェック制約を使用する別のオプション:

    • alterと一緒に。 チェック制約は、構文を使用して、すでに作成された関係に追加することもできます:
      alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
    • チェック制約に変数名を与える:チェック制約は、構文を使用して変数名を与えることができます:
      alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
    • チェック制約を削除します。 チェック制約は、
      alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
    • チェック制約を削除する構文を使用して、SQLサーバーからデータベース内の関係から削除することができます。
      alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;

    この記事はMayank Kumarによって寄稿されました。 GeeksforGeeks が好きで貢献したい場合は、contribute.geeksforgeeks.org を使用して記事を書くか、[email protected] に記事を郵送することもできます。 あなたの記事が GeeksforGeeks のメインページに掲載され、他の Geeks を助けることができます

    コメントを残す

    メールアドレスが公開されることはありません。