ConstraintsSQL
Check Constraint é usado para especificar um predicado que cada tuple deve satisfazer em uma determinada relação. Ela limita os valores que uma coluna pode conter em uma relação.
- O predicado na restrição de verificação pode conter uma subconsulta.
- A restrição de verificação definida em um atributo restringe o intervalo de valores para esse atributo.
- Se o valor sendo adicionado a um atributo de um tuple viola a restrição de verificação, a restrição de verificação é avaliada como falsa e a atualização correspondente é abortada.
- A restrição de verificação é geralmente especificada com o comando CREATE TABLE em 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: A restrição de verificação no comando SQL acima restringe o GENDER a pertencer apenas às categorias especificadas. Se um novo tuple é adicionado ou um tuple existente na relação é atualizado com um GENDER que não pertence a nenhuma das três categorias mencionadas, então a atualização do banco de dados correspondente é abortada.
Query
Constraint: Somente estudantes com idade >= 17 anos podem se matricular em uma universidade.
Esquema para banco de dados de estudantes na universidade:
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) );
Relação estudantil:
ID do estudante | Nome | Idade | Gênero |
---|---|---|---|
1001 | Ron | 18 | Male |
1002 | Sam | 17 | Male |
1003 | Geórgia | 17 | Feminino |
1004 | Erik | 19 | Desconhecido |
1005 | Cristina | 17 | Feminino |
Explicação: Na relação acima, a idade de todos os alunos é maior que 17 anos, de acordo com a restrição mencionada na declaração de verificação no esquema da relação. Se, entretanto, a seguinte instrução SQL for executada:
INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');
Não haverá nenhuma atualização do banco de dados e como a idade < 17 anos.
Diferentes opções para usar a restrição de verificação:
- Com alter: A restrição de verificação também pode ser adicionada a uma relação já criada usando a sintaxe:
alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
- Dando um nome de variável para a restrição de verificação:As restrições de verificação podem receber um nome de variável usando a sintaxe:
alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
- Retirar restrição de verificação: A restrição de verificação pode ser removida da relação no banco de dados do servidor SQL usando a sintaxe:
alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
- Restrição de verificação de gota: A restrição de verificação pode ser removida da relação no banco de dados no MySQL usando a sintaxe:
alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;
Este artigo é contribuído por Mayank Kumar. Se você gosta do GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar seu artigo por e-mail para [email protected]. Veja o seu artigo que aparece na página principal do GeeksforGeeks e ajude outros Geeks.
.