Empfohlen, 2020

Tipp Der Redaktion

Unterschied zwischen DELETE und TRUNCATE in SQL

DELETE und TRUNCATE sind Befehle, mit denen Tupel aus einer Beziehung entfernt werden. In vielen Zusammenhängen unterscheiden sie sich jedoch. In SQL ist der Befehl DELETE ein Befehl für die Datenmanipulationssprache, während der Befehl TRUNCATE ein Befehl für die Datendefinitionssprache ist. Der Unterschied zwischen DELETE und TRUNCATE besteht jedoch darin, dass DELETE in der Lage ist, bestimmte Tupel aus einer Beziehung zu entfernen. Der Befehl TRUNCATE entfernt dagegen ganze Tupel aus einer Beziehung.

Wir sollten hier nicht aufhören, es gibt viele andere Unterschiede zwischen DELETE und TRUNCATE. Lassen Sie uns diese mit Hilfe der unten gezeigten Vergleichstabelle besprechen.

Vergleichstabelle

Grundlage für den VergleichLÖSCHENKÜRZEN
BasicSie können das Tupel angeben, das Sie löschen möchten.Es löscht alle Tupel aus einer Beziehung.
SpracheDELETE ist ein Befehl zur Datenmanipulationssprache.TRUNCATE ist ein Befehl für die Datendefinitionssprache.
WOHERDer Befehl DELETE kann eine WHERE-Klausel enthalten.Der Befehl TRUNCATE hat keine WHERE-Klausel.
AuslösenDer Befehl DELETE aktiviert den auf die Tabelle angewendeten Trigger und bewirkt, dass diese ausgelöst werden.Der Befehl TRUNCATE aktiviert die Auslöser nicht zum Auslösen.
StreichungMit dem Befehl DELETE werden die Tupel nacheinander entfernt.TRUNCATE löscht die gesamte Datenseite, die die Tupel enthält.
SperrenDELETE-Befehl sperrt die Zeile / das Tupel, bevor es gelöscht wird.TRUNCATE-Befehlssperrdatenseite vor dem Löschen von Tabellendaten.
GeschwindigkeitDer DELETE-Befehl wirkt langsamer als TRUNCATE.TRUNCATE ist schneller als DELETE.
TransaktionDELETE zeichnet das Transaktionsprotokoll für jedes gelöschte Tupel auf.TRUNCATE-Datensatztransaktionsprotokoll für jede gelöschte Datenseite.
WiederherstellenAuf den Befehl DELETE kann entweder COMMIT oder ROLLBACK folgen.Der Befehl TRUNCATE kann nicht ROLLBACK sein.

Definition von DELETE

DELETE ist ein DML-Befehl ( Data Manipulation Language ). Die Aufgabe des DELETE-Befehls ist das Löschen oder Entfernen der Tupel aus einer Tabelle oder einer Beziehung. Mit DELETE können wir das gesamte Tupel mit all seinen Attributwerten aus einer Relation entfernen. DELETE entfernt den Wert eines bestimmten Attributs eines Tupels nicht aus der Beziehung.

Sie können die Tupel, die Sie aus einer Tabelle löschen möchten, mithilfe der WHERE- Klausel filtern. Wenn Sie in der DELETE-Anweisung eine WHERE-Klausel angeben, werden nur die Tupel gelöscht, die die Bedingung der WHERE-Klausel erfüllen. Wenn Sie jedoch nicht die WHERE-Klausel in der DELETE-Anweisung angeben, werden standardmäßig alle Tupel aus einer Beziehung gelöscht oder entfernt. Die WHERE-Klausel in der DELETE-Anweisung kann verschachtelte SELECT-FROM-WHERE- Anweisungen enthalten.

Die Syntax des DELETE-Befehls lautet wie folgt:

DELETE FROM Tabellenname WHERE [ Bedingung ];

Der Befehl DELETE kann nur für eine einzelne Beziehung oder Tabelle gleichzeitig ausgeführt werden. Wenn Sie ein Tupel aus verschiedenen Relationen löschen möchten, müssen Sie für jedes ein anderes DELETE-Kommando setzen. Das Löschen eines Tupels aus einer Relation kann jedoch die referentielle Integrität der Datenbank verletzen, die mit Hilfe von Triggern aufgelöst werden kann. Wenn der DELETE-Befehl die referentielle Integrität verletzt, werden alle referenziellen Auslöser (sofern angegeben) aktiviert, die die Löschaktion für Tupel unterschiedlicher Beziehung ausgeben, die auf die gelöschten Tupel verweist.

Der Befehl DELETE sperrt zuerst die zu löschende Zeile oder das Tupel und löscht dann das Tupel nacheinander . Daher sind mehr Sperren und Ressourcen erforderlich, die die Geschwindigkeit verlangsamen . Sie können die durch die DELETE-Anweisung vorgenommenen Änderungen mit COMMIT dauerhaft machen oder die Datenbank mit ROLLBACK zurücksetzen.

Definition von TRUNCATE

TRUNCATE ähnelt dem DELETE-Befehl, da es auch Tupel aus einer Beziehung löscht. Der Unterschied besteht darin, dass ganze Tupel aus einer Beziehung gelöscht werden. Wenn der Befehl TRUNCATE ausgeführt wird, werden die gesamten Daten aus der Tabelle gelöscht. Jedes Tupel wird zusammen mit allen Attributwerten aus der Tabelle entfernt. Die Struktur der Tabelle ist jedoch noch in der Datenbank vorhanden. Sie können also die Tupel erneut in die Tabelle eingeben. TRUNCATE ist ein Befehl für die Datendefinitionssprache.

Die Syntax des Befehls TRUNCATE lautet wie folgt:

TRUNCATE TABLE Tabellenname ;

Wie DELETE arbeitet TRUNCATE nicht zeilenweise mit Tabellendaten. Stattdessen werden die Datenseiten bearbeitet, auf denen die Tabellendaten gespeichert sind. Wenn TRUNCATE nun Datenseiten löscht, muss die Sperre für Datenseiten anstelle von Tupeln übernommen werden. Daher werden weniger Sperren und Ressourcen benötigt, was TRUNCATE im Vergleich zu DELETE schneller macht.

Die Ausführung des TRUNCATE-Befehls aktiviert keine Auslöser, da keine Daten zeilenweise verarbeitet werden. TRUNCATE kann nicht ausgeführt werden, wenn die Tabelle von einem Fremdschlüssel referenziert wird. Wenn der Befehl TRUNCATE die Tabellendaten löscht, können sie niemals wiederhergestellt werden.

Hauptunterschiede zwischen DELETE und TRUNCATE in SQL

  1. Der Hauptunterschied zwischen DELETE und TRUNCATE besteht darin, dass Sie mit DELETE das angegebene Tupel aus einer Beziehung löschen können. Die Verwendung von TRUNCATE löscht jedoch ganze Tupel aus einer Beziehung.
  2. DELETE ist ein DML-Befehl, während TRUNCATE ein DDL-Befehl ist.
  3. DELETE verwendet die WHERE-Klausel, um die zu löschenden Datensätze / Tupel zu filtern. TRUNCATE erfordert jedoch keine WHERE-Klausel, da alle Tupel gelöscht werden. Daher müssen die Tupel nicht gefiltert werden.
  4. DELETE aktiviert referenzielle Auslöser, die auf die Tabellen angewendet werden. TRUNCATE löst jedoch keine Auslöser auf dem Tisch aus.
  5. Mit dem Befehl DELETE werden die Tupel nacheinander aus der Tabelle entfernt, und zwar in der Reihenfolge, in der sie verarbeitet werden. TRUNCATE kann jedoch nicht einzeln nacheinander in Tupeln ausgeführt werden. Stattdessen arbeitet TRUNCATE mit einer Datenseite, auf der Tabellendaten gespeichert sind.
  6. DELETE erwirbt die Sperre für das Tupel, bevor es gelöscht wird, wohingegen TRUNCATE die Sperre für die Datenseite übernimmt, bevor die Datenseite gelöscht wird.
  7. TRUNCATE ist schneller als der Befehl DELETE.
  8. DELETE-Transaktionsprotokoll für jedes Tupel aufzeichnen, während TRUNCATE für jede Datenseite Transaktionsprotokoll aufzeichnet.
  9. Nachdem Sie Daten mit TRUNCATE gelöscht haben, können sie nie wiederhergestellt werden, während Sie Ihre Daten mit dem Befehl DELETE wiederherstellen können.

Fazit:

Wenn Sie das Löschen von Datensätzen aus der Tabelle anpassen möchten, können Sie den Befehl DELETE verwenden. Wenn Sie die Tabelle leeren möchten, dh Sie möchten keine Daten in einer Tabelle belassen, verwenden Sie den Befehl TRUNCATE.

Top