CodeGym /Cours /SQL SELF /Modifier la structure des tables avec ALTER TABLE<...

Modifier la structure des tables avec ALTER TABLE

SQL SELF
Niveau 17 , Leçon 4
Disponible

Il est temps de parler de comment modifier des tables déjà existantes. Dans la vraie vie d’un projet, rien ne reste figé — les exigences peuvent tomber d’un coup, comme un bombardilokrokodilo. Par exemple, le product manager décide soudainement que chaque utilisateur doit avoir un identifiant unique pour sa couleur de fond préférée sur son profil. Ou alors tu te rends compte que VARCHAR(50) pour le nom, c’est pas sérieux, surtout quand tu as déjà un utilisateur qui s’appelle "Bombardilokrokodilo-Junior-Troisième".

Eh bien, dans PostgreSQL, il y a un outil pour ça — la commande ALTER TABLE.

ALTER TABLE — c’est la commande qui permet de modifier la structure des tables existantes. Avec elle, tu peux :

  • Ajouter de nouvelles colonnes ;
  • Supprimer des colonnes inutiles ;
  • Changer le type de données d’une colonne ;
  • Renommer une table ou ses colonnes ;
  • Ajouter ou supprimer des contraintes, comme NOT NULL, UNIQUE, et bien plus encore.

En gros, c’est comme si tu avais déjà construit une maison (la table), mais maintenant tu veux ajouter une nouvelle pièce (colonne) ou enlever un débarras inutile (supprimer une colonne).

Syntaxe de ALTER TABLE

La structure générale de la commande est plutôt intuitive :

ALTER TABLE table
    action_modification;

Où :

  • table — le nom de la table que tu veux modifier ;
  • action_modification — l’action précise que tu veux faire (par exemple, ajouter une colonne, la supprimer ou changer son type de données).

Exemples d’utilisation de ALTER TABLE

Ajouter une nouvelle colonne

Si tu veux ajouter une nouvelle colonne à une table, utilise la commande ADD COLUMN. Par exemple :

ALTER TABLE students
ADD COLUMN email VARCHAR(100);

Cette commande ajoute une nouvelle colonne email à la table students, où tu pourras stocker l’adresse email de l’étudiant. Le type de données de la colonne est une chaîne de caractères jusqu’à 100 caractères.

Imaginons que tu as créé la table des étudiants, mais tu as oublié d’ajouter la date d’inscription. Voilà comment corriger ça :

ALTER TABLE students
ADD COLUMN enrollment_date DATE;

Maintenant tu as une colonne enrollment_date, et tu peux enregistrer la date d’inscription.

Supprimer une colonne

Si tu décides qu’une colonne ne sert plus à rien, utilise la commande DROP COLUMN. Par exemple :

ALTER TABLE students
DROP COLUMN email;

Cette commande supprime la colonne email de la table students. Attention, les données de cette colonne seront aussi supprimées sans possibilité de retour.

Point important :

Si tu essaies de supprimer une colonne qui est utilisée dans d’autres tables (par exemple comme clé étrangère), PostgreSQL peut te sortir une erreur. Dans ce cas, il faut d’abord supprimer les dépendances.

Changer le type de données d’une colonne

Parfois, le type de données choisi au début ne convient pas. Par exemple, tu as décidé de stocker l’âge des étudiants en SMALLINT, puis tu te rends compte que ce n’est pas suffisant et tu veux passer à BIGINT. Voilà comment faire :

ALTER TABLE students
ALTER COLUMN age TYPE BIGINT;

Point important : si des données sont déjà enregistrées dans la colonne, PostgreSQL vérifie si elles peuvent être converties dans le nouveau type. Si ce n’est pas possible, tu auras une erreur.

Imaginons que tu as créé la colonne description en VARCHAR(100), mais tu réalises ensuite que la description des cours peut être bien plus longue. Change le type de données en TEXT :

ALTER TABLE courses
ALTER COLUMN description TYPE TEXT;

Maintenant tu peux stocker des descriptions de cours complètes sans limite de longueur.

Renommer une colonne

Si tu dois changer le nom d’une colonne, utilise la commande RENAME COLUMN :

ALTER TABLE students
RENAME COLUMN name TO full_name;

Maintenant la colonne name s’appelle full_name.

Renommer une table

Tu peux aussi changer le nom de la table elle-même. Pour ça, utilise la commande RENAME TO :

ALTER TABLE students
RENAME TO university_students;

Maintenant la table students s’appelle university_students.

Ajouter/enlever la contrainte NOT NULL

Imaginons que tu as créé une colonne mais tu as oublié de la rendre obligatoire (NOT NULL). Pas de souci ! Tu peux ajouter cette contrainte plus tard :

ALTER TABLE students
ALTER COLUMN name SET NOT NULL;

Si tu veux enlever la contrainte NOT NULL, utilise la commande DROP NOT NULL :

ALTER TABLE students
ALTER COLUMN name DROP NOT NULL;

Définir une valeur par défaut

Si la colonne existe déjà mais tu veux lui donner une valeur par défaut, utilise SET DEFAULT :

ALTER TABLE enrollments
ALTER COLUMN enrollment_date SET DEFAULT CURRENT_DATE;

Pour enlever la valeur par défaut, fais :

ALTER TABLE enrollments
ALTER COLUMN enrollment_date DROP DEFAULT;

On verra chaque commande en détail dans les trois prochaines leçons. Prépare-toi :)

Erreurs classiques avec ALTER TABLE

Quand tu bosses avec ALTER TABLE, tu peux tomber sur des erreurs. Voici les plus courantes :

Essayer de changer un type de données incompatible avec les données actuelles. Par exemple, si la colonne age contient déjà des données et que tu veux la convertir en chaîne VARCHAR, ça va planter. Solution : supprime ou convertis d’abord les données.

Essayer de supprimer une colonne utilisée comme clé étrangère ou index. PostgreSQL ne te laissera pas faire pour garder l’intégrité des données. Avant de supprimer des colonnes dépendantes, il faut enlever les liens.

Erreurs de syntaxe. La commande ALTER TABLE est assez flexible, mais il faut respecter la syntaxe à la lettre. Par exemple, la commande ADD COLUMN doit inclure le type de données.

Scénarios réels d’utilisation

Dans la vraie vie, la commande ALTER TABLE sert tout le temps. Tu peux la croiser quand tu :

  • Ajoutes de nouvelles données à une table existante (genre de nouvelles colonnes) ;
  • Optimises la base de données (par exemple, en changeant les types de données pour économiser de la mémoire) ;
  • Corriges des erreurs de conception (genre si tu as oublié une contrainte ou mal choisi un type de données au début).

Maintenant tu vois à quel point la commande ALTER TABLE est puissante. C’est un outil costaud qui t’aide à gérer les changements dans ton projet. Le principal — sois attentif et ne va pas trop vite, histoire de ne pas "casser la maison" (ta table) en essayant d’ajouter une nouvelle pièce.

1
Étude/Quiz
Bases de la création de tables, niveau 17, leçon 4
Indisponible
Bases de la création de tables
Bases de la création de tables
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION