sql >> Databáze >  >> RDS >> Database

Jak odstranit sloupec v tabulce

Úvod

  • V SQL je někdy nutné odstranit sloupec tabulky.
  • Použití ALTER TABLE pomocí příkazu DROP SLOUPEC doložka bude sloužit k odstranění/odstranění sloupce z tabulky.
  • Z tabulky je možné odstranit jeden i více sloupců.

1. Smažte jeden sloupec z tabulky

Chcete-li odstranit jeden sloupec tabulky, použijte syntaxi uvedenou níže:

ALTER TABLE TableName DROP COLUMN ColumnName;

Tady,

  • TableName je název tabulky, jejíž sloupec má být smazán.
  • ColumnName za klauzulí DROP COLUMN je název sloupce, který má být odstraněn.

Příklad:

Představte si databázi s názvem „employee_db“ s tabulkou „zaměstnanec“ vytvořenou v ní. V tomto tématu budeme u všech následujících příkladů uvažovat o této tabulce a databázi:

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)

Zde jsme vybrali již vytvořenou databázi příkazem „USE zamestnanec_db“. Příkaz „DESC zaměstnanec“ popisuje strukturu tabulky ‚zaměstnanců‘. Poté jsme pomocí příkazu SELECT zobrazili tabulku zaměstnanců vytvořenou v zamestnanecké_db.

Nyní napíšeme dotaz na odstranění sloupce obsahujícího město zaměstnance v tabulce ‚zaměstnanec‘ .

mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5  Duplicates: 0  Warnings: 0

Příkaz ALTER TABLE se používá u stolu zaměstnanců s klauzulí DROP COLUMN na 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)

Když znovu použijeme příkaz DESC na tabulku ‚zaměstnanec‘ hned po aplikaci příkazu ALTER napsaného výše, nyní vidíme, že Emp_City není ve výsledcích uvedeno. To ukazuje, že sloupec s názvem Emp_City je nyní odstraněn z tabulky zaměstnanců.

Také jsme znovu použili příkaz SELECT. Ve výsledcích příkazu SELECT jsou ze všech záznamů odstraněny hodnoty obsažené v Emp_City.

2. Odstraňte z tabulky více sloupců

Chcete-li odstranit více než jeden sloupec tabulky, použijte syntaxi uvedenou níže:

ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;

Tady,

Musíme specifikovat všechny názvy sloupců, které mají být odstraněny, pomocí klauzule DROP COLUMN.

Příklad:

Nejprve uvidíme strukturu tabulky zaměstnanců a záznamy v ní přítomné.

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)

Zde jsme vybrali již vytvořenou databázi příkazem „USE zamestnanec_db“. Příkaz „DESC zaměstnanec“ popisuje strukturu tabulky ‚zaměstnanců‘. Poté jsme pomocí příkazu SELECT zobrazili tabulku zaměstnanců vytvořenou v zamestnanecké_db.

Nyní napíšeme dotaz na odstranění sloupce obsahujícího plat zaměstnance a telefonní číslo zaměstnance v tabulce ‚zaměstnanec‘.

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

Příkaz ALTER TABLE se používá u stolu zaměstnanců s klauzulí DROP COLUMN na Emp_Salary a 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)

Když znovu použijeme příkaz DESC na tabulku ‚zaměstnanec‘ hned po aplikaci příkazu ALTER napsaného výše, vidíme, že Emp_Salary a Emp_PhoneNo nejsou ve výsledcích uvedeny. To ukazuje, že sloupec s názvem Emp_Salary a Emp_PhoneNo je nyní odstraněn z tabulky zaměstnanců. Poté jsme také znovu použili příkaz SELECT. Ve výsledcích příkazu SELECT jsou ze všech záznamů odstraněny hodnoty obsažené v Emp_Salary a Emp_PhoneNo.


  1. ORA-01843 není platný měsíc - Porovnání dat

  2. MariaDB SUBSTR() Vysvětleno

  3. Přístup k ladění indexu – 1. část

  4. Po odstranění záznamů na SQL Serveru resetujte seed identity