Eine temporäre Tabelle (englisch temporary table) existiert nur für die Dauer einer Datenbanksitzung. Sie eignet sich für Zwischenergebnisse, die bei einer komplexen Auswertung mehrfach gebraucht werden, ohne das Schema dauerhaft zu verändern.

Anlegen und nutzen

CREATE TEMPORARY TABLE zwischenspeicher (
    artikel_id INT,
    anzahl DECIMAL(10,2)
);
INSERT INTO zwischenspeicher SELECT ...;

Andere Verbindungen sehen die Tabelle nicht – jede Session hat ihren eigenen Bereich. Zwei parallele Sitzungen dürfen daher dieselbe temporäre Tabelle anlegen, ohne sich zu stören. Beim Trennen der Verbindung wird sie automatisch gelöscht; wer sie vorher entfernen will, nutzt DROP TEMPORARY TABLE.

Besonderheiten je Datenbank

  • MySQL/MariaDB: Eine temporäre Tabelle darf denselben Namen wie eine normale Tabelle tragen – innerhalb der Session verdeckt sie die normale. Sie wird nicht im üblichen Tabellenverzeichnis, sondern im Session-Kontext geführt.
  • PostgreSQL: ON COMMIT DROP löscht die Tabelle bereits am Ende der Transaktion, ON COMMIT PRESERVE ROWS behält die Daten bis zum Session-Ende. Ohne Option bleiben Zeilen bis zum Sitzungsende erhalten.

Wann sinnvoll?

Temporäre Tabellen helfen bei mehrstufigen Berechnungen, beim Aufbereiten von Rohdaten oder wenn ein Zwischenergebnis in mehreren Abfragen weiterverwendet wird. Wer nur innerhalb einer einzigen Abfrage Zwischenergebnisse braucht, ist mit einem SQL CTE oft besser bedient – der verschwindet automatisch nach der Abfrage und braucht kein eigenes CREATE.

Das Anlegen folgt der normalen Tabellensyntax aus SQL CREATE TABLE; die Datentypen der Spalten wählt man wie bei SQL Datentypen beschrieben. Das komplette Entfernen einer Tabelle erklärt SQL DROP TABLE.

Verwandte Grundlagen: SQL Datentypen, SQL TRUNCATE.