Database
 sql >> Datenbank >  >> RDS >> Database

So löschen Sie eine Spalte in einer Tabelle

Einführung

  • In SQL ist es manchmal erforderlich, eine Spalte einer Tabelle zu löschen.
  • Die Verwendung von ALTER TABLE Befehl mit DROP COLUMN Klausel dient dem Zweck, eine Spalte aus einer Tabelle zu löschen/entfernen.
  • Es ist möglich, sowohl einzelne als auch mehrere Spalten aus einer Tabelle zu entfernen.

1. Löschen Sie eine einzelne Spalte aus einer Tabelle

Um eine einzelne Spalte der Tabelle zu löschen, verwenden Sie die folgende Syntax:

ALTER TABLE TableName DROP COLUMN ColumnName;

Hier,

  • TableName ist der Name der Tabelle, deren Spalte gelöscht werden soll.
  • ColumnName nach der DROP COLUMN-Klausel ist der Name der zu löschenden Spalte.

Beispiel:

Stellen Sie sich eine Datenbank mit dem Namen „employee_db“ vor, in der eine Tabelle „employee“ erstellt wurde. In diesem Thema betrachten wir diese Tabelle und Datenbank für alle nachfolgenden Beispiele:

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)

Hier haben wir die bereits erstellte Datenbank mit dem Befehl „USE employee_db“ ausgewählt. Der Befehl „DESC Mitarbeiter“ beschreibt die Struktur der Tabelle „Mitarbeiter“. Dann haben wir den SELECT-Befehl verwendet, um die in employee_db.

erstellte Employee-Tabelle anzuzeigen

Jetzt schreiben wir eine Abfrage, um eine Spalte mit dem Ort des Mitarbeiters in der Tabelle „Mitarbeiter“ zu löschen .

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

Der ALTER TABLE-Befehl wird für die Mitarbeitertabelle mit der DROP COLUMN-Klausel für Emp_City verwendet.

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)

Wenn wir den DESC-Befehl erneut auf die Tabelle „Mitarbeiter“ anwenden, direkt nachdem wir den oben beschriebenen ALTER-Befehl angewendet haben, können wir jetzt sehen, dass Emp_City nicht in den Ergebnissen aufgeführt ist. Dies zeigt, dass die als Emp_City benannte Spalte jetzt aus der Mitarbeitertabelle gelöscht wird.

Wir haben auch wieder den SELECT-Befehl verwendet. In den Ergebnissen des SELECT-Befehls werden aus allen Datensätzen die in Emp_City enthaltenen Werte entfernt.

2. Mehrere Spalten aus einer Tabelle löschen

Um mehr als eine Spalte der Tabelle zu löschen, verwenden Sie die folgende Syntax:

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

Hier,

Wir müssen alle zu entfernenden Spaltennamen mit der DROP COLUMN-Klausel angeben.

Beispiel:

Zuerst sehen wir uns die Struktur der Mitarbeitertabelle und die darin enthaltenen Datensätze an.

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)

Hier haben wir die bereits erstellte Datenbank mit dem Befehl „USE employee_db“ ausgewählt. Der Befehl „DESC Mitarbeiter“ beschreibt die Struktur der Tabelle „Mitarbeiter“. Dann haben wir den SELECT-Befehl verwendet, um die in employee_db.

erstellte Employee-Tabelle anzuzeigen

Jetzt schreiben wir eine Abfrage, um eine Spalte mit dem Gehalt und der Telefonnummer des Mitarbeiters in der Tabelle „Mitarbeiter“ zu löschen.

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

Der ALTER TABLE-Befehl wird für die Mitarbeitertabelle mit der DROP COLUMN-Klausel für Emp_Salary und Emp_PhoneNo verwendet.

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)

Wenn wir den DESC-Befehl erneut auf die Tabelle „Mitarbeiter“ anwenden, unmittelbar nachdem wir den oben beschriebenen ALTER-Befehl angewendet haben, können wir sehen, dass Emp_Salary und Emp_PhoneNo nicht in den Ergebnissen aufgeführt sind. Dies zeigt, dass die als Emp_Salary und Emp_PhoneNo bezeichneten Spalten jetzt aus der Mitarbeitertabelle gelöscht werden. Dann haben wir auch wieder den SELECT-Befehl verwendet. In den Ergebnissen des SELECT-Befehls werden aus allen Datensätzen die in Emp_Salary und Emp_PhoneNo enthaltenen Werte entfernt.