SQL Constraints
Check Constraint jest używany do określenia predykatu, który musi spełniać każda krotka w danej relacji. Ogranicza wartości, które kolumna może posiadać w relacji.
- Predykat w ograniczeniu sprawdzającym może zawierać podzapytanie.
- Konwencja sprawdzająca zdefiniowana na atrybucie ogranicza zakres wartości dla tego atrybutu.
- Jeśli wartość dodawana do atrybutu krotki narusza ograniczenie sprawdzające, ograniczenie sprawdzające przyjmuje wartość false i odpowiednia aktualizacja zostaje przerwana.
- Konstrykcja sprawdzająca jest zazwyczaj określana za pomocą polecenia CREATE TABLE w SQL.
Syntaktyka:
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')) );
Uwaga: Ograniczenie sprawdzające w powyższym poleceniu SQL ogranicza GENDER do przynależności tylko do określonych kategorii. Jeśli nowa krotka zostanie dodana lub istniejąca krotka w relacji zostanie zaktualizowana o GENDER, który nie należy do żadnej z trzech wymienionych kategorii, wtedy odpowiednia aktualizacja bazy danych zostanie przerwana.
Query
Constraint: Tylko studenci w wieku >= 17 lat mogą zapisać się na studia.
Schemat dla bazy danych studentów w uczelni:
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) );
Relacja student:
StudentID | Name | Age | Gender |
---|---|---|---|
1001 | Ron | 18 | Mężczyzna |
1002 | Sam | 17 | Mężczyzna |
1003 | Georgia | 17 | Kobieta |
1004 | Erik | 19 | Nieznany |
1005 | Krystyna | 17 | Kobieta |
Wyjaśnienie: W powyższej relacji, wiek wszystkich studentów jest większy niż równy 17 lat, zgodnie z ograniczeniem wymienionym w instrukcji check w schemacie relacji. Jeśli jednak zostanie wykonana następująca instrukcja SQL:
INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');
Nie będzie żadnej aktualizacji bazy danych i jako wiek < 17 lat.
Różne opcje użycia ograniczenia sprawdzającego:
- Z alter: Check constraint można również dodać do już utworzonej relacji używając składni:
alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
- Nadawanie zmiennej nazwy check constraint:Check constraint można nadać zmienną nazwę używając składni:
alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
- Remove check constraint: Check constraint może zostać usunięty z relacji w bazie danych z serwera SQL za pomocą składni:
alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
- Drop check constraint: Ograniczenie może zostać usunięte z relacji w bazie danych MySQL za pomocą składni:
alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;
Ten artykuł został napisany przez Mayank Kumar. Jeśli podoba Ci się GeeksforGeeks i chciałbyś się do niego przyczynić, możesz również napisać artykuł używając contribute.geeksforgeeks.org lub wysłać swój artykuł na adres [email protected]. Zobacz, jak twój artykuł pojawia się na stronie głównej GeeksforGeeks i pomóż innym Geekom.