MySQL - Temporäre Tabellen
Die temporären Tabellen können in einigen Fällen sehr nützlich sein, um temporäre Daten zu speichern. Das Wichtigste, was für temporäre Tabellen bekannt sein sollte, ist, dass sie gelöscht werden, wenn die aktuelle Clientsitzung beendet wird.
Was sind temporäre Tabellen?
Temporäre Tabellen wurden in MySQL Version 3.23 hinzugefügt. Wenn Sie eine ältere Version von MySQL als 3.23 verwenden, können Sie die temporären Tabellen nicht verwenden, aber Sie können verwendenHeap Tables.
Wie bereits erwähnt, halten temporäre Tabellen nur so lange, wie die Sitzung aktiv ist. Wenn Sie den Code in einem PHP-Skript ausführen, wird die temporäre Tabelle automatisch zerstört, wenn die Ausführung des Skripts abgeschlossen ist. Wenn Sie über das MySQL-Client-Programm mit dem MySQL-Datenbankserver verbunden sind, bleibt die temporäre Tabelle bestehen, bis Sie den Client schließen oder die Tabelle manuell zerstören.
Beispiel
Das folgende Programm ist ein Beispiel für die Verwendung der temporären Tabelle. Der gleiche Code kann in PHP-Skripten mit dem verwendet werdenmysql_query() Funktion.
mysql> CREATE TEMPORARY TABLE SalesSummary (
-> product_name VARCHAR(50) NOT NULL
-> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
-> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
-> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO SalesSummary
-> (product_name, total_sales, avg_unit_price, total_units_sold)
-> VALUES
-> ('cucumber', 100.25, 90, 2);
mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber | 100.25 | 90.00 | 2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
Wenn Sie eine SHOW TABLESBefehl, dann würde Ihre temporäre Tabelle nicht in der Liste aufgeführt. Wenn Sie sich jetzt von der MySQL-Sitzung abmelden und dann eine ausgebenSELECTBefehl, dann finden Sie keine Daten in der Datenbank verfügbar. Auch Ihre temporäre Tabelle wird nicht existieren.
Temporäre Tabellen löschen
Standardmäßig werden alle temporären Tabellen von MySQL gelöscht, wenn Ihre Datenbankverbindung beendet wird. Wenn Sie sie jedoch zwischendurch löschen möchten, geben Sie das ausDROP TABLE Befehl.
Das folgende Programm ist ein Beispiel zum Löschen einer temporären Tabelle:
mysql> CREATE TEMPORARY TABLE SalesSummary (
-> product_name VARCHAR(50) NOT NULL
-> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
-> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
-> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO SalesSummary
-> (product_name, total_sales, avg_unit_price, total_units_sold)
-> VALUES
-> ('cucumber', 100.25, 90, 2);
mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber | 100.25 | 90.00 | 2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
mysql> DROP TABLE SalesSummary;
mysql> SELECT * FROM SalesSummary;
ERROR 1146: Table 'TUTORIALS.SalesSummary' doesn't exist