Drop vs Truncate
Drop and Truncate sind zwei SQL-Anweisungen (Structured Query Language), die in Datenbankverwaltungssystemen verwendet werden, in denen Datensätze aus einer Datenbank entfernt werden sollen. Mit den Anweisungen Drop und Truncate werden die gesamten Daten in einer Tabelle und die zugehörige SQL-Anweisung entfernt. Der Löschvorgang ist in diesem Fall nicht wirksam, da er mehr Speicherplätze als Löschen und Abschneiden verwendet.
Für den Fall, dass wir eine Tabelle in einer Datenbank mit allen Daten vollständig löschen möchten, können Sie dies in SQL mithilfe der Drop-Anweisung problemlos durchführen. Der Drop-Befehl ist ein DDL-Befehl (Data Definition Language), mit dem eine vorhandene Datenbank, Tabelle, Index oder Sicht gelöscht werden kann. Es löscht die gesamten Informationen in einer Tabelle sowie die Tabellenstruktur aus der Datenbank. Außerdem möchten wir möglicherweise alle Daten in einer Tabelle einfach, jedoch ohne die Tabelle, loswerden. In einem solchen Szenario können Sie die Truncate-Anweisung in SQL verwenden. Truncate ist auch ein DDL-Befehl und beseitigt alle Zeilen in einer Tabelle, behält jedoch die Tabellendefinition für die zukünftige Verwendung bei.
Kommando ablegen
Wie bereits erwähnt, entfernt der Befehl Löschen die Tabellendefinition und alle ihre Daten, Integritätsbedingungen, Indizes, Trigger und Zugriffsberechtigungen, die für diese bestimmte Tabelle erstellt wurden. Dadurch wird das vorhandene Objekt vollständig aus der Datenbank gelöscht, und die Beziehungen zu anderen Tabellen sind nach Ausführung des Befehls nicht mehr gültig. Außerdem werden alle Informationen über die Tabelle aus dem Datenwörterbuch entfernt. Nachfolgend finden Sie die typische Syntax für die Verwendung der Drop-Anweisung für eine Tabelle.
DROP TABELLE
Der Tabellenname, den wir aus der Datenbank entfernen möchten, muss im obigen Beispiel des Drop-Befehls einfach ersetzt werden.
Es ist wichtig darauf hinzuweisen, dass die Drop-Anweisung nicht zum Löschen einer Tabelle verwendet werden kann, auf die bereits eine Fremdschlüsseleinschränkung verweist. In diesem Fall muss zuerst die referenzierende Fremdschlüsseleinschränkung oder diese bestimmte Tabelle gelöscht werden. Die Drop-Anweisung kann auch nicht auf die Systemtabellen in der Datenbank angewendet werden.
Da der Drop-Befehl eine Auto-Commit-Anweisung ist, kann die einmal ausgelöste Operation nicht rückgängig gemacht werden und es werden keine Trigger ausgelöst. Wenn eine Tabelle gelöscht wird, sind alle Verweise auf die Tabelle nicht gültig. Wenn Sie die Tabelle erneut verwenden möchten, muss sie mit allen Integritätsbedingungen und Zugriffsrechten neu erstellt werden. Alle Beziehungen zu den anderen Tabellen müssen ebenfalls neu lokalisiert werden.
Befehl abschneiden
Der Befehl Abschneiden ist ein DDL-Befehl. Er entfernt alle Zeilen in einer Tabelle ohne vom Benutzer angegebene Bedingungen und gibt den von der Tabelle verwendeten Platz frei. Die Tabellenstruktur mit ihren Spalten, Indizes und Einschränkungen bleibt jedoch gleich. Beim Abschneiden werden Daten aus einer Tabelle entfernt, indem die Datenseiten freigegeben werden, die zum Speichern der Tabellendaten verwendet werden. Nur diese Seitenfreigaben werden im Transaktionsprotokoll gespeichert. Im Vergleich zu anderen verwandten SQL-Befehlen wie Delete werden weniger Transaktionsprotokollressourcen und Systemressourcen benötigt. Truncate ist also etwas schneller als andere. Nachfolgend finden Sie die typische Syntax für den Befehl Abschneiden.
TRUNCATE TABLE
In der obigen Syntax sollten wir den Tabellennamen ersetzen, aus dem wir die gesamten Daten entfernen möchten.
Abschneiden kann nicht für eine Tabelle verwendet werden, auf die durch eine Fremdschlüsseleinschränkung verwiesen wurde. Es verwendet automatisch ein Commit, bevor es agiert, und danach ein weiteres Commit. Das Zurücksetzen der Transaktion ist daher unmöglich, und es werden keine Trigger ausgelöst. Wenn wir die Tabelle wiederverwenden wollen, müssen wir nur auf die vorhandene Tabellendefinition in der Datenbank zugreifen.
Was ist der Unterschied zwischen Drop und Truncate??
Sowohl die Drop- als auch die Truncate-Befehle sind DDL-Befehle und Auto-Commit-Anweisungen, sodass die mit diesen Befehlen durchgeführten Transaktionen nicht rückgängig gemacht werden können.
Der Hauptunterschied zwischen Drop und Truncate besteht darin, dass der Drop-Befehl nicht nur alle Daten in einer Tabelle entfernt, sondern auch die Tabellenstruktur mit allen Verweisen dauerhaft aus der Datenbank entfernt, während der Befehl Truncate nur alle Zeilen in einer Tabelle entfernt , und die Tabellenstruktur und ihre Referenzen bleiben erhalten.
Wenn eine Tabelle gelöscht wird, sind die Beziehungen zu anderen Tabellen nicht mehr gültig, und die Integritätsbedingungen und Zugriffsberechtigungen werden ebenfalls entfernt. Wenn also die Tabelle erneut verwendet werden muss, muss sie mit den Beziehungen, Integritätsbedingungen und auch den Zugriffsrechten rekonstruiert werden. Wenn eine Tabelle jedoch abgeschnitten wird, bleiben die Tabellenstruktur und ihre Einschränkungen für die zukünftige Verwendung erhalten, sodass keine der oben genannten Neuerungen für die Wiederverwendung erforderlich ist.
Wenn diese Befehle angewendet werden, müssen wir vorsichtig damit umgehen. Außerdem sollten wir ein besseres Verständnis für die Art dieser Befehle, ihre Funktionsweise und eine sorgfältige Planung haben, bevor Sie sie einsetzen, um zu vermeiden, dass wesentliche Elemente fehlen. Schließlich können beide Befehle verwendet werden, um die Datenbanken schnell und einfach zu bereinigen, wodurch weniger Ressourcen benötigt werden.