ALTER TABLE
ALTER TABLE fait évoluer une table existante sans perdre ses données : ajouter, renommer ou supprimer une colonne, renommer la table. C'est l'outil des migrations de schéma.
- modifier structure
- ajouter colonne
- renommer
- supprimer colonne
- DDL
Syntaxe
ALTER TABLE table ADD COLUMN colonne TYPE;ALTER TABLE table RENAME COLUMN ancien TO nouveau;ALTER TABLE table DROP COLUMN colonne;ALTER TABLE table RENAME TO nouveau_nom;Exemple
ALTER TABLE students ADD COLUMN email TEXT;ALTER TABLE students RENAME COLUMN email TO contact_email;ALTER TABLE students DROP COLUMN contact_email;SELECT name AS colonneFROM pragma_table_info('students');-- Jeu de données : école-- La colonne a été ajoutée, renommée puis supprimée : on retrouve la structure d'origine.-- Résultat attendu :-- id-- name-- age-- class_idÀ retenir
- SQLite gère ADD COLUMN, RENAME TO, RENAME COLUMN (depuis la 3.25, 2018) et DROP COLUMN (depuis la 3.35, 2021). Le playground, en SQLite 3.49, accepte les quatre.
- ADD COLUMN a des limites : pas de PRIMARY KEY ni de UNIQUE, et une colonne NOT NULL doit recevoir une valeur DEFAULT non nulle pour remplir les lignes existantes.
- Piège : DROP COLUMN échoue si la colonne fait partie de la clé primaire, d'une contrainte UNIQUE, d'un index, d'une clé étrangère ou d'une vue. Supprimez d'abord l'objet qui en dépend.
- Piège : SQLite n'a pas d'ALTER COLUMN. Pour changer un type ou ajouter une contrainte, on crée une nouvelle table, on copie les données (INSERT INTO … SELECT), on supprime l'ancienne puis on renomme la nouvelle, le tout dans une transaction. PostgreSQL propose ALTER COLUMN … TYPE.
Voir aussi
- CREATE TABLECREATE TABLE déclare une nouvelle table : ses colonnes, leurs types et les contraintes qui protègent les données. C'est la traduction concrète d'un modèle MLD en schéma de base.
- DROP TABLEDROP TABLE supprime définitivement une table, ses données, ses index et ses triggers. On le réserve aux tables temporaires ou aux migrations, jamais sans sauvegarde sur des données réelles.
- TransactionsUne transaction regroupe plusieurs écritures qui réussissent toutes ou échouent toutes. Une commande et ses lignes, ou un virement entre deux comptes, ne doivent jamais rester à moitié enregistrés.