Database
 sql >> Base de Dados >  >> RDS >> Database

Como excluir coluna na tabela

Introdução

  • Em SQL, às vezes é necessário excluir uma coluna de uma tabela.
  • O uso de ALTER TABLE comando com DROP COLUMN cláusula servirá para excluir/remover uma coluna de uma tabela.
  • É possível remover uma ou várias colunas de uma tabela.

1. Excluir uma única coluna de uma tabela

Para excluir uma única coluna da tabela, use a sintaxe fornecida abaixo:
ALTER TABLE TableName DROP COLUMN ColumnName;

Aqui,
  • TableName é o nome da tabela cuja coluna deve ser excluída.
  • ColumnName após a cláusula DROP COLUMN é o nome da coluna que deve ser excluída.

Exemplo:

Considere um banco de dados com o nome “employee_db” com uma tabela ‘employee’ criada nele. Neste tópico, consideraremos esta tabela e banco de dados para todos os exemplos subsequentes:
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)

Aqui, selecionamos o banco de dados já criado com o comando ‘USE employee_db’. O comando “DESC funcionário” descreve a estrutura da tabela ‘funcionário’. Em seguida, usamos o comando SELECT para exibir a tabela de funcionários criada em employee_db.

Agora, escreveremos uma consulta para excluir uma coluna contendo a cidade do funcionário na tabela "employee" .
mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5  Duplicates: 0  Warnings: 0

O comando ALTER TABLE é usado na tabela de funcionários com cláusula DROP COLUMN em 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)

Quando aplicamos novamente o comando DESC na tabela ‘employee’ logo após aplicar o comando ALTER escrito acima, agora podemos ver que Emp_City não está listado nos resultados. Isso mostra que a coluna chamada Emp_City agora foi excluída da tabela de funcionários.

Também usamos o comando SELECT novamente. Nos resultados do comando SELECT, de todos os registros são removidos os valores contidos em Emp_City.

2. Excluir várias colunas de uma tabela

Para excluir mais de uma coluna da tabela, use a sintaxe abaixo:
ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;

Aqui,

Precisamos especificar todos os nomes de coluna que devem ser removidos, com a cláusula DROP COLUMN.

Exemplo:

Primeiramente, veremos a estrutura da tabela de funcionários e os registros presentes nela.
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)

Aqui, selecionamos o banco de dados já criado com o comando ‘USE employee_db’. O comando “DESC funcionário” descreve a estrutura da tabela ‘funcionário’. Em seguida, usamos o comando SELECT para exibir a tabela de funcionários criada em employee_db.

Agora, escreveremos uma consulta para excluir uma coluna contendo o salário do funcionário e o número de telefone do funcionário na tabela "funcionário".
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

O comando ALTER TABLE é usado na tabela de funcionários com cláusula DROP COLUMN em Emp_Salary e 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)

Quando aplicamos novamente o comando DESC na tabela ‘employee’ logo após aplicar o comando ALTER escrito acima, podemos ver que Emp_Salary e Emp_PhoneNo não estão listados nos resultados. Isso mostra que a coluna denominada Emp_Salary e Emp_PhoneNo agora foi excluída da tabela de funcionários. Em seguida, também usamos o comando SELECT novamente. Nos resultados do comando SELECT, de todos os registros são removidos os valores contidos em Emp_Salary e Emp_PhoneNo.