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_employee | last_name | first_name | salary | id_customer |
1 | Jones | Smith | 1200 | 1 |
2 | Jack | Harry | 6030 | 3 |
3 | William | James | 7005 | 2 |
4 | Michael | Oliver | 3500 | 1 |
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_employee | last_name | first_name | salary | id_customer | address |
1 | Jones | Smith | 1200 | 1 | NULL |
2 | Jack | Harry | 6030 | 3 | NULL |
3 | William | James | 7005 | 2 | NULL |
NULL | |||||
4 | Michael | Oliver | 3500 | 1 | NULL |
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_employee | last_name | first_name | salary | id_customer |
1 | Jones | Smith | 1200 | 1 |
2 | Jack | Harry | 6030 | 3 |
3 | William | James | 7005 | 2 |
4 | Michael | Oliver | 3500 | 1 |
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_employee | last_name | first_name | salary | Customer_number |
1 | Jones | Smith | 1200 | 1 |
2 | Jack | Harry | 6030 | 3 |
3 | William | James | 7005 | 2 |
4 | Michael | Oliver | 3500 | 1 |
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.