SQL Constraints
Check Constraintは、与えられた関係においてすべてのタプルが満たすべき述語を指定するために使用されます。
構文:
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 を助けることができます
。