Présentation
- En SQL, il est parfois nécessaire de supprimer une colonne d'une table.
- L'utilisation de ALTER TABLE commande avec DROP COLUMN clause servira à supprimer/retirer une colonne d'une table.
- Il est possible de supprimer une ou plusieurs colonnes d'un tableau.
1. Supprimer une seule colonne d'un tableau
Pour supprimer une seule colonne du tableau, utilisez la syntaxe ci-dessous :
ALTER TABLE TableName DROP COLUMN ColumnName;
Ici,
- TableName est le nom de la table dont la colonne doit être supprimée.
- ColumnName après la clause DROP COLUMN est le nom de la colonne à supprimer.
Exemple :
Considérez une base de données avec le nom "employee_db" avec une table "employee" créée dedans. Dans cette rubrique, nous considérerons cette table et cette base de données pour tous les exemples suivants :
mysql> USE employee_db;
Database changed
mysql> DESC employee;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Salary | int(11) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
| Emp_City | varchar(20) | YES | | NULL | |
| Emp_PhoneNo | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
6 rows in set (0.07 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+------------+----------+-------------+
| Emp_ID | Emp_Name | Emp_Salary | Emp_Dept | Emp_City | Emp_PhoneNo |
+--------+----------+------------+------------+----------+-------------+
| 101 | Ram | 52000 | R&D | Pune | 8798654676 |
| 102 | Shyam | 38000 | Finance | Delhi | 9898765687 |
| 103 | Anmol | 61000 | Accounting | Mumbai | 9087864532 |
| 104 | Abhishek | 69000 | Purchasing | Shimla | 7678987534 |
| 105 | Rohit | 53000 | HRM | Ambala | 8897865643 |
+--------+----------+------------+------------+----------+-------------+
5 rows in set (0.00 sec)
Ici, nous avons sélectionné la base de données déjà créée avec la commande ‘USE employee_db’. La commande « DESC employé » décrit la structure de la table « employé ». Ensuite, nous avons utilisé la commande SELECT pour afficher la table des employés créée dans employee_db.
Maintenant, nous allons écrire une requête pour supprimer une colonne contenant la ville de l'employé dans la table "employé" .
mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5 Duplicates: 0 Warnings: 0
La commande ALTER TABLE est utilisée sur la table des employés avec la clause DROP COLUMN sur Emp_City.
mysql> DESC employee;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Salary | int(11) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
| Emp_PhoneNo | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+------------+-------------+
| Emp_ID | Emp_Name | Emp_Salary | Emp_Dept | Emp_PhoneNo |
+--------+----------+------------+------------+-------------+
| 101 | Ram | 52000 | R&D | 8798654676 |
| 102 | Shyam | 38000 | Finance | 9898765687 |
| 103 | Anmol | 61000 | Accounting | 9087864532 |
| 104 | Abhishek | 69000 | Purchasing | 7678987534 |
| 105 | Rohit | 53000 | HRM | 8897865643 |
+--------+----------+------------+------------+-------------+
5 rows in set (0.00 sec)
Lorsque nous appliquons à nouveau la commande DESC sur la table 'employee' juste après avoir appliqué la commande ALTER écrite ci-dessus, nous pouvons maintenant voir que Emp_City n'est pas répertorié dans les résultats. Cela montre que la colonne nommée Emp_City est maintenant supprimée de la table des employés.
Nous avons également utilisé à nouveau la commande SELECT. Dans les résultats de la commande SELECT, de tous les enregistrements, les valeurs contenues dans Emp_City sont supprimées.
2. Supprimer plusieurs colonnes d'un tableau
Pour supprimer plus d'une colonne du tableau, utilisez la syntaxe ci-dessous :
ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;
Ici,
Nous devons spécifier tous les noms de colonnes à supprimer, avec la clause DROP COLUMN.
Exemple :
Dans un premier temps, nous verrons la structure de la table des employés et les enregistrements qui y sont présents.
mysql> DESC employee;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Salary | int(11) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
| Emp_PhoneNo | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+------------+-------------+
| Emp_ID | Emp_Name | Emp_Salary | Emp_Dept | Emp_PhoneNo |
+--------+----------+------------+------------+-------------+
| 101 | Ram | 52000 | R&D | 8798654676 |
| 102 | Shyam | 38000 | Finance | 9898765687 |
| 103 | Anmol | 61000 | Accounting | 9087864532 |
| 104 | Abhishek | 69000 | Purchasing | 7678987534 |
| 105 | Rohit | 53000 | HRM | 8897865643 |
+--------+----------+------------+------------+-------------+
5 rows in set (0.00 sec)
Ici, nous avons sélectionné la base de données déjà créée avec la commande ‘USE employee_db’. La commande « DESC employé » décrit la structure de la table « employé ». Ensuite, nous avons utilisé la commande SELECT pour afficher la table des employés créée dans employee_db.
Maintenant, nous allons écrire une requête pour supprimer une colonne contenant le salaire et le numéro de téléphone de l'employé dans la table "employé".
mysql> ALTER TABLE employee DROP COLUMN Emp_Salary, DROP COLUMN Emp_PhoneNo;
Query OK, 5 rows affected (0.29 sec)
Records: 5 Duplicates: 0 Warnings: 0
La commande ALTER TABLE est utilisée sur la table des employés avec la clause DROP COLUMN sur Emp_Salary et Emp_PhoneNo.
mysql> DESC employee;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+
| Emp_ID | Emp_Name | Emp_Dept |
+--------+----------+------------+
| 101 | Ram | R&D |
| 102 | Shyam | Finance |
| 103 | Anmol | Accounting |
| 104 | Abhishek | Purchasing |
| 105 | Rohit | HRM |
+--------+----------+------------+
5 rows in set (0.00 sec)
Lorsque nous appliquons à nouveau la commande DESC sur la table 'employee' juste après avoir appliqué la commande ALTER écrite ci-dessus, nous pouvons voir que Emp_Salary et Emp_PhoneNo ne sont pas répertoriés dans les résultats. Cela montre que la colonne nommée Emp_Salary et Emp_PhoneNo est maintenant supprimée de la table des employés. Ensuite, nous avons également utilisé à nouveau la commande SELECT. Dans les résultats de la commande SELECT, de tous les enregistrements, les valeurs contenues dans Emp_Salary et Emp_PhoneNo sont supprimées.