Unterschied zwischen Drop und Truncate

Unterschied zwischen Drop und Truncate
Unterschied zwischen Drop und Truncate

Video: Unterschied zwischen Drop und Truncate

Video: Unterschied zwischen Drop und Truncate
Video: Konjunktiv I oder II - Was ist der Unterschied? 2024, November
Anonim

Drop vs. Truncate

Drop und Truncate sind zwei SQL-Anweisungen (Structured Query Language), die in Datenbankverw altungssystemen verwendet werden, wo wir Datensätze aus einer Datenbank entfernen möchten. 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 er mehr Speicherplatz belegt als Drop und Truncate.

Falls wir eine Tabelle in einer Datenbank komplett mit allen Daten verwerfen wollen, erlaubt uns SQL dies einfach mit der Drop-Anweisung durchzuführen. Der Drop-Befehl ist ein DDL-Befehl (Data Definition Language) und kann verwendet werden, um eine vorhandene Datenbank, Tabelle, einen Index oder eine Ansicht zu zerstören. 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 loswerden, aber ohne die Tabelle, und wir können in einem solchen Szenario die Truncate-Anweisung in SQL verwenden. Truncate ist auch ein DDL-Befehl und löscht alle Zeilen in einer Tabelle, behält aber die Tabellendefinition für die zukünftige Verwendung bei.

Drop-Befehl

Wie bereits erwähnt, entfernt der Drop-Befehl die Tabellendefinition und alle ihre Daten, Integritätsbeschränkungen, Indizes, Trigger und Zugriffsrechte, die für diese bestimmte Tabelle erstellt wurden. Das vorhandene Objekt wird also vollständig aus der Datenbank gelöscht, und die Beziehungen zu anderen Tabellen sind nach Ausführung des Befehls ebenfalls nicht mehr gültig. Außerdem werden alle Informationen über die Tabelle aus dem Datenwörterbuch entfernt. Es folgt die typische Syntax für die Verwendung der Drop-Anweisung für eine Tabelle.

DROP TABLE

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 verwendet werden kann, um eine Tabelle zu löschen, die bereits durch eine Fremdschlüssel-Einschränkung referenziert wurde. In diesem Fall sollte die referenzierende Fremdschlüsseleinschränkung oder diese bestimmte Tabelle zuerst gelöscht werden. Außerdem kann die Drop-Anweisung 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 ungültig. Wenn wir die Tabelle also 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

Truncate-Befehl ist ein DDL-Befehl und entfernt alle Zeilen in einer Tabelle ohne benutzerdefinierte Bedingungen und gibt den von der Tabelle belegten Platz frei, aber die Tabellenstruktur mit ihren Sp alten, Indizes und Beschränkungen bleibt gleich. Truncate eliminiert Daten aus einer Tabelle, indem die Zuordnung der Datenseiten aufgehoben wird, die zum Speichern der Tabellendaten verwendet werden, und nur diese Seitenfreigaben werden im Transaktionsprotokoll gespeichert. Daher werden im Vergleich zu anderen verwandten SQL-Befehlen wie Delete weniger Transaktionsprotokollressourcen und Systemressourcen verwendet. Truncate ist also eine etwas schnellere Anweisung als andere. Es folgt die typische Syntax für den Befehl „Truncate“.

TABELLE TRUNCATE

Wir sollten den Tabellennamen, aus dem wir die gesamten Daten entfernen wollen, in der obigen Syntax ersetzen.

Truncate kann nicht für eine Tabelle verwendet werden, die von einer Fremdschlüssel-Einschränkung referenziert wurde. Es verwendet automatisch ein Commit, bevor es handelt, und danach ein weiteres Commit, sodass ein Rollback der Transaktion unmöglich ist und keine Trigger ausgelöst werden. 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?

Beide Befehle zum Löschen und Abschneiden sind DDL-Befehle und auch Auto-Commit-Anweisungen, sodass die mit diesen Befehlen ausgefü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 Referenzen dauerhaft aus der Datenbank entfernt, während der Truncate-Befehl nur alle entfernt die Zeilen in einer Tabelle und 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 also die Tabelle wiederverwendet werden soll, 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 erh alten, sodass keine der oben genannten Neuerungen für die Wiederverwendung erforderlich sind.

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 haben, wie sie funktionieren, und auch eine sorgfältige Planung, bevor wir sie verwenden, um zu verhindern, dass das Wesentliche übersehen wird. Schließlich können diese beiden Befehle verwendet werden, um die Datenbanken schnell und einfach zu bereinigen und dabei weniger Ressourcen zu verbrauchen.

Empfohlen: