Sql:ALTER
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Commande SQL standard |
| Catégorie | DDL (Data Definition Language) |
| Objets concernés | DATABASE, EVENT, FUNCTION, PROCEDURE, TABLE, VIEW |
| Voir aussi | Sql · Sql:CREATE · Sql:DROP |
ALTER est la commande SQL de modification de la structure d'un objet déjà existant — ajouter/supprimer une colonne, changer un type, renommer une table… À la différence de Sql:DROP suivi d'un Sql:CREATE, ALTER modifie l'objet en place sans perdre les données qu'il contient (sauf incompatibilité de type explicite).
Syntaxe
Forme générale :
ALTER {DATABASE | EVENT | FUNCTION | PROCEDURE | TABLE | VIEW} nom alter_specification [, ...];
Pour une base de données :
ALTER DATABASE nom_base alter_specification [, alter_specification] ...;
Pour une table (le cas le plus courant) :
ALTER TABLE nom_table
ADD COLUMN colonne type,
DROP COLUMN colonne,
MODIFY COLUMN colonne nouveau_type,
RENAME TO nouveau_nom;
Exemples
-- Ajouter une colonne
ALTER TABLE utilisateurs ADD COLUMN date_creation DATE;
-- Supprimer une colonne
ALTER TABLE utilisateurs DROP COLUMN date_creation;
-- Modifier le type d'une colonne
ALTER TABLE utilisateurs MODIFY COLUMN nom VARCHAR(100);
-- Renommer une table
ALTER TABLE utilisateurs RENAME TO clients;
-- Ajouter une contrainte
ALTER TABLE utilisateurs ADD CONSTRAINT uq_email UNIQUE (email);
Variantes par moteur
- MySQL/MariaDB :
MODIFY COLUMNpour changer le type d'une colonne
existante ; sur de grosses tables, ALTER TABLE peut nécessiter une copie
complète de la table (verrouillage prolongé) selon la version et le moteur de stockage —
vérifier avant d'exécuter en production.
- PostgreSQL : syntaxe
ALTER TABLE ... ALTER COLUMN ... TYPE ...(mot-clé
ALTER COLUMNplutôt queMODIFY COLUMN).
- Oracle :
ALTER TABLE ... MODIFY (colonne type), avec des restrictions
sur les changements de type si la colonne contient déjà des données.
Voir aussi
- Sql — panorama du langage SQL
- Sql:CREATE — créer un objet
- Sql:DROP — supprimer un objet