SQL ALTER TABLE

La commande ALTER TABLE en SQL permet de modifier une table existante. Il est ainsi possible d’ajouter une colonne, d’en supprimer une ou de modifier une colonne existante, par exemple pour changer le type.

Syntaxe de base

D’une manière générale, la commande s’utilise de la manière suivante:

ALTER TABLE nom_table
instruction

Le mot-clé « instruction » ici sert à désigner une commande supplémentaire, qui sera détaillée ci-dessous selon l’action que l’ont souhaite effectuer : ajouter, supprimer ou modifier une colonne.

Ajouter une colonne

Syntaxe

L’ajout d’une colonne dans une table est relativement simple et peut s’effectuer à l’aide d’une requête ressemblant à ceci:

ALTER TABLE nom_table
ADD nom_colonne type_donnees

Exemple

Pour ajouter une colonne qui correspond à une rue sur une table utilisateur, il est possible d’utiliser la requête suivante:

ALTER TABLE utilisateur
ADD adresse_rue VARCHAR(255)

Supprimer une colonne

Une syntaxe permet également de supprimer une colonne pour une table. Il y a 2 manières totalement équivalente pour supprimer une colonne:

ALTER TABLE nom_table
DROP nom_colonne

Ou (le résultat sera le même)

ALTER TABLE nom_table
DROP COLUMN nom_colonne

Modifier une colonne

Pour modifier une colonne, comme par exemple changer le type d’une colonne, il y a différentes syntaxes selon le SGBD.

MySQL

ALTER TABLE nom_table
MODIFY nom_colonne type_donnees

PostgreSQL

ALTER TABLE nom_table
ALTER COLUMN nom_colonne TYPE type_donnees

Ici, le mot-clé « type_donnees » est à remplacer par un type de données tel que INT, VARCHAR, TEXT, DATE …

Renommer une colonne

Pour renommer une colonne, il convient d’indiquer l’ancien nom de la colonne et le nouveau nom de celle-ci.

MySQL

Pour MySQL, il faut également indiquer le type de la colonne.

ALTER TABLE nom_table
CHANGE colonne_ancien_nom colonne_nouveau_nom type_donnees

Ici « type_donnees » peut correspondre par exemple à INT, VARCHAR, TEXT, DATE …

PostgreSQL

Pour PostgreSQL la syntaxe est plus simple et ressemble à ceci (le type n’est pas demandé):

ALTER TABLE nom_table
RENAME COLUMN colonne_ancien_nom TO colonne_nouveau_nom
Partager