Sql:ALTER

De wiki.nexiat.fr
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 COLUMN pour 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 COLUMN plutôt que MODIFY 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