sql >> Databasteknik >  >> RDS >> Database

Hur man tar bort kolumn i tabell

Introduktion

  • I SQL krävs ibland att en kolumn i en tabell tas bort.
  • Användningen av ALTER TABLE kommandot med DROP COLUMN klausul kommer att tjäna syftet att ta bort/ta bort en kolumn från en tabell.
  • Det är möjligt att ta bort såväl enstaka som flera kolumner från en tabell.

1. Ta bort en enskild kolumn från en tabell

För att ta bort en enstaka kolumn i tabellen, använd syntaxen nedan:

ALTER TABLE TableName DROP COLUMN ColumnName;

Här,

  • Tabellnamn är namnet på tabellen vars kolumn ska tas bort.
  • Kolumnnamn efter DROP COLUMN-satsen är namnet på kolumnen som ska tas bort.

Exempel:

Tänk på en databas med namnet "anställd_db" med en tabell "anställd" skapad i den. I det här ämnet kommer vi att överväga den här tabellen och databasen för alla efterföljande exempel:

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)

Här har vi valt den redan skapade databasen med kommandot 'USE werknemer_db'. Kommandot "DESC anställd" beskriver strukturen för tabellen "anställd". Sedan har vi använt SELECT-kommandot för att visa medarbetartabellen skapad i anställd_db.

Nu kommer vi att skriva en fråga för att ta bort en kolumn som innehåller anställds stad i tabellen "anställd" .

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

ALTER TABLE-kommandot används på anställdtabell med DROP COLUMN-satsen på 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)

När vi återigen applicerar DESC-kommandot på 'employee'-tabellen precis efter att ha tillämpat ALTER-kommandot som skrivits ovan, kan vi nu se att Emp_City inte finns med i resultaten. Detta visar att kolumnen med namnet Emp_City nu är borttagen från personaltabellen.

Vi har också använt kommandot SELECT igen. I resultaten av SELECT-kommandot tas värdena i Emp_City bort från alla poster.

2. Ta bort flera kolumner från en tabell

För att ta bort mer än en kolumn i tabellen, använd syntaxen nedan:

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

Här,

Vi måste ange alla kolumnnamn som ska tas bort, med DROP COLUMN-satsen.

Exempel:

För det första kommer vi att se strukturen för medarbetartabellen och de poster som finns i den.

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)

Här har vi valt den redan skapade databasen med kommandot 'USE werknemer_db'. Kommandot "DESC anställd" beskriver strukturen för tabellen "anställd". Sedan har vi använt SELECT-kommandot för att visa medarbetartabellen skapad i anställd_db.

Nu kommer vi att skriva en fråga för att ta bort en kolumn som innehåller anställdas lön och anställdas telefonnummer i tabellen "anställd".

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-kommandot används på personaltabellen med DROP COLUMN-satsen på Emp_Salary och 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)

När vi återigen applicerar DESC-kommandot på 'employee'-tabellen precis efter att ha tillämpat ALTER-kommandot som skrivits ovan, kan vi se att Emp_Salary och Emp_PhoneNo inte är listade i resultaten. Detta visar att kolumnen som heter Emp_Salary och Emp_PhoneNo är nu raderad från personaltabellen. Sedan har vi även använt kommandot SELECT igen. I resultaten av SELECT-kommandot tas värdena i Emp_Salary och Emp_PhoneNo bort från alla poster.


  1. Oracle Text fungerar inte med NVARCHAR2. Vad mer kan vara otillgängligt?

  2. Oracle:Hur man räknar null- och icke-nullrader

  3. N:e högsta lönen

  4. Generera ett antal nummer i MySQL