So erstellen Sie eine temporäre Tabelle in SQL
Einführung in temporäre Tabellen
- Temporäre Tabelle ist eine Tabelle, die verwendet wird, um temporäre Daten zu speichern, die in derselben Clientsitzung weiterverwendet werden können.
- Standardmäßig wird die temporäre Tabelle entfernt, sobald die Client-Sitzung beendet wird.
- Temporäre Tabelle kann explizit mit der Anweisung „DROP TABLE“ entfernt werden. Diese Tabelle ist nur für ihren Ersteller zugänglich.
- Mehr als eine temporäre Tabelle kann in derselben Sitzung existieren, aber sie müssen unterschiedliche Namen haben, wenn sie sich in derselben Sitzung befinden. Aber wenn sich die temporären Tabellen in einer anderen Sitzung befinden, können die Tabellen mit denselben Namen existieren.
- Temporäre Tabellen können denselben Namen haben wie normale Tabellen innerhalb derselben Datenbank. Wenn eine solche Bedingung vorliegt, werden nach der Erstellung der temporären Tabelle alle ausgeführten Abfragen nun auf die temporäre Tabelle statt auf die normale Tabelle verweisen. Aber sobald diese temporäre Tabelle, die mit demselben Namen erstellt wurde, entfernt wird, ist die normale Tabelle zugänglich und die Abfragen werden nun auf die normale Tabelle verweisen.
- Erstellen einer temporären Tabelle
Syntax:
CREATE TEMPORARY TABLE TABLENAME (Spaltenname1 Datentyp (Größe), Spaltenname2 Datentyp (Größe), SpaltennameN Datentyp (Größe));
Beispiel:
Wir haben bereits eine Datenbank mit dem Namen „employeedb“ und eine Tabelle mit dem Namen „employee“ in dieser Datenbank. Jetzt erstellen wir eine temporäre Tabelle mit dem gleichen Namen „employee“.
mysql> USE employeedb; Database changed mysql> CREATE TEMPORARY TABLE employee(Emp_ID INT, Emp_Name VARCHAR(20),Emp_Salary INT); Query OK, 0 rows affected (0.32 sec) mysql> SELECT *FROM employee; Empty set (0.00 sec) mysql> INSERT INTO employee VALUES(1,"Mayuri",45000); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO employee VALUES(2,"Sakshi",50000); Query OK, 1 row affected (0.04 sec) mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Mayuri | 45000 | | 2 | Sakshi | 50000 | +--------+----------+------------+ 2 rows in set (0.00 sec)
- Jetzt haben wir eine neue Tabelle mit dem Namen „employee“ in der Datenbank „employeedb“ erstellt.
- Also, direkt nach der Erstellung der temporären Tabelle, als wir versuchten, die Daten aus der Mitarbeitertabelle abzurufen, erhielten wir eine leere Ergebnismenge. Dies geschieht, weil die in der SELECT-Abfrage angegebene Mitarbeitertabelle jetzt auf die neu erstellte temporäre Tabelle „Mitarbeiter“ verweist und nicht auf die vorhandene Tabelle „Mitarbeiter“.
- Wenn wir danach die INSERT-Abfrage für die Mitarbeitertabelle ausgeführt haben, wird diese Abfrage auch für die temporäre Tabelle „Mitarbeiter“ ausgeführt, da wir diese Abfrage nach der Erstellung der temporären Tabelle ausführen.
- Löschen Sie eine temporäre Tabelle
Syntax:
DROP TABLE TABLENAME;
Beispiel:
Jetzt löschen wir eine temporäre Tabelle mit dem Namen „employee“.
mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Mayuri | 45000 | | 2 | Sakshi | 50000 | +--------+----------+------------+ 2 rows in set (0.00 sec) mysql> DROP TABLE employee; Query OK, 0 rows affected (0.08 sec) mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Mayuri | 40000 | | 2 | Mayuri | 40000 | | 3 | Mayuri | 40000 | | 4 | Mayuri | 40000 | | 5 | Mayuri | 40000 | +--------+----------+------------+ 5 rows in set (0.09 sec)
- Wenn wir die SELECT-Abfrage ausführen, erhalten wir zwei Datensätze als Ausgabe, da wir diese Abfrage nach der Erstellung der temporären Tabelle ausgeführt haben. Diese SELECT-Abfrage wird also auf der temporären Tabelle ausgeführt.
- Danach haben wir die Drop-Abfrage ausgeführt. Mit dem DROP-Befehl wird die neu erstellte Mitarbeitertabelle (temporäre Tabelle) gelöscht.
- Nochmals, wenn wir die SELECT-Abfrage ausführen, wird sie jetzt auf unsere Mitarbeitertabelle (ursprüngliche Tabelle) angewendet, nicht auf die temporäre Tabelle, da die temporäre Tabelle bereits aus der Datenbank entfernt wurde.