← SQL Intermédiaire
Leçon 10 / 10 — Chapitre 5: Définir et faire évoluer une table
Cas pratique : concevoir une table complète
Ce cas pratique combine plusieurs contraintes de ce chapitre dans une seule table.
CREATE TABLE abonnes (
id SERIAL PRIMARY KEY,
nom TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
statut TEXT DEFAULT 'actif',
age INTEGER CHECK (age >= 18)
);
Lecture contrainte par contrainte :
id SERIAL PRIMARY KEY: identifiant unique généré automatiquement, jamais à préciser dans unINSERT.email TEXT UNIQUE NOT NULL: obligatoire, et jamais partagé par deux abonnés.statut TEXT DEFAULT 'actif': vaut'actif'si omis à l'insertion.age INTEGER CHECK (age >= 18): toute tentative avec un âge inférieur à 18 est rejetée.
Un INSERT INTO abonnes (nom, email, age) VALUES ('Lina', 'lina@mail.com', 24); réussit : id est généré automatiquement, statut reçoit 'actif' par défaut, age (24) respecte le CHECK.
À retenir :
- Plusieurs contraintes se combinent naturellement sur une même colonne (
UNIQUE NOT NULL) ou sur des colonnes différentes d'une même table. - Une colonne
SERIAL/AUTOINCREMENTn'a jamais besoin d'être fournie dans unINSERT, contrairement à une colonneNOT NULLsansDEFAULT. - Concevoir une table, c'est décider à l'avance quelles erreurs de saisie doivent devenir impossibles, plutôt que de les corriger après coup.
À vous de jouer : un INSERT INTO abonnes (nom, age) VALUES ('Malik', 30); (sans email) réussirait-il sur cette table ? Justifiez à partir des contraintes ci-dessus.
🔒
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès