Wprowadzenie
- W SQL czasami wymagane jest usunięcie kolumny tabeli.
- Korzystanie z ALTER TABLE polecenie z DROP COLUMN klauzula posłuży do usunięcia/usunięcia kolumny z tabeli.
- Możliwe jest usunięcie zarówno jednej, jak i wielu kolumn z tabeli.
1. Usuń pojedynczą kolumnę z tabeli
Aby usunąć pojedynczą kolumnę tabeli, użyj składni podanej poniżej:
ALTER TABLE TableName DROP COLUMN ColumnName;
Tutaj
- TableName to nazwa tabeli, której kolumna ma zostać usunięta.
- ColumnName po klauzuli DROP COLUMN jest nazwą kolumny, która ma zostać usunięta.
Przykład:
Rozważ bazę danych o nazwie „pracownik_db” z utworzoną w niej tabelą „pracownik”. W tym temacie rozważymy tę tabelę i bazę danych dla wszystkich kolejnych przykładów:
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)
Tutaj wybraliśmy już utworzoną bazę danych za pomocą polecenia „UŻYJ pracownika_db”. Polecenie „Pracownik DESC” opisuje strukturę tabeli „pracownik”. Następnie użyliśmy polecenia SELECT, aby wyświetlić tabelę pracowników utworzoną w pliku worker_db.
Teraz napiszemy zapytanie, aby usunąć kolumnę zawierającą miasto pracownika w tabeli „pracownik” .
mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5 Duplicates: 0 Warnings: 0
Polecenie ALTER TABLE jest używane na stole pracowników z klauzulą DROP COLUMN w 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)
Kiedy ponownie zastosujemy polecenie DESC do tabeli „pracownik” zaraz po zastosowaniu polecenia ALTER opisanego powyżej, teraz widzimy, że Emp_City nie jest wymienione w wynikach. Pokazuje to, że kolumna o nazwie Emp_City została usunięta z tabeli pracowników.
Ponownie użyliśmy również polecenia SELECT. W wynikach polecenia SELECT ze wszystkich rekordów usuwane są wartości zawarte w Emp_City.
2. Usuń wiele kolumn z tabeli
Aby usunąć więcej niż jedną kolumnę tabeli, użyj składni podanej poniżej:
ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;
Tutaj
Musimy określić wszystkie nazwy kolumn, które mają zostać usunięte, za pomocą klauzuli DROP COLUMN.
Przykład:
Najpierw zobaczymy strukturę tabeli pracowników i znajdujące się w niej rekordy.
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)
Tutaj wybraliśmy już utworzoną bazę danych za pomocą polecenia „USE worker_db”. Polecenie „Pracownik DESC” opisuje strukturę tabeli „pracownik”. Następnie użyliśmy polecenia SELECT, aby wyświetlić tabelę pracowników utworzoną w pliku worker_db.
Teraz napiszemy zapytanie, aby usunąć kolumnę zawierającą wynagrodzenie pracownika i numer telefonu pracownika w tabeli „pracownik”.
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
Polecenie ALTER TABLE jest używane na stole pracowników z klauzulą DROP COLUMN na Emp_Salary i 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)
Kiedy ponownie zastosujemy polecenie DESC na tabeli „pracownik” zaraz po zastosowaniu polecenia ALTER opisanego powyżej, widzimy, że Emp_Salary i Emp_PhoneNo nie są wymienione w wynikach. Pokazuje to, że kolumna o nazwach Emp_Salary i Emp_PhoneNo została usunięta z tabeli pracowników. Następnie ponownie użyliśmy polecenia SELECT. W wynikach polecenia SELECT ze wszystkich rekordów usuwane są wartości zawarte w Emp_Salary i Emp_PhoneNo.