DROP TABLE entfernt eine Tabelle vollständig: Struktur, Indizes, Constraints und alle Daten sind unwiderruflich weg. Wer nur den Inhalt leeren will, nutzt DELETE oder TRUNCATE; wer die Struktur selbst aufgeben will, braucht DROP TABLE. Wer die Struktur dagegen nur anpassen möchte, verwendet ALTER TABLE.

Syntax und Sicherungen

DROP TABLE kunden;
DROP TABLE IF EXISTS kunden;

IF EXISTS verhindert den Fehler, wenn die Tabelle fehlt – praktisch für wiederholbare Setup-Skripte. Wichtig: In MySQL/MariaDB ist DROP TABLE nicht zurückrollbar (impliziter Commit); in PostgreSQL lässt es sich dagegen in einer Transaktion rückgängig machen.

Abhängigkeiten: RESTRICT und CASCADE

Verweisen andere Objekte auf die Tabelle (Fremdschlüssel, Views, Stored Procedures), verhält sich DROP unterschiedlich:

  • RESTRICT (Standard in PostgreSQL): Abbruch mit Fehler, wenn Abhängigkeiten existieren.
  • CASCADE: löscht abhängige Objekte automatisch mit – praktisch, aber gefährlich, weil auch Fremdschlüssel-Spalten in anderen Tabellen oder Views verschwinden.

Ein DROP TABLE kunden CASCADE kann also stillschweigend viel mehr entfernen als nur die eine Tabelle. Die Verweise, die dabei brechen, entstehen über Fremdschlüssel.

DROP vs. TRUNCATE vs. DELETE

  • DELETE: entfernt Zeilen einzeln mit WHERE, ist DML, lässt sich in Transaktionen zurückrollen, behält Struktur und Auto-Increment-Stand – Details bei SQL DELETE.
  • TRUNCATE TABLE: leert alle Zeilen in einem Rutsch, meist ohne Transaktionslog pro Zeile (schneller), setzt Auto-Increment zurück, behält aber die Struktur; in MySQL impliziter Commit.
  • DROP TABLE: entfernt auch die Struktur selbst – die Tabelle existiert danach nicht mehr und muss mit CREATE TABLE neu angelegt werden.

Temporäre Tabellen

DROP TEMPORARY TABLE IF EXISTS tmp_auswertung; entfernt nur temporäre Tabellen der eigenen Session – die Option verhindert, versehentlich eine gleichnamige normale Tabelle zu löschen. Wie solche temporären Tabellen angelegt und verwendet werden, erklärt der eigene Artikel.

Praxis-Tipps

  • Vorher sichern: Vor einem DROP auf einer Produktionsdatenbank gehört ein Backup oder ein CREATE TABLE kopie AS SELECT – Wiederherstellen ist sonst nur über die Migration-Historie möglich.
  • In Skripten: DROP TABLE IF EXISTS vor CREATE TABLE macht Setup-Skripte wiederholbar.
  • Fremdschlüssel-Ketten prüfen: Wer eine Tabelle mit eingehenden Verweisen löscht, muss die abhängigen Tabellen kennen – sonst brechen Schema und Anwendung still.