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.
| Famille | Agit sur | Mots-clés |
|---|---|---|
| DDL | la structure (tables, colonnes, contraintes) | CREATE, ALTER, DROP |
| DML | les 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.
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.
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.
| Type | Contenu | Exemple |
|---|---|---|
| INTEGER | nombre entier | 42 |
| REAL | nombre à virgule | 3.14 |
| TEXT | texte | 'Maréchal' |
| BLOB | donné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é.
| Contrainte | Règle imposée |
|---|---|
| PRIMARY KEY | identifie chaque ligne de façon unique (ni doublon, ni valeur vide) |
| NOT NULL | la valeur est obligatoire |
| UNIQUE | deux lignes ne peuvent pas avoir la même valeur dans cette colonne |
| DEFAULT | valeur utilisée quand on n'en précise aucune |
| CHECK | la valeur doit vérifier une condition |
| FOREIGN KEY | la valeur doit exister dans la clé primaire d'une autre 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.
-- ajouter une colonne
ALTER TABLE enqueteurs ADD COLUMN telephone TEXT;
-- renommer la table
ALTER TABLE enqueteurs RENAME TO brigadiers;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.