Въведение
- В SQL понякога е необходимо да се изтрие колона от таблица.
- Използването на ALTER TABLE команда с DROP COLUMN клаузата ще служи за изтриване/премахване на колона от таблица.
- Възможно е да премахнете една, както и множество колони от таблица.
1. Изтриване на една колона от таблица
За да изтриете една колона от таблицата, използвайте синтаксиса, даден по-долу:
ALTER TABLE TableName DROP COLUMN ColumnName;
Ето,
- Име на таблица е името на таблицата, чиято колона трябва да бъде изтрита.
- Име на колона след клаузата DROP COLUMN е името на колоната, която трябва да бъде изтрита.
Пример:
Помислете за база данни с име „employee_db“ с създадена в нея таблица „служител“. В тази тема ще разгледаме тази таблица и база данни за всички следващи примери:
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)
Тук сме избрали вече създадената база данни с командата „USE employee_db“. Командата „DESC служител“ описва структурата на таблицата „служител“. След това използвахме командата SELECT, за да покажем таблицата на служителите, създадена в employee_db.
Сега ще напишем заявка за изтриване на колона, съдържаща град на служителите в таблицата „служител“ .
mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5 Duplicates: 0 Warnings: 0
Командата ALTER TABLE се използва в таблицата на служителите с клауза DROP COLUMN в 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)
Когато отново приложим командата DESC към таблицата „служител“ непосредствено след прилагането на написаната по-горе команда ALTER, сега можем да видим, че Emp_City не е посочен в резултатите. Това показва, че колоната с име Emp_City вече е изтрита от таблицата на служителите.
Също така използвахме отново командата SELECT. В резултатите от командата SELECT от всички записи се премахват стойностите, съдържащи се в Emp_City.
2. Изтрийте няколко колони от таблица
За да изтриете повече от една колона в таблицата, използвайте синтаксиса, даден по-долу:
ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;
Ето,
Трябва да посочим всички имена на колони, които трябва да бъдат премахнати, с клауза DROP COLUMN.
Пример:
Първо, ще видим структурата на таблицата на служителите и записите, присъстващи в нея.
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)
Тук сме избрали вече създадената база данни с командата ‘USE employee_db’. Командата „DESC служител“ описва структурата на таблицата „служител“. След това използвахме командата SELECT, за да покажем таблицата на служителите, създадена в employee_db.
Сега ще напишем заявка за изтриване на колона, съдържаща заплата на служител и телефонен номер на служител в таблицата „служител“.
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 се използва в таблицата на служителите с клауза DROP COLUMN на Emp_Salary и 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)
Когато отново приложим командата DESC към таблицата „служител“ непосредствено след прилагането на написаната по-горе команда ALTER, можем да видим, че Emp_Salary и Emp_PhoneNo не са посочени в резултатите. Това показва, че колоната с име Emp_Salary и Emp_PhoneNo вече е изтрита от таблицата на служителите. След това отново използвахме командата SELECT. В резултатите от командата SELECT от всички записи се премахват стойностите, съдържащи се в Emp_Salary и Emp_PhoneNo.