pdf - e-book - archive

1.2  Contraintes déclaratives

1.2.1  Valeurs par défaut

create table client
 (
 numcli int, 
 nom varchar(256) default 'Moi',
 prenom varchar(256)
 )

fait de ’Moi’ le nom par défaut.

1.2.2  Champs non renseignés

create table client
 (
 numcli int,
 nom varchar(256) NOT NULL,
 prenom varchar(256) NOT NULL
 )

force la saisie des champs nom et prénom.

1.2.3  Clé primaire

Une clé primaire est :

On peut préciser PRIMARY KEY dans la création de table

create table client
 (
 numcli int PRIMARY KEY, 
 nom varchar(256),
 prenom varchar(256)
 )

La colonne numcli est clé primaire, toute insertion ne respectant pas la contrainte de clé primaire sera refusée par le SGBD.

1.2.4  Clé étrangère

Dans le cas où l’on souhaite garder en mémoire des factures émises par des clients, la façon de faire est de créer une deuxième table contenant la liste des factures :

create table facture
 (
 numfact int PRIMARY KEY,
        montantFacture int,
 numcli int REFERENCES CLIENT(numCli)
 );

Le champ numCli dans cette table est clé étrangère, ce qui signifie qu’une ligne ne pourra être insérée dans la table facture que si le numcli de cette ligne existe dans la colonne numcli de la table client.

La syntaxe est

REFERENCES <nomtable> (<nomcolonne>)

1.2.5  Syntaxe alternative

Il est possible de définir les contraintes après la création d’une table.

ALTER TABLE nomtable
ADD [CONSTRAINT nomcontrainte] descriptioncontrainte;

descriptioncontrainte d’une clé primaire :

PRIMARY KEY(colonne1, ..., colonnen)

descriptioncontrainte d’une clé étrangère :

FOREIGN KEY(colonne1, ..., colonnen) 
REFERENCES tablereferencee (colonne1, ..., colonnen)

Il est aussi possible de placer une descriptioncontrainte dans le CREATE TABLE. Par exemple,

create table facture
 (
 numfact int,
        montantFacture int,
 numcli int,
        PRIMARY KEY (numfact),
        FOREIGN KEY nucli REFERENCES CLIENT(numcli)
 );

On remarque qu’il est possible de nommer une contrainte. C’est utile si on souhaite la supprimer :

ALTER TABLE nomtable DROP CONSTRAINT nomcontrainte;

Pour lister les contraintes sous Oracle, on utilise la commande :

SELECT * FROM USER_CONSTRAINTS;

Sous mySQL :

SHOW TABLE STATUS;