Drop vs Truncate
Drop und Truncate sind zwei SQL-Anweisungen (Structured Query Language), die in Datenbankverwaltungssystemen verwendet werden, in denen Datensätze aus einer Datenbank entfernt werden sollen. Sowohl Drop- als auch Truncate-Anweisungen entfernen die gesamten Daten in einer Tabelle und die zugehörige SQL-Anweisung. Der Löschvorgang ist in diesem Fall nicht effektiv, da mehr Speicherplätze als Löschen und Abschneiden verwendet werden.
Falls wir eine Tabelle in einer Datenbank mit allen Daten insgesamt verwerfen möchten, können wir dies mit SQL einfach mit der Drop-Anweisung ausführen. Der Drop-Befehl ist ein DDL-Befehl (Data Definition Language) und kann zum Zerstören einer vorhandenen Datenbank, Tabelle, eines Index oder einer Ansicht verwendet werden. Es löscht die gesamten Informationen in einer Tabelle sowie die Tabellenstruktur aus der Datenbank. Möglicherweise möchten wir auch alle Daten in einer Tabelle einfach, jedoch ohne Tabelle, entfernen, und in einem solchen Szenario können wir die Anweisung Truncate in SQL verwenden. Abschneiden ist ebenfalls ein DDL-Befehl, bei dem alle Zeilen in einer Tabelle entfernt werden, die Tabellendefinition jedoch für die zukünftige Verwendung beibehalten wird.
Befehl löschen
Wie bereits erwähnt, entfernt der Befehl "Löschen" die Tabellendefinition und alle Daten, Integritätsbeschränkungen, Indizes, Trigger und Zugriffsrechte, die für diese bestimmte Tabelle erstellt wurden. Daher wird das vorhandene Objekt vollständig aus der Datenbank entfernt, und die Beziehungen zu anderen Tabellen sind auch nach Ausführung des Befehls nicht mehr gültig. Außerdem werden alle Informationen zur Tabelle aus dem Datenwörterbuch entfernt. Im Folgenden finden Sie die typische Syntax für die Verwendung der Drop-Anweisung in einer Tabelle.
TROPFENTABELLE
Wir müssen einfach den Tabellennamen ersetzen, den wir aus der Datenbank im obigen Beispiel des Drop-Befehls entfernen möchten.
Es ist wichtig darauf hinzuweisen, dass die Drop-Anweisung nicht zum Löschen einer Tabelle verwendet werden kann, auf die bereits durch eine Fremdschlüsseleinschränkung verwiesen wurde. 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 zurückgesetzt werden und es werden keine Trigger ausgelöst. Wenn eine Tabelle gelöscht wird, sind alle Verweise auf die Tabelle ungültig. Wenn wir die Tabelle also erneut verwenden möchten, muss sie mit allen Integritätsbeschränkungen und Zugriffsberechtigungen neu erstellt werden. Alle Beziehungen zu den anderen Tabellen müssen ebenfalls wieder lokalisiert werden.
Befehl abschneiden
Der Befehl "Abschneiden" ist ein DDL-Befehl, der alle Zeilen in einer Tabelle ohne benutzerdefinierte Bedingungen entfernt und den von der Tabelle verwendeten Speicherplatz freigibt. Die Tabellenstruktur mit ihren Spalten, Indizes und Einschränkungen bleibt jedoch gleich. Beim Abschneiden werden Daten aus einer Tabelle entfernt, indem die zum Speichern der Tabellendaten verwendeten Datenseiten freigegeben werden. Nur diese Seitenfreigaben werden im Transaktionsprotokoll gespeichert. Daher werden im Vergleich zu anderen verwandten SQL-Befehlen wie Löschen weniger Transaktionsprotokollressourcen und Systemressourcen verwendet. Truncate ist also eine etwas schnellere Aussage als andere. Im Folgenden finden Sie die typische Syntax für den Befehl "Abschneiden".
TRUNCATE TABLE
Wir sollten den Tabellennamen, aus dem wir die gesamten Daten entfernen möchten, in der obigen Syntax ersetzen.
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 ausgeführt wird, und ein weiteres Commit danach, sodass ein Rollback der Transaktion nicht möglich ist und keine Trigger ausgelöst werden. Wenn wir die Tabelle wiederverwenden möchten, müssen wir nur auf die vorhandene Tabellendefinition in der Datenbank zugreifen.
Was ist der Unterschied zwischen Drop und Truncate?
Sowohl Drop- als auch Truncate-Befehle sind DDL-Befehle und automatische Commit-Anweisungen, sodass die mit diesen Befehlen ausgeführten Transaktionen nicht zurückgesetzt werden können.
Der Hauptunterschied zwischen Löschen und Abschneiden besteht darin, dass mit dem Befehl Löschen nicht nur alle Daten in einer Tabelle entfernt werden, sondern auch die Tabellenstruktur mit allen Verweisen dauerhaft aus der Datenbank entfernt wird, während mit dem Befehl Abschneiden nur alle Zeilen in einer Tabelle entfernt werden und es behält die Tabellenstruktur und ihre Referenzen bei.
Wenn eine Tabelle gelöscht wird, sind die Beziehungen zu anderen Tabellen nicht mehr gültig, und die Integritätsbeschränkungen und Zugriffsrechte werden ebenfalls entfernt. Wenn die Tabelle also wiederverwendet werden muss, muss sie mit den Beziehungen, Integritätsbeschränkungen 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 für die Wiederverwendung keine der oben genannten Neuerstellungen erforderlich ist.
Wenn diese Befehle angewendet werden, müssen wir vorsichtig sein, sie zu verwenden. Außerdem sollten wir ein besseres Verständnis für die Art dieser Befehle, ihre Funktionsweise und eine sorgfältige Planung haben, bevor wir sie verwenden, um zu verhindern, dass wesentliche Elemente fehlen. Schließlich können beide Befehle verwendet werden, um die Datenbanken schnell und einfach zu bereinigen und weniger Ressourcen zu verbrauchen.