© Éditions Eyrolles
23
chapitre n° 1
Définition des données
Contraintes
Les contraintes ont pour but de programmer des règles de gestion au niveau des colonnes des
tables. Elles peuvent alléger un développement côté client (si on déclare qu’une note doit être
comprise entre 0 et 20, les programmes de saisie n’ont plus à tester les valeurs en entrée mais
seulement le code retour après connexion à la base ; on déporte les contraintes côté serveur).
Les contraintes peuvent être déclarées de deux manières :
q
En même temps que la colonne (valable pour les contraintes monocolonnes) ; ces contraintes sont dites « en ligne » (inline constraints). L’exemple précédent en déclare deux.
q
Après que la colonne est déclarée ; ces contraintes ne sont pas limitées à une colonne et
peuvent être personnalisées par un nom (out-of-line constraints).
Il est recommandé de déclarer les contraintes NOT NULL en ligne, les autres peuvent soit être
déclarées en ligne, soit être nommées. Étudions à présent les types de contraintes nommées
(out-of-line). Les quatre types de contraintes les plus utilisées sont les suivants :
CONSTRAINT nomContrainte
UNIQUE (colonne1 [,colonne2]...)
PRIMARY KEY (colonne1 [,colonne2]...)
FOREIGN KEY (colonne1 [,colonne2]...)
REFERENCES nomTablePere [(colonne1 [,colonne2]...)]
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
CHECK (condition)
q
La contrainte UNIQUE impose une valeur distincte au niveau de la table (les valeurs nulles
font exception à moins que NOT NULL soit aussi appliquée sur les colonnes).
q
La contrainte PRIMARY KEY déclare la clé primaire de la table. Un index est généré automatiquement sur la ou les colonnes concernées. Les colonnes clés primaires ne peuvent
être ni nulles ni identiques (en totalité si elles sont composées de plusieurs colonnes).
Tableau 1-2 Création d’une table et de ses contraintes
Instruction SQL
Commentaires
CREATE TABLE bdsoutou.Compagnie
(comp
CHAR(4),
nrue
INTEGER(3),
rue
CHAR(20),
ville CHAR(15) DEFAULT 'Paris'
COMMENT 'Par defaut : Paris',
nomComp CHAR(15) NOT NULL);
La table contient cinq colonnes (quatre chaînes de
caractères et un numérique de trois chiffres). La
colonne ville est commentée.
La table inclut en plus deux contraintes :
• DEFAULT qui fixe Paris comme valeur par défaut
de la colonne ville ;
• NOT NULL qui impose une valeur non nulle dans
la colonne nomComp.
23
chapitre n° 1
Définition des données
Contraintes
Les contraintes ont pour but de programmer des règles de gestion au niveau des colonnes des
tables. Elles peuvent alléger un développement côté client (si on déclare qu’une note doit être
comprise entre 0 et 20, les programmes de saisie n’ont plus à tester les valeurs en entrée mais
seulement le code retour après connexion à la base ; on déporte les contraintes côté serveur).
Les contraintes peuvent être déclarées de deux manières :
q
En même temps que la colonne (valable pour les contraintes monocolonnes) ; ces contraintes sont dites « en ligne » (inline constraints). L’exemple précédent en déclare deux.
q
Après que la colonne est déclarée ; ces contraintes ne sont pas limitées à une colonne et
peuvent être personnalisées par un nom (out-of-line constraints).
Il est recommandé de déclarer les contraintes NOT NULL en ligne, les autres peuvent soit être
déclarées en ligne, soit être nommées. Étudions à présent les types de contraintes nommées
(out-of-line). Les quatre types de contraintes les plus utilisées sont les suivants :
CONSTRAINT nomContrainte
UNIQUE (colonne1 [,colonne2]...)
PRIMARY KEY (colonne1 [,colonne2]...)
FOREIGN KEY (colonne1 [,colonne2]...)
REFERENCES nomTablePere [(colonne1 [,colonne2]...)]
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
CHECK (condition)
q
La contrainte UNIQUE impose une valeur distincte au niveau de la table (les valeurs nulles
font exception à moins que NOT NULL soit aussi appliquée sur les colonnes).
q
La contrainte PRIMARY KEY déclare la clé primaire de la table. Un index est généré automatiquement sur la ou les colonnes concernées. Les colonnes clés primaires ne peuvent
être ni nulles ni identiques (en totalité si elles sont composées de plusieurs colonnes).
Tableau 1-2 Création d’une table et de ses contraintes
Instruction SQL
Commentaires
CREATE TABLE bdsoutou.Compagnie
(comp
CHAR(4),
nrue
INTEGER(3),
rue
CHAR(20),
ville CHAR(15) DEFAULT 'Paris'
COMMENT 'Par defaut : Paris',
nomComp CHAR(15) NOT NULL);
La table contient cinq colonnes (quatre chaînes de
caractères et un numérique de trois chiffres). La
colonne ville est commentée.
La table inclut en plus deux contraintes :
• DEFAULT qui fixe Paris comme valeur par défaut
de la colonne ville ;
• NOT NULL qui impose une valeur non nulle dans
la colonne nomComp.
