Giới thiệu
- Trong SQL, đôi khi yêu cầu xóa một cột của bảng.
- Việc sử dụng ALTER TABLE lệnh với DROP COLUMN mệnh đề sẽ phục vụ mục đích xóa / xóa một cột khỏi bảng.
- Có thể xóa một cột cũng như nhiều cột khỏi bảng.
1. Xóa một cột khỏi bảng
Để xóa một cột duy nhất của bảng, hãy sử dụng cú pháp được cung cấp bên dưới:
ALTER TABLE TableName DROP COLUMN ColumnName;
Đây,
- TableName là tên của bảng có cột sẽ bị xóa.
- ColumnName sau mệnh đề DROP COLUMN là tên của cột sẽ bị xóa.
Ví dụ:
Hãy xem xét một cơ sở dữ liệu có tên "worker_db" với một bảng "nhân viên" được tạo trong đó. Trong chủ đề này, chúng tôi sẽ xem xét bảng và cơ sở dữ liệu này cho tất cả các ví dụ tiếp theo:
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)
Ở đây, chúng tôi đã chọn cơ sở dữ liệu đã được tạo bằng lệnh ‘ USE worker_db’. Lệnh "DESC worker" mô tả cấu trúc của bảng "nhân viên". Sau đó, chúng tôi đã sử dụng lệnh SELECT để hiển thị bảng nhân viên được tạo thành worker_db.
Bây giờ, chúng tôi sẽ viết truy vấn để xóa cột chứa thành phố nhân viên trong bảng 'nhân viên' .
mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5 Duplicates: 0 Warnings: 0
Lệnh ALTER TABLE được sử dụng trên bảng nhân viên với mệnh đề DROP COLUMN trên 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)
Khi chúng tôi áp dụng lại lệnh DESC trên bảng ‘worker’ ngay sau khi áp dụng lệnh ALTER được viết ở trên, bây giờ chúng tôi có thể thấy rằng Emp_City không được liệt kê trong kết quả. Điều này cho thấy rằng cột có tên là Emp_City hiện đã bị xóa khỏi bảng nhân viên.
Chúng tôi cũng đã sử dụng lại lệnh SELECT. Trong kết quả của lệnh SELECT, từ tất cả các bản ghi, các giá trị có trong Emp_City sẽ bị loại bỏ.
2. Xóa nhiều cột khỏi bảng
Để xóa nhiều hơn một cột của bảng, hãy sử dụng cú pháp được cung cấp bên dưới:
ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;
Đây,
Chúng tôi cần chỉ định tất cả các tên cột sẽ bị xóa, với mệnh đề DROP COLUMN.
Ví dụ:
Đầu tiên, chúng ta sẽ thấy cấu trúc của bảng nhân viên và các bản ghi có trong đó.
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)
Ở đây, chúng tôi đã chọn cơ sở dữ liệu đã được tạo bằng lệnh ‘USE worker_db’. Lệnh "DESC worker" mô tả cấu trúc của bảng "nhân viên". Sau đó, chúng tôi đã sử dụng lệnh SELECT để hiển thị bảng nhân viên được tạo thành worker_db.
Bây giờ, chúng tôi sẽ viết truy vấn để xóa cột chứa tiền lương của nhân viên và số điện thoại của nhân viên trong bảng "nhân viên".
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
Lệnh ALTER TABLE được sử dụng trên bảng nhân viên với mệnh đề DROP COLUMN trên Emp_Salary và 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)
Khi chúng tôi áp dụng lại lệnh DESC trên bảng ‘worker’ ngay sau khi áp dụng lệnh ALTER được viết ở trên, chúng tôi có thể thấy Emp_Salary và Emp_PhoneNo không được liệt kê trong kết quả. Điều này cho thấy rằng cột có tên là Emp_Salary và Emp_PhoneNo hiện đã bị xóa khỏi bảng nhân viên. Sau đó, chúng tôi cũng đã sử dụng lại lệnh SELECT. Trong kết quả của lệnh SELECT, từ tất cả các bản ghi, các giá trị có trong Emp_Salary và Emp_PhoneNo sẽ bị loại bỏ.