PaliSkill
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 un INSERT.
  • 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/AUTOINCREMENT n'a jamais besoin d'être fournie dans un INSERT, contrairement à une colonne NOT NULL sans DEFAULT.
  • 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