SQL Constraints
Check Constraint wordt gebruikt om een predicaat op te geven waaraan elke tuple in een gegeven relatie moet voldoen. Het beperkt de waarden die een kolom kan bevatten in een relatie.
- Het predicaat in check constraint kan een sub query bevatten.
- Check constraint gedefinieerd op een attribuut beperkt het bereik van waarden voor dat attribuut.
- Als de waarde die wordt toegevoegd aan een attribuut van een tuple de check constraint schendt, wordt de check constraint geëvalueerd op false en de corresponderende update wordt afgebroken.
- De controlebeperking wordt in het algemeen gespecificeerd met de opdracht CREATE TABLE in SQL.
Syntax:
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')) );
Note: De controlebeperking in de bovenstaande SQL-opdracht beperkt het GENDER tot alleen de gespecificeerde categorieën. Als een nieuwe tuple wordt toegevoegd of een bestaande tuple in de relatie wordt bijgewerkt met een GENDER die niet tot een van de drie genoemde categorieën behoort, dan wordt de overeenkomstige database-update afgebroken.
Query
Constraint: Alleen studenten met leeftijd >= 17 kunnen zich inschrijven aan een universiteit.
Schema voor studentendatabase in universiteit:
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) );
Studentrelatie:
StudentID | Naam | Leeftijd | Geslacht |
---|---|---|---|
1001 | Ron | 18 | Mannelijk |
1002 | Sam | 17 | Mannelijk |
1003 | Georgia | 17 | Female |
1004 | Erik | 19 | Onbekend |
1005 | Christine | 17 | Vrouwelijk |
Uitleg: In de bovenstaande relatie is de leeftijd van alle studenten groter dan gelijk aan 17 jaar, volgens de constraint die in de check statement in het schema van de relatie staat. Als echter de volgende SQL-instructie wordt uitgevoerd:
INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');
Er zal geen database-update plaatsvinden en als de leeftijd < 17 jaar.
Verschillende opties om Check constraint te gebruiken:
- Met alter: Check constraint kan ook aan een reeds aangemaakte relatie worden toegevoegd met de syntax:
alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
- Variabele naam geven aan check constraint:Check constraints kunnen een variabele naam krijgen met de syntax:
alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
- Check constraint verwijderen: Check constraint kan worden verwijderd uit de relatie in de database van SQL server met behulp van de syntaxis:
alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
- Drop check constraint: Check constraint kan worden verwijderd uit de relatie in de database in MySQL met behulp van de syntaxis:
alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;
Dit artikel is bijgedragen door Mayank Kumar. Als je GeeksforGeeks leuk vindt en een bijdrage wilt leveren, kun je ook een artikel schrijven via contribute.geeksforgeeks.org of mail je artikel naar [email protected]. Zie je artikel verschijnen op de GeeksforGeeks hoofdpagina en help andere Geeks.