La commande ALTER TABLE est une requête permettant la modification d'une table en ajoutant, en supprimant ou en changeant les colonnes, leur définition ou les contraintes.
Syntaxe pour OracleSyntaxe pour SQL ServerALTER TABLE Nom_Table | { MODIFY CONSTRAINT nom_contrainte définition_contrainte | DROP { PRIMARY KEY | UNIQUE ( nom_colonne [, nom_colonneN] ) } | CONSTRAINT nom_contrainte } | { ADD nom_colonne type_donnée [, nom_colonneN type_donnée ] | MODIFY ( nom_colonne [type_donnée] [ définition_contrainte ] [, nom_colonneN [type_donnée] [ définition_contrainte ] ] | DROP [ COLUMN ] nom_colonne | ( nom_colonne [, nom_colonneN ] ) [ CASCADE CONSTRAINT ] | INVALIDATE }
ALTER TABLE table { [ ALTER COLUMN nom_colonne nouveau_type ] | ADD { [ nom_colonne nouveau_type ] | nom_colonne AS expression_colonne_calculée } [ ,...n ] | [ WITH CHECK | WITH NOCHECK ] ADD { définition_contrainte } [ ,...n ] | DROP { [ CONSTRAINT ] nom_contrainte | COLUMN nom_colonne } [ ,...n ] | { CHECK | NOCHECK } CONSTRAINT { ALL | nom_contrainte [ ,...n ] }
La commande ALTER TABLE est très complète puisqu'elle permet :
ALTER TABLE tbl_produit ADD CONSTRAINT chk_code CHECK (num <= 100) DISABLE CONSTRAINT chk_code; CREATE TABLE tbl_produit ( num INTEGER PRIMARY KEY) GO ALTER TABLE tbl_produit ADD designation VARCHAR(50) NULL, description VARCHAR(255) NULL, code_magasin VARCHAR(12) UNIQUE, prix REAL NOT NULL GO ALTER TABLE tbl_produit MODIFY CONSTRAINT chk_code CHK ( num >= 0 AND code <= 1000000000 ) ENABLE CONSTRAINT chk_code; ALTER TABLE tbl_produit DROP COLUMN code_magasin GO ALTER TABLE tbl_produit DROP PRIMARY KEY ALTER TABLE tbl_produit ALTER COLUMN prix DECIMAL(7, 2) GO |
Les exemples terminés par l'instruction GO sont écrits sous SQL Server, les autres pour Oracle.