sql >> Base de Datos >  >> RDS >> Database

Cómo eliminar una columna en la tabla

Introducción

  • En SQL, a veces es necesario eliminar una columna de una tabla.
  • El uso de ALTER TABLE comando con DROP COLUMN cláusula servirá para eliminar/eliminar una columna de una tabla.
  • Es posible eliminar una o varias columnas de una tabla.

1. Eliminar una sola columna de una tabla

Para eliminar una sola columna de la tabla, utilice la sintaxis que se indica a continuación:

ALTER TABLE TableName DROP COLUMN ColumnName;

Aquí,

  • TableName es el nombre de la tabla cuya columna se eliminará.
  • ColumnName después de la cláusula DROP COLUMN es el nombre de la columna que se eliminará.

Ejemplo:

Considere una base de datos con el nombre "employee_db" con una tabla "empleado" creada en ella. En este tema, consideraremos esta tabla y base de datos para todos los ejemplos posteriores:

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)

Aquí, hemos seleccionado la base de datos ya creada con el comando 'USE employee_db'. El comando "empleado DESC" describe la estructura de la tabla "empleado". Luego, usamos el comando SELECCIONAR para mostrar la tabla de empleados creada en employee_db.

Ahora, escribiremos una consulta para eliminar una columna que contenga la ciudad del empleado en la tabla de 'empleados' .

mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5  Duplicates: 0  Warnings: 0

El comando ALTER TABLE se usa en la tabla de empleados con la cláusula DROP COLUMN en 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)

Cuando aplicamos nuevamente el comando DESC en la tabla 'empleado' justo después de aplicar el comando ALTER escrito anteriormente, ahora podemos ver que Emp_City no aparece en los resultados. Esto muestra que la columna llamada Emp_City ahora se eliminó de la tabla de empleados.

También hemos usado el comando SELECT nuevamente. En los resultados del comando SELECT, de todos los registros se eliminan los valores contenidos en Emp_City.

2. Eliminar varias columnas de una tabla

Para eliminar más de una columna de la tabla, utilice la sintaxis que se proporciona a continuación:

ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;

Aquí,

Necesitamos especificar todos los nombres de columna que se eliminarán, con la cláusula DROP COLUMN.

Ejemplo:

En primer lugar, veremos la estructura de la tabla de empleados y los registros presentes en ella.

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)

Aquí, hemos seleccionado la base de datos ya creada con el comando 'USE employee_db'. El comando "empleado DESC" describe la estructura de la tabla "empleado". Luego, usamos el comando SELECCIONAR para mostrar la tabla de empleados creada en employee_db.

Ahora, escribiremos una consulta para eliminar una columna que contiene el salario y el número de teléfono del empleado en la tabla de "empleados".

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

El comando ALTER TABLE se usa en la tabla de empleados con la cláusula DROP COLUMN en Emp_Salary y 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)

Cuando aplicamos nuevamente el comando DESC en la tabla 'empleado' justo después de aplicar el comando ALTER escrito anteriormente, podemos ver que Emp_Salary y Emp_PhoneNo aparecen en los resultados. Esto muestra que la columna llamada Emp_Salary y Emp_PhoneNo ahora se elimina de la tabla de empleados. Luego también hemos usado el comando SELECT nuevamente. En los resultados del comando SELECT, de todos los registros se eliminan los valores contenidos en Emp_Salary y Emp_PhoneNo.