Contraintes SQL
La contrainte de contrôle est utilisée pour spécifier un prédicat que chaque tuple doit satisfaire dans une relation donnée. Elle limite les valeurs qu’une colonne peut contenir dans une relation.

  • Le prédicat dans la contrainte de contrôle peut contenir une sous-requête.
  • La contrainte de contrôle définie sur un attribut restreint la plage de valeurs pour cet attribut.
  • Si la valeur ajoutée à un attribut d’un tuple viole la contrainte de contrôle, celle-ci est évaluée à faux et la mise à jour correspondante est abandonnée.
  • La contrainte de contrôle est généralement spécifiée avec la commande CREATE TABLE en SQL.

Syntaxe:

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 : La contrainte de contrôle dans la commande SQL ci-dessus restreint le GENRE à appartenir uniquement aux catégories spécifiées. Si un nouveau tuple est ajouté ou si un tuple existant dans la relation est mis à jour avec un GENDER qui n’appartient à aucune des trois catégories mentionnées, alors la mise à jour de la base de données correspondante est interrompue.

Query

Constraint : Seuls les étudiants dont l’âge >= 17 sont peuvent s’inscrire dans une université.
Schéma de la base de données des étudiants dans une université :

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) );

Relation étudiant :

.

StudentID Nom Age Genre
1001 Ron 18 Mâle
1002 Sam 17 Mâle
1003 Georgia 17 Femme
1004 Erik 19 Inconnu
1005 Christine 17 Femme

Explication : Dans la relation ci-dessus, l’âge de tous les étudiants est supérieur ou égal à 17 ans, selon la contrainte mentionnée dans l’instruction de contrôle dans le schéma de la relation. Si, cependant, l’instruction SQL suivante est exécutée :

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

Il n’y aura pas de mise à jour de la base de données et comme l’âge < 17 ans.

Différentes options pour utiliser la contrainte de contrôle :

  • Avec alter : La contrainte de contrôle peut également être ajoutée à une relation déjà créée en utilisant la syntaxe :
    alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
  • Donner un nom de variable à la contrainte de contrôle :Les contraintes de contrôle peuvent recevoir un nom de variable en utilisant la syntaxe :
    alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
  • Supprimer la contrainte de contrôle : La contrainte de contrôle peut être supprimée de la relation dans la base de données à partir du serveur SQL en utilisant la syntaxe:
    alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
  • Supprimer la contrainte de contrôle : La contrainte de contrôle peut être supprimée de la relation dans la base de données de MySQL en utilisant la syntaxe :
    alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;

Cet article a été rédigé par Mayank Kumar. Si vous aimez GeeksforGeeks et souhaitez contribuer, vous pouvez également écrire un article en utilisant contribute.geeksforgeeks.org ou envoyer votre article par courrier à [email protected]. Voyez votre article apparaître sur la page principale de GeeksforGeeks et aidez d’autres Geeks.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.