Inleiding
- In SQL is het soms nodig om een kolom van een tabel te verwijderen.
- Het gebruik van ALTER TABLE commando met DROP COLUMN clausule zal dienen om een kolom uit een tabel te verwijderen/verwijderen.
- Het is mogelijk om zowel enkele als meerdere kolommen uit een tabel te verwijderen.
1. Een enkele kolom uit een tabel verwijderen
Gebruik de onderstaande syntaxis om een enkele kolom van de tabel te verwijderen:
ALTER TABLE TableName DROP COLUMN ColumnName;
Hier,
- TableName is de naam van de tabel waarvan de kolom moet worden verwijderd.
- ColumnName na de DROP COLUMN-clausule is de naam van de kolom die moet worden verwijderd.
Voorbeeld:
Overweeg een database met de naam "employee_db" met een tabel "employee" erin gemaakt. In dit onderwerp zullen we deze tabel en database beschouwen voor alle volgende voorbeelden:
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)
Hier hebben we de reeds aangemaakte database geselecteerd met de opdracht 'USE employee_db'. Het commando “DESC werknemer” beschrijft de structuur van de tabel “werknemer”. Vervolgens hebben we het SELECT-commando gebruikt om de werknemerstabel weer te geven die is gemaakt in employee_db.
Nu gaan we een query schrijven om een kolom met de plaats van de werknemer in de tabel 'werknemer' te verwijderen .
mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5 Duplicates: 0 Warnings: 0
ALTER TABLE-opdracht wordt gebruikt op werknemerstabel met DROP COLUMN-clausule op 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)
Wanneer we het DESC-commando opnieuw toepassen op de 'employee'-tabel net na het toepassen van het hierboven geschreven ALTER-commando, kunnen we nu zien dat Emp_City niet in de resultaten wordt vermeld. Dit laat zien dat de kolom met de naam Emp_City nu is verwijderd uit de werknemerstabel.
We hebben ook weer het SELECT-commando gebruikt. In de resultaten van het SELECT-commando worden uit alle records de waarden in Emp_City verwijderd.
2. Verwijder meerdere kolommen uit een tabel
Gebruik de onderstaande syntaxis om meer dan één kolom van de tabel te verwijderen:
ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;
Hier,
We moeten alle kolomnamen specificeren die moeten worden verwijderd, met de DROP COLUMN-clausule.
Voorbeeld:
Ten eerste zullen we de structuur van de werknemerstabel en de daarin aanwezige records zien.
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)
Hier hebben we de reeds gemaakte database geselecteerd met de opdracht 'USE employee_db'. Het commando “DESC werknemer” beschrijft de structuur van de tabel “werknemer”. Vervolgens hebben we het SELECT-commando gebruikt om de werknemerstabel weer te geven die is gemaakt in employee_db.
Nu gaan we een verzoek schrijven om een kolom met het salaris van de werknemer en het telefoonnummer van de werknemer in de tabel 'werknemer' te verwijderen.
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
ALTER TABLE-opdracht wordt gebruikt op werknemerstabel met DROP COLUMN-clausule op Emp_Salary en 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)
Wanneer we het DESC-commando opnieuw toepassen op de 'employee'-tabel net na het toepassen van het hierboven geschreven ALTER-commando, kunnen we zien dat Emp_Salary en Emp_PhoneNo niet in de resultaten worden vermeld. Dit laat zien dat de kolom met de naam Emp_Salary en Emp_PhoneNo nu is verwijderd uit de werknemerstabel. Dan hebben we ook weer het SELECT-commando gebruikt. In de resultaten van het SELECT-commando worden uit alle records de waarden in Emp_Salary en Emp_PhoneNo verwijderd.