logo

Unterschied zwischen dem Befehl „Löschen“ und „Truncate“.

Der Unterschied zwischen den Befehlen DELETE und TRUNCATE ist der häufigste Teil einer Interviewfrage. Sie werden hauptsächlich zum Löschen von Daten aus der Datenbank verwendet. Der Hauptunterschied zwischen ihnen besteht darin, dass die delete-Anweisung Daten löscht, ohne die Identität einer Tabelle zurückzusetzen, während der truncate-Befehl die Identität einer bestimmten Tabelle zurücksetzt . In diesem Artikel wird ein vollständiger Überblick über die Befehle DELETE und TRUNCATE sowie deren Unterschiede erläutert, die hauptsächlich austauschbar verwendet werden, aber völlig unterschiedlich sind.

Befehl „Löschen“ oder „Abschneiden“.

Was ist ein DELETE-Befehl?

es ist ein DML- oder Datenmanipulationsbefehl Wird verwendet, um Datensätze aus einer Tabelle zu löschen, die in der Datenbank nicht benötigt werden. Es entfernt die komplette Zeile aus der Tabelle und ermittelt die Anzahl der gelöschten Zeilen. Um diesen Befehl auszuführen, benötigen wir die Löschberechtigung für die Zieltabelle. Es ermöglicht uns auch, bestimmte Datensätze mithilfe von zu filtern und zu löschen WO Klausel aus der Tabelle.

Es stellt klar, dass wir vor der Ausführung dieses Befehls ein Backup unserer Datenbank haben, da wir die gelöschten Datensätze mit dieser Abfrage nicht wiederherstellen können. deshalb, die Datenbanksicherungen Ermöglichen Sie uns die Wiederherstellung der Daten, wann immer wir sie in Zukunft benötigen.

Die folgende Syntax erklärt den DELETE-Befehl zum Entfernen von Daten aus der Tabelle:

 DELETE FROM table_name WHERE condition; 

Was ist ein TRUNCATE-Befehl?

Die Truncate-Anweisung ist a DDL- oder Datendefinitionssprachenbefehl Wird verwendet, um vollständige Daten aus der Tabelle zu entfernen, ohne die Tabellenstruktur zu entfernen. Wir können das nicht nutzen WO Klausel mit diesem Befehl, sodass das Filtern von Datensätzen nicht möglich ist. Nachdem wir diesen Befehl ausgeführt haben, werden wir Die gelöschten Daten können nicht wiederhergestellt werden weil das Protokoll während der Ausführung dieses Vorgangs nicht gepflegt wird.

Der Befehl „truncate“ gibt die Zuweisung auf Seiten statt Zeilen und erstellt einen Eintrag für die freizugebenden Seiten anstelle von Zeilen in Transaktionsprotokollen. Dieser Befehl sperrt die Seiten statt der Zeilen; Daher sind weniger Sperren und Ressourcen erforderlich. Beachten Sie, dass wir die truncate-Anweisung nicht verwenden können, wenn eine Tabelle durch einen Fremdschlüssel referenziert wird oder an einer indizierten Ansicht teilnimmt.

Zeichenfolge zu Zeichen

Die folgende Syntax erklärt den TRUNCATE-Befehl zum Entfernen von Daten aus der Tabelle:

 TRUNCATE TABLE table_name; 

Hauptunterschiede zwischen DELETE und TRUNCATE

Die folgenden Punkte erläutern die Unterschiede zwischen dem Befehl „Löschen“ und „Truncate“:

  1. Die DELETE-Anweisung wird verwendet, wenn wir einige oder alle Datensätze aus der Tabelle entfernen möchten, während die TRUNCATE-Anweisung ganze Zeilen aus einer Tabelle löscht.
  2. DELETE ist ein DML-Befehl, da er nur die Tabellendaten ändert, während TRUNCATE ein DDL-Befehl ist.
  3. Der DELETE-Befehl kann den Datensatz/die Tupel mithilfe der WHERE-Klausel filtern. Der TRUNCATE-Befehl erlaubt jedoch keine Verwendung WO Klausel, daher können wir beim Abschneiden keine Zeilen filtern.
  4. DELETE aktiviert alles Trigger löschen auf dem Tisch zum Abfeuern. Bei der Abschneideoperation werden jedoch keine Trigger ausgelöst, da sie nicht auf einzelne Zeilen angewendet wird.
  5. DELETE führt den Löschvorgang Zeile für Zeile einzeln aus der Tabelle durch, und zwar in der Reihenfolge, in der sie verarbeitet wurden. TRUNCATE wird jedoch auf Datenseiten und nicht auf Zeilen ausgeführt, da dabei jeweils die gesamten Tabellendaten gelöscht werden.
  6. Die DELETE-Anweisung löscht nur Datensätze und setzt sie nicht zurück Identität des Tisches , wohingegen TRUNCATE die Identität einer bestimmten Tabelle zurücksetzt.
  7. Der DELETE-Befehl erfordert mehr Sperren und Datenbankressourcen, da er die Sperre für jede gelöschte Zeile erhält. Im Gegensatz dazu erhält TRUNCATE die Sperre auf der Datenseite, bevor die Datenseite gelöscht wird. Daher sind weniger Sperren und Ressourcen erforderlich.
  8. Die DELETE-Anweisung erstellt einen Eintrag im Transaktionsprotokoll für jede gelöschte Zeile, während TRUNCATE das Transaktionsprotokoll für jede Datenseite aufzeichnet.
  9. TRUNCATE-Befehl ist Schneller als der DELETE-Befehl, da er die Zuordnung der Datenseiten anstelle von Zeilen aufhebt und Datenseiten anstelle von Zeilen in Transaktionsprotokollen aufzeichnet.
  10. Sobald der Datensatz mit dem Befehl TRUNCATE gelöscht wurde, können wir ihn nicht wiederherstellen. Im Gegensatz dazu können wir die gelöschten Daten wiederherstellen, die wir aus der DELETE-Operation entfernt haben.

Vergleichstabelle DELETE vs. TRUNCATE

In der folgenden Vergleichstabelle werden die wichtigsten Unterschiede kurz erklärt:

Vergleichsbasis LÖSCHEN KÜRZEN
Definition Die Löschanweisung wird verwendet, um abhängig von der angegebenen Bedingung einzelne oder mehrere Datensätze aus einer vorhandenen Tabelle zu entfernen. Der Befehl „truncate“ entfernt die vollständigen Daten aus einer vorhandenen Tabelle, jedoch nicht die Tabelle selbst. Es behält die Tabellenstruktur oder das Schema bei.
Sprache Es handelt sich um einen DML-Befehl (Data Manipulation Language). Es handelt sich um einen DDL-Befehl (Data Definition Language).
WO Mithilfe der WHERE-Klausel können bestimmte Zeilen oder Daten aus der Tabelle gefiltert werden. Die WHERE-Klausel wird nicht zum Filtern von Datensätzen aus der Tabelle verwendet.
Erlaubnis Um diesen Befehl verwenden zu können, benötigen wir die DELETE-Berechtigung. Um diesen Befehl verwenden zu können, benötigen wir die ALTER-Berechtigung.
Arbeiten Dieser Befehl löscht Datensätze einzeln. Dieser Befehl löscht die gesamte Datenseite mit den Datensätzen.
Sperren Die Zeile wird vor dem Löschen gesperrt. Die Datenseite wird vor dem Löschen gesperrt.
Tabellenidentität Dieser Befehl setzt die Tabellenidentität nicht zurück, da er nur die Daten löscht. Die Tabellenidentität wird immer zurückgesetzt.
Transaktion Es verwaltet Transaktionsprotokolle für jeden gelöschten Datensatz. Es werden keine Transaktionsprotokolle für jede gelöschte Datenseite geführt.
Geschwindigkeit Seine Geschwindigkeit ist langsam, da das Protokoll verwaltet wird. Die Ausführung erfolgt schnell, da die gesamten Daten auf einmal gelöscht werden, ohne dass Transaktionsprotokolle verwaltet werden müssen.
Auslösen Dieser Befehl kann auch den auf dem Tisch angebrachten Auslöser aktivieren und ihn auslösen. Dieser Befehl aktiviert nicht die Auslösung der auf den Tisch angewendeten Auslöser.
Wiederherstellen Es ermöglicht uns, die gelöschten Daten mithilfe der COMMIT- oder ROLLBACK-Anweisung wiederherzustellen. Wir können die gelöschten Daten nach der Ausführung dieses Befehls nicht wiederherstellen.
Indizierte Ansicht Es kann mit indizierten Ansichten verwendet werden. Es kann nicht mit indizierten Ansichten verwendet werden.
Raum Die DELETE-Anweisung belegt mehr Transaktionsraum als die Truncate-Anweisung, da sie ein Protokoll für jede gelöschte Zeile führt. Die TRUNCATE-Anweisung belegt weniger Transaktionsraum, da sie ein Transaktionsprotokoll für die gesamte Datenseite und nicht für jede Zeile verwaltet.

Abschluss

In diesem Artikel haben wir einen Vergleich zwischen der Lösch- und der Truncate-Anweisung durchgeführt. Wir sind zu dem Schluss gekommen, dass ein DELETE-Befehl verwendet wird, wenn wir das Löschen von Datensätzen aus der Tabelle anpassen möchten. Und ein TRUNCATE-Befehl wird verwendet, wenn wir keine Datensätze oder Daten in der Tabelle belassen möchten, d. h. wir möchten die Tabelle leeren.