12 12 Stimmen

MySQL: Alle Daten aus Tabelle löschen: Unterschied zwischen TRUNCATE, DELETE und DROP

Tutorial von Stefan Trost | 10.11.2011 um 22:45 Uhr

In diesem kleinen Tutorial möchten wir uns den Unterschied zwischen den MySQL Befehlen TRUNCATE, DELETE und DROP näher ansehen. Alle 3 Befehle haben mit dem Löschen von Daten aus Tabellen oder dem Löschen ganzer Tabellen zu tun.

DELETE: Einzelne Datensätze löschen

Der bekannteste Befehl ist DELETE. Mit DELETE ist es möglich, einzelne Datensätze aus einer Tabelle zu löschen. Ein Beispiel haben wir hier:

DELETE FROM tabelle WHERE id=2;
DELETE FROM tabelle WHERE id<7;
DELETE FROM tabelle WHERE name='Anton';
DELETE FROM tabelle WHERE name LIKE '%abc%';

Dies sind vier MySQL Anweisungen, die jeweils Datensätze aus der Tabelle "tabelle" nach bestimmten Kriterien löschen. Der erste Befehl löscht den Datensatz mit der id 2, der zweite Befehl alle Datensätze, die eine id kleiner als 7 haben und der dritte Befehl löscht den oder die Datensätze, die in dem Feld "name" den Namen "Anton" stehen haben. Der letzte Befehl wiederrum löscht alle Felder, in denen im Feld "name" die Zeichenkette "abc" vorkommt.

In all diesen Beispielen haben wir hinter WHERE genau beschrieben, welche Datensätze gelöscht werden. Wir können aber den WHERE-Bereich auch weglassen:

DELETE FROM tabelle;

Diese Anweisung hat keine Einschränkungen, nach welchen Kriterien Datensätze gelöscht werden sollen. Daher werden alle Datensätze aus der Tabelle unwiderruflich gelöscht. Die ganze Tabelle ist danach leer.

Unterschied zwischen TRUNCATE und DELETE

Auch mit dem Befehl TRUNCATE lassen sich alle Datensätze aus einer Tabelle löschen. Den Befehl kann man folgendermaßen aufrufen:

TRUNCATE TABLE tabelle;

Dieser Befehl löscht alle Daten unwiderruflich aus der Tabelle "tabelle" und ist damit von der Wirkung her identisch mit "DELETE FROM tabelle". Die technische Umsetzung ist aber anders. Während DELETE alle Datensätze einzeln löscht, geht TRUNCATE anders vor: TRUNCATE löscht zuerst die gesamte Tabelle inklusive der Spaltendefinition und legt danach eine neue identische leere Tabelle ohne Daten an. 

Dadurch ist TRUNCATE um einiges schneller als die DELETE Anweisung. In der Natur der Sache liegt, wie die beiden DELETE Befehle mit AUTO_INCREMENT Spalten umgehen. Bei TRUNCATE wird der AUTO_INCREMENT Wert auf 1 zurückgesetzt, da die komplette Tabelle neu aufgebaut wird. Bei der DELETE Anweisung wird weitergezählt, wo aufgehört wurde. Will man seine AUTO_INCREMENT Werte also behalten, sollte man trotz der schlechteren Performance lieber auf DELETE zurückgreifen.

Komplette Tabelle mit DROP löschen

Der letzte Befehl, den wir uns ansehen wollen, heißt DROP:

DROP TABLE tabelle;
DROP TABLE tabelle1, tabelle2;
DROP TABLE IF EXISTS tabelle1, tabelle2;

DROP löscht die gesamte Tabelle inklusive Daten und Definition der Tabellenspalten. Die gesamte Tabelle ist danach also verschwunden und kann nicht widerhergestellt werden! Bei DELETE und TRUNCATE dagegen werden nur die Daten aus der Tabelle gelöscht, die Definitionen aus den Spalten dagegen bleiben erhalten.

Man verwendet DROP wie im Beispiel beschrieben. In der ersten Zeile wird die Tabelle "tabelle" gelöscht, in der zweiten Zeile sieht man, wie man mehrere Tabellen gleichzeitig löschen kann. In der dritten Tabelle ist "IF EXISTS" hinzugefügt. Diese Erweiterung sorgt dafür, dass es zu keiner Fehlermeldung kommt, wenn man versucht eine Tabelle zu löschen, die gar nicht existiert.

Warnung

Sie sollten mit den Befehlen DELETE, TRUNCATE und DROP sehr vorsichtig umgehen, da die Datensätze oder die ganzen Tabellen nach dem Löschen nicht mehr wieder hergestellt werden können. Seien Sie sich also sicher, ob Sie die Daten wirklich nicht mehr benötigen und machen Sie sicherheitshalber immer eine Sicherheitslopie vor der Benutzung.

AntwortenPositivNegativ

Über den Autor

Avatar AutorSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen | Nachricht

 

Ähnliche Themen

Wichtiger Hinweis

Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.