Les contraintes
Les types de données sont un moyen de restreindre la nature des données qui peuvent être stockées dans une table. Pour beaucoup d'applications, toutefois, la contrainte fournie par ce biais est trop grossière. Par exemple, une colonne qui contient le prix d'un produit ne doit accepter que des valeurs positives, mais il n'existe pas de type de données standard qui n'accepte que des valeurs positives. Un autre problème peut provenir de la volonté de contraindre les données d'une colonne par rapport aux autres colonnes ou lignes. Par exemple, dans une table contenant des informations de produit, il ne peut y avoir qu'une ligne par numéro de produit.
Pour cela, SQL permet de définir des contraintes sur les colonnes et les tables. Les contraintes donnent autant de contrôle sur les données des tables qu'un utilisateur peut le souhaiter. Si un utilisateur tente de stocker des données dans une colonne en violation d'une contrainte, une erreur est levée.
Les types de contraintes :
NOT NULL : Impose que la colonne soit renseignée lors d'un UPDATE ou INSERT (mise à jour ou insertion d'enregistrement).
UNIQUE : les valeurs de la colonne doivent être toutes différentes
CHECK : conditions sur les valeurs acceptées (contrainte de vérification). Elle permet d'indiquer que la valeur d'une colonne particulière doit satisfaire une expression booléenne (valeur de vérité).
Par exemple, pour obliger les prix des produits à être positifs, on peut utiliser :
CREATE TABLE produits (
no_produit integer,
nom text,
prix numeric CHECK (prix > 0)
);
Une contrainte de vérification s'utilise avec le mot clé CHECK suivi d'une expression entre parenthèses.
Autres contraintes :
PRIMARY KEY : clef primaire. Une clef primaire est une contrainte qui combine une contrainte d'unicité et une contrainte NOT NULL.
FOREIGN KEY : clef étrangère.
Une commande SQL ALTER TABLE (que nous verrons plus tard) peut être utilisé pour ajouter ou supprimer une contrainte.
Pour en savoir plus sur les contraintes.