Jusqu'à présent, nous avons travaillé avec des tables qui existaient déjà. Mais comment sont-elles créées ? Comment les modifier si nos besoins évoluent ? C'est le rôle du DDL (Data Definition Language). Ces commandes ne manipulent pas les lignes de données, mais la structure des tables elles-mêmes.
CREATE TABLE: Construit une nouvelle table vide.ALTER TABLE: Modifie la structure d'une table existante.DROP TABLE: Supprime complètement une table et toutes les données qu'elle contient.
INSERT ou UPDATE, la plupart des opérations DDL sont instantanées et irréversibles. Une table supprimée avec DROP est généralement perdue pour de bon. Ces commandes doivent être utilisées avec la plus grande prudence, surtout en production.
-- Créer une table
CREATE TABLE nom_de_la_table (
colonne1 type_de_donnees contraintes,
colonne2 type_de_donnees contraintes,
...
);
-- Modifier une table (ajouter, modifier ou supprimer une colonne)
ALTER TABLE nom_de_la_table
ADD COLUMN nom_colonne type_de_donnees;
-- Supprimer une table
DROP TABLE nom_de_la_table;Imaginons que nous voulions stocker les propriétaires de nos véhicules. Nous avons besoin d'une nouvelle table proprietaires.
Requête :
CREATE TABLE proprietaires (
id INT PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
prenom VARCHAR(100),
ville VARCHAR(100)
);Fonctionnement :
CREATE TABLE proprietaires: Déclare la création d'une table nomméeproprietaires.id INT PRIMARY KEY: Crée une colonneidde type nombre entier (INT) qui servira d'identifiant unique (clé primaire).nom VARCHAR(100) NOT NULL: Crée une colonnenompour du texte de 100 caractères maximum (VARCHAR), qui ne peut pas être vide (NOT NULL).- Les types et contraintes (
PRIMARY KEY,NOT NULL...) seront détaillés dans la prochaine fiche.
Après exécution, une nouvelle table proprietaires, vide, existe dans notre base de données.
Nos besoins ont changé. Nous devons altérer la table proprietaires.
a) Ajouter une colonne Nous avons oublié d'inclure le numéro de téléphone.
Requête :
ALTER TABLE proprietaires
ADD COLUMN telephone VARCHAR(20);La table proprietaires possède maintenant une colonne telephone supplémentaire. Toutes les lignes qui existeraient déjà auraient NULL dans cette nouvelle colonne.
b) Modifier le type d'une colonne
La colonne ville est trop courte. Nous voulons passer de 100 à 150 caractères.
Requête :```sql -- La syntaxe exacte peut varier (ex: ALTER COLUMN ... TYPE ... sur PostgreSQL) ALTER TABLE proprietaires MODIFY COLUMN ville VARCHAR(150);
**c) Supprimer une colonne**
Finalement, la colonne `ville` n'est pas pertinente.
**Requête :**
```sql
ALTER TABLE proprietaires
DROP COLUMN ville;
L'exemple de la table proprietaires n'est plus nécessaire. Nous allons la supprimer entièrement.
Requête :
DROP TABLE proprietaires;Cette commande détruit la structure de la table proprietaires ainsi que toutes les lignes de données qu'elle pouvait contenir. Il n'y a pas de confirmation et pas de retour en arrière simple.
Pour éviter une erreur si la table n'existe pas, on peut utiliser IF EXISTS :
DROP TABLE IF EXISTS proprietaires;| Commande | Rôle | Point Clé |
|---|---|---|
CREATE TABLE |
Crée une nouvelle table vide avec une structure définie. | Nécessite de spécifier les noms des colonnes et leurs types de données. |
ALTER TABLE |
Modifie la structure d'une table existante. | Permet d'ajouter, modifier (MODIFY) ou supprimer (DROP) des colonnes. |
DROP TABLE |
Supprime définitivement une table et toutes ses données. | IRRÉVERSIBLE. La commande la plus dangereuse du DDL. |