La commande ALTER

ALTER est une commande SQL qui généralement associé à TABLE (ALTER TABLE) pour faire des opérations sur une table dans une base de données. Elle est utilisée pour modifier la définition d’une table qui est déjà créée dans une base de données. Cette modification peut porter sur :

L’ajout d’une colonne ;

La modification d’une colonne ;

La suppression d’une colonne ;

Les contraintes d’intégrité d’une colonne.

Cette commande a pour syntaxe :

ALTER TABLE nom_table sql_instruction ;

Sql_instruction peut être une instruction comme ajouter (ADD), supprimer (DROP), modifier (MODIFY/ CHANGE) suivi des paramètres.

Nous allons utiliser notre table employee pour faire un exemple pour chacun des cas évoqué.

 

Table employee

id_employeelast_namefirst_namesalaryid_customer
 1JonesSmith12001
 2JackHarry60303
3WilliamJames70052
4MichaelOliver35001

 

 

 

 

Ajout d’une colonne

Lorsqu’on définit une table dans une base de données, on peut toujours revenir et ajouter une ou plusieurs colonnes à la table qui existe déjà. C’est dans ce cas que la commande ALTER TABLE intervient.

La syntaxe : ALTER TABLE nom_table ADD COLUMN nom_colonne contraine_colonne;

Demo

On ajoute une colonne address à la table employee

ALTER TABLE employee ADD COLUMN address VARCHAR (30) ;

Resultat

id_employeelast_namefirst_namesalaryid_customeraddress
 1JonesSmith12001NULL
 2JackHarry60303NULL
3WilliamJames70052NULL
NULL
4MichaelOliver35001NULL

 

 

 

 

 

On peut maintenant ajouter des valeurs à la colonne address.

 

Suppression d’une colonne

Ici lorsqu’on crée une table, on peut revenir supprimer une colonne de la table dans la base de  données. La syntaxe pour la suppression donne :

ALTER TABLE nom_table DROP COLUMN nom_colonne ;

Demo

On supprime la colonne address de la table employee.

ALTER TABLE employee DROP COLUMN address ;

Resultat

id_employeelast_namefirst_namesalaryid_customer
 1JonesSmith12001
 2JackHarry60303
3WilliamJames70052
4MichaelOliver35001

 

 

 

 

Modification d’une colonne

On peut modifier le nom d’un attribut d’une table existante. Pour la modification on peut utiliser l’instruction comme. Qu’ l’on utilise l’une ou l’autre on obtient toujours le même résultat. La syntaxe donne.

ALTER TABLE nom_table CHANGE  ancien_nom_colonne nouveau_nom_colonne contrainte_colonne ;

Demo

Dans notre cas on modifie la colonne id_customer en numéro de client customer_number .

ALTER TABLE employee CHANGE id_customer customer_number INT ;

Resultat

id_employeelast_namefirst_namesalaryCustomer_number
 1JonesSmith12001
 2JackHarry60303
3WilliamJames70052
4MichaelOliver35001

 

 

 

 

 

La contrainte d’intégrité d’une colonne

Lorsqu’on parle de contrainte d’intégrité d’une colonne, il s’agit des contraintes d’intégrité de domaine, des contraintes d’intégrité d’entité qui concerne la clé primaire et des contraintes d’intégrité de référence pour de la clé étrangère.

Au niveau de domaine.

Ici il s’agit de changer le type de données SQL d’une colonne. Dans cette situation, la table principalement la colonne concernée de devrait pas contenir en ce moment les lignes ou les valeurs. Si la modification ou le changement porte sur les même types de données SQL, par exemple CHAR en CHAR ou INT en INT,… , la colonne peut contenir les lignes et il n’y aura pas de problème de changement de type par contre il faudra supprimer ces lignes avant de changer.

En ce qui concerne le changement de type de données, on utilise l’instruction CHANGE ou MODIFY.

La syntaxe donne :

ALTER TABLE nom_table CHANGE ancien_nom_colonne nouveau_nom_colonne ;

Ou

ALTER TABLE nom_table MODIFY ancien_nom_colonne nouveau_nom_colonne ;

Demo

On modifie le type de données de la colonne first_name en type de données CHAR.

ALTER TABLE employee CHANGE first_name first_name CHAR(30) ;

On modifie le type de données de la colonne salary en lui permettant de prendre nulle (NULL) comme valeur par défaut.

ALTER TABLE employee CHANGE salary salary INT  NULL ;

Remarque : Certaine version MySQL n’accepte pas MODIFY mais CHANGE.