Brigade des Requêtes

Chapitre 8 : CREATE, ALTER, DROP (pour aller plus loin, cours seul)

DDL : définir la structure de la base

Jusqu'ici tu as lu (SELECT) puis modifié des lignes (INSERT, UPDATE, DELETE). Mais qui a créé les tables en premier lieu ? C'est le rôle du DDL, le langage de définition des données : il construit, transforme et supprime la structure de la base.

À quoi sert le DDL ?

Le DDL (Data Definition Language, « langage de définition de données ») agit sur le plan de la base : quelles tables existent, quelles colonnes elles contiennent, de quel type, et quelles règles elles imposent. Il ne s'occupe pas du contenu des lignes.

FamilleAgit surMots-clés
DDLla structure (tables, colonnes, contraintes)CREATE, ALTER, DROP
DMLles lignes (le contenu)INSERT, UPDATE, DELETE

CREATE TABLE : créer une table

On donne le nom de la table, puis la liste de ses colonnes. Pour chacune : son nom, son type et, si besoin, ses contraintes. Voici la table des enquêteurs du chapitre 0.

Créer la table des enquêteurs
CREATE TABLE enqueteurs (
  id         INTEGER PRIMARY KEY,
  nom        TEXT NOT NULL,
  grade      TEXT NOT NULL,
  specialite TEXT
);

Une clé étrangère se déclare aussi à la création. Ici, chaque affaire doit renvoyer vers un enquêteur qui existe dans la table enqueteurs.

Créer la table des affaires, liée aux enquêteurs
CREATE TABLE affaires (
  id           INTEGER PRIMARY KEY,
  titre        TEXT NOT NULL,
  statut       TEXT NOT NULL DEFAULT 'ouverte',
  enqueteur_id INTEGER NOT NULL,
  FOREIGN KEY (enqueteur_id) REFERENCES enqueteurs (id)
);

Les types de données

Chaque colonne a un type qui dit quelle sorte de valeur elle accepte. Voici les types de base, communs à la plupart des SGBD.

TypeContenuExemple
INTEGERnombre entier42
REALnombre à virgule3.14
TEXTtexte'Maréchal'
BLOBdonnées brutes (image, fichier)octets

Selon le SGBD, on trouve aussi des types plus précis : VARCHAR(n) (texte limité à n caractères), DECIMAL(p, s) (nombre exact, utile pour l'argent), DATE, TIMESTAMP, BOOLEAN...

Les contraintes

Une contrainte est une règle que la base fait respecter à chaque ajout ou modification. Si une requête la viole, elle est refusée et rien n'est changé.

ContrainteRègle imposée
PRIMARY KEYidentifie chaque ligne de façon unique (ni doublon, ni valeur vide)
NOT NULLla valeur est obligatoire
UNIQUEdeux lignes ne peuvent pas avoir la même valeur dans cette colonne
DEFAULTvaleur utilisée quand on n'en précise aucune
CHECKla valeur doit vérifier une condition
FOREIGN KEYla valeur doit exister dans la clé primaire d'une autre table
Plusieurs contraintes sur une même table
CREATE TABLE suspects (
  id     INTEGER PRIMARY KEY,
  nom    TEXT NOT NULL,
  age    INTEGER CHECK (age >= 0),
  badge  TEXT UNIQUE,
  statut TEXT DEFAULT 'libre'
);

ALTER TABLE et DROP TABLE

Une base évolue : on ajoute une colonne, on renomme une table, on supprime ce qui ne sert plus. ALTER TABLE modifie une table existante, DROP TABLE la supprime.

Modifier la structure d'une table
-- ajouter une colonne
ALTER TABLE enqueteurs ADD COLUMN telephone TEXT;

-- renommer la table
ALTER TABLE enqueteurs RENAME TO brigadiers;
Supprimer une table
DROP TABLE brigadiers;
  • CREATE crée un objet (table, index, vue...) ;
  • ALTER modifie la structure d'un objet existant ;
  • DROP supprime un objet, avec toutes les données qu'il contient.

Chapitre 7 | Chapitre 9