Skip to content

Latest commit

 

History

History
108 lines (81 loc) · 4.25 KB

File metadata and controls

108 lines (81 loc) · 4.25 KB

CREATE, ALTER, DROP - Gérer la structure des tables

L'Objectif : Bâtir et modifier la base de données

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.

⚠️ Attention : Contrairement à 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.

La Syntaxe de Base

-- 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;

Cas d'Usage

1. Créer une table (CREATE 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ée proprietaires.
  • id INT PRIMARY KEY : Crée une colonne id de type nombre entier (INT) qui servira d'identifiant unique (clé primaire).
  • nom VARCHAR(100) NOT NULL : Crée une colonne nom pour 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.

2. Modifier une table (ALTER TABLE)

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;

⚠️ Attention : Cette opération supprime la colonne ET toutes les données qu'elle contenait de manière définitive.

3. Supprimer une table (DROP TABLE)

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;

En Bref

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.