Temporäre Tabellen in MySQL

MySQL temporäre Tabellen sind sehr nützlich, wenn wir einige temporäre Daten speichern müssen.

Temporäre Tabellen sind nur für die aktuelle Verbindung sichtbar. Wenn die Verbindung geschlossen wird, löscht MySQL die Tabellen automatisch und gibt den gesamten Speicherplatz frei.

In MySQL ist eine temporäre Tabelle eine Tabelle, die in der aktuellen Sitzung existiert und automatisch zerstört wird, wenn die Sitzung endet.

MySQL temporäre Tabellen sind nur für die aktuelle Verbindung sichtbar. Wenn Sie ein PHP-Skript verwenden, um eine temporäre MySQL-Tabelle zu erstellen, wird die temporäre Tabelle auch automatisch zerstört, nachdem das PHP-Skript die Ausführung beendet hat.

Wenn Sie andere MySQL-Clientprogramme verwenden, um eine Verbindung zum MySQL-Datenbankserver herzustellen und temporäre Tabellen zu erstellen, werden die temporären Tabellen erst zerstört, wenn Sie das Clientprogramm schließen. Natürlich können Sie sie auch manuell zerstören.

Temporäre Tabellen erstellen

CREATE TEMPORARY TABLE temp_table_name (
  column1 datatype,
  column2 datatype,
  ...
);

Oder in Kurzform geschrieben:

CREATE TEMPORARY TABLE temp_table_name AS
SELECT column1, column2, ...
FROM source_table
WHERE condition;

Daten in temporäre Tabellen einfügen

INSERT INTO temp_table_name (column1, column2, ...)
VALUES (value1, value2, ...);

Temporäre Tabellen abfragen

SELECT * FROM temp_table_name;

Temporäre Tabellen ändern

Das Ändern temporärer Tabellen ähnelt dem Ändern normaler Tabellen. Sie können den Befehl ALTER TABLE verwenden.

ALTER TABLE temp_table_name
ADD COLUMN new_column datatype;

Temporäre Tabellen löschen

Temporäre Tabellen werden automatisch zerstört, wenn die Sitzung endet, aber Sie können DROP TABLE verwenden.

DROP TEMPORARY TABLE IF EXISTS temp_table_name;

Beispiel

Beispiel

-- Temporäre Tabelle erstellen
CREATE TEMPORARY TABLE temp_orders AS
SELECT * FROM orders order_id customer_id >= '2023-01-01';

-- Temporäre Tabelle abfragen
SELECT * FROM orders

-- Daten in die temporäre Tabelle einfügen
INSERT INTO temp_orders (order_id, customer_id, order_date)
VALUES (1001, 1, '2023-01-05');

-- Temporäre Tabelle abfragen
SELECT * FROM orders

-- Temporäre Tabelle löschen
DROP TEMPORARY TABLE IF EXISTS temp_orders;

Temporäre Tabellen sind sehr nützlich, wenn Sie Zwischenergebnismengen speichern oder komplexe Abfragen innerhalb einer Sitzung ausführen müssen.

Der Gültigkeitsbereich einer temporären Tabelle ist auf die Sitzung beschränkt, die sie erstellt hat. Andere Sitzungen können nicht direkt auf die temporäre Tabelle zugreifen oder sie referenzieren. Wenn Sie Daten zwischen mehreren Sitzungen gemeinsam nutzen möchten, können Sie statt temporärer Tabellen gewöhnliche Tabellen in Betracht ziehen.

Beachten Sie, dass temporäre Tabellen am Ende der Sitzung automatisch gelöscht werden, aber Sie können sie auch explizit mit DROP TEMPORARY TABLE löschen, um Ressourcen früher freizugeben.

Beispiel

Das Folgende zeigt ein einfaches Beispiel für die Verwendung einer temporären MySQL-Tabelle. Der folgende SQL-Code kann auf die Funktion mysql_query() in einem PHP-Skript angewendet werden.

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 den BefehlSHOW TABLESverwenden, um die Liste der Datentabellen anzuzeigen, werden Sie die Tabelle SalesSummary nicht sehen können.

Wenn Sie die aktuelle MySQL-Sitzung beenden und dann den BefehlSELECTverwenden, um die Daten der ursprünglich erstellten temporären Tabelle zu lesen, werden Sie feststellen, dass die Tabelle nicht mehr in der Datenbank vorhanden ist, da die temporäre Tabelle bereits beim Beenden zerstört wurde.


Löschen von temporären MySQL-Tabellen

Standardmäßig werden temporäre Tabellen automatisch gelöscht, wenn Sie die Verbindung zur Datenbank trennen. Natürlich können Sie auch den Befehl DROP TABLE in der aktuellen MySQL-Sitzung verwenden, um temporäre Tabellen manuell zu löschen.

Das Folgende ist ein Beispiel für das manuelle 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 'EXAMPLE.SalesSummary' doesn't exist
Andere Erweiterungen