Database
 sql >> Base de données >  >> RDS >> Database

Comment supprimer une colonne dans un tableau

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.