Les contraintes permettent d'indiquer les valeurs permises au sein des colonnes d'une table afin d'obtenir des caractéristiques spécifiques comme l'acceptation de valeurs nulles ou non-nulles, l'interdiction des doublons ainsi que l'affectation de clés primaire et étrangère.
Les ContraintesNom_Champ Type_Donnée Contrainte
| Contrainte |
|---|
| Description |
| Définition_Champ NULL |
| indique que le champ peut accepter des valeurs nulles. |
| Définition_Champ NOT NULL |
| indique que le champ n'accepte pas de valeurs nulles. |
| Définition_Champ UNIQUE |
| indique que les valeurs du champ ne peuvent comporter de doublons. |
| Définition_Champ PRIMARY KEY
CONSTRAINT Nom_Contrainte PRIMARY KEY ( Champ[s] ) |
| indique que le champ constitue la clé primaire de la table et que les doublons sont interdits. Dans la seconde expression, |
| CONSTRAINT Nom_Contrainte FOREIGN KEY Champ REFERENCES Table_Pointée(Champ_Clé_Primaire) ON UPDATE { CASCADE | NO ACTION } ON DELETE { CASCADE | NO ACTION } |
| indique que le champ constitue la clé étrangère référencée dans une autre table. Les clauses ON UPDATE et ON DELETE permettent (CASCADE) ou ne permettent pas (NO ACTION) respectivement la mise à jour ou la suppression de lignes de données mise en relation référentielles par la clés concordantes. |
La commmande CONSTRAINT permet de définir une contrainte sur une colonne lors de la création d'une table.
CONSTRAINT Définition_Contrainte
La définition de la contrainte contient une clause CHECK assurant l'intégrité du domaine en limitant les valeurs placées dans une colonne par l'intermédiaire de son expression.
CONSTRAINT Nom_Contrainte CHECK ( Expression )
L'expression de la clause CHECK peut être n'importe quelles conditions combinant notamment divers opérateurs logiques, de comparaisons, etc..
Les contraintes peuvent être modifiées ou supprimées par l'intermédiaire de la commande ALTER TABLE.
ExempleALTER TABLE nom_table MODIFY CONSTRAINT nom_contrainte ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte
CREATE TABLE TBL_Personne (
ID INTEGER PRIMARY KEY,
ID_Service INTEGER NOT NULL,
Nom VARCHAR(20) NOT NULL,
Prenom VARCHAR(20) NOT NULL,
Date_Naissance DATE NOT NULL,
Ville_Naissance VARCHAR(20) NOT NULL,
Situation_Familiale NOT NULL
CONSTRAINT ck_fam
CHECK(Situation_Familiale
IN ('Célibataire', 'Marié(e)', 'Divorcé(e)', 'Veuf(ve)', 'Concubinage')),
Adresse VARCHAR(50) NOT NULL,
Code_Postal CHAR(5) NOT NULL
CONSTRAINT ck_cp CHECK(Code_Postal LIKE ('[0-9][0-9][0-9][0-9][0-9]')),
Ville VARCHAR(20) NOT NULL,
Telephone CHAR(14) NULL
CONSTRAINT ck_tph
CHECK(Telephone
LIKE ('[0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9]')),
eMail VARCHAR(50) NOT NULL UNIQUE
CONSTRAINT ck_email CHECK(eMail LIKE ('%@%.%')),
CONSTRAINT CONST_ID FOREIGN KEY ID_Service
REFERENCES TABLE_Service(ID)
ON UPDATE CASCADE
ON DELETE CASCADE
) |