Lösche vs Abschneiden
Die beiden SQL-Befehle (Structure Query Language), Delete und Truncate, werden verwendet, um in Tabellen in einer Datenbank gespeicherte Daten zu entfernen. Delete ist eine DML-Anweisung (Data Manipulation Language), mit der einige oder alle Zeilen einer Tabelle entfernt werden. Mit der Where-Klausel werden die Zeilen angegeben, die gelöscht werden müssen. Wenn die Where-Klausel nicht mit der Delete-Anweisung verwendet wird, werden alle Daten in der Tabelle entfernt. Truncate ist eine DDL-Anweisung (Data Definition Language), die vollständige Daten aus der Tabelle entfernt. Beide Befehle zerstören die Tabellenstruktur und die Verweise auf die Tabelle nicht und nur die Daten werden nach Bedarf entfernt.
Anweisung löschen
Mit der Delete-Anweisung kann der Benutzer Daten aus einer vorhandenen Tabelle in einer Datenbank basierend auf einer angegebenen Bedingung entfernen. Die 'Where-Klausel' wird zum Bestimmen dieser Bedingung verwendet. Der Löschbefehl wird als protokollierte Ausführung bezeichnet, da nur jeweils eine Zeile gelöscht wird und ein Eintrag für jede Zeilenlöschung im Transaktionsprotokoll gespeichert wird. Dies führt dazu, dass der Vorgang langsamer wird. Delete ist eine DML-Anweisung und wird daher beim Ausführen des Befehls nicht automatisch festgeschrieben. Daher kann der Löschvorgang zurückgesetzt werden, um bei Bedarf erneut auf die Daten zuzugreifen. Nach der Ausführung des Löschbefehls sollte dieser festgeschrieben oder rückgängig gemacht werden, um die Änderungen dauerhaft zu speichern. Delete-Anweisung entfernt die Tabellenstruktur der Tabelle nicht aus der Datenbank. Außerdem wird der von der Tabelle belegte Speicherplatz nicht freigegeben.
Die typische Syntax für den Befehl Löschen ist unten angegeben.
LÖSCHEN VON
oder
LÖSCHEN VON WO
Anweisung abschneiden
Die Anweisung Abschneiden entfernt alle Daten aus einer vorhandenen Tabelle in einer Datenbank, behält jedoch dieselbe Tabellenstruktur sowie die Integritätsbedingungen, Zugriffsberechtigungen und Beziehungen zu anderen Tabellen bei. Es ist also nicht erforderlich, die Tabelle erneut zu definieren, und die alte Tabellenstruktur kann verwendet werden, wenn der Benutzer die Tabelle erneut verwenden möchte. Beim Abschneiden werden die gesamten Daten entfernt, indem die zur Aufbewahrung der Daten verwendeten Datenseiten freigegeben werden. Nur diese Seitenfreigaben werden im Transaktionsprotokoll gespeichert. Daher verwendet der Befehl zum Abschneiden nur weniger System- und Transaktionsprotokollressourcen für den Betrieb, sodass er schneller als andere verwandte Befehle ist. Truncate ist ein DDL-Befehl. Daher werden vor und nach der Ausführung der Anweisung Auto-Commitments verwendet. Daher kann das Abschneiden die Daten in keiner Weise zurücksetzen. Sie gibt den von der Tabelle verwendeten Speicherplatz nach der Ausführung frei. Die Truncate-Anweisung kann jedoch nicht auf die Tabellen angewendet werden, auf die durch Fremdschlüsseleinschränkungen verwiesen wird.
Es folgt die gebräuchliche Syntax für die Truncate-Anweisung.
TRUNCATE TABLE
Was ist der Unterschied zwischen Löschen und Abschneiden?? 1. Befehle zum Löschen und Abschneiden entfernen Daten aus vorhandenen Tabellen in einer Datenbank, ohne die Tabellenstruktur oder andere Verweise auf die Tabelle zu beschädigen. 2. Der Befehl Löschen kann jedoch verwendet werden, um bestimmte Zeilen nur in einer Tabelle mit einer relevanten Bedingung zu löschen, oder um alle Zeilen ohne Bedingung zu löschen, während der Befehl Abschneiden nur zum Löschen ganzer Daten in der Tabelle verwendet werden kann. 3. Delete ist ein DML-Befehl und kann den Vorgang bei Bedarf rückgängig machen. Truncate ist jedoch ein DDL-Befehl. Es handelt sich also um eine Auto-Commit-Anweisung, die nicht rückgängig gemacht werden kann. Daher ist es wichtig, diesen Befehl in der Datenbankverwaltung sorgfältig zu verwenden. 4. Der Vorgang "Abschneiden" verbraucht weniger Systemressourcen und Transaktionsprotokollressourcen als der Vorgang "Löschen". Daher wird Abschneiden als schneller angesehen als das Löschen. 5. Außerdem gibt Delete keinen Speicherplatz frei, der von der Tabelle verwendet wird, wohingegen Truncate den Speicherplatz freigibt, der nach der Ausführung verwendet wird. Daher ist Delete nicht effizient, wenn die gesamten Daten aus einer Datenbanktabelle gelöscht werden. 6. Abschneiden darf jedoch nicht verwendet werden, wenn auf die Tabelle durch eine Fremdschlüsseleinschränkung verwiesen wird. In diesem Fall kann der Befehl Löschen anstelle von Abschneiden verwendet werden. 7. Beide Befehle haben schließlich Vorteile und auch Nachteile bei der Anwendung in Datenbankverwaltungssystemen, und der Benutzer sollte sich dessen bewusst sein, dass er diese Befehle entsprechend verwendet, um gute Ergebnisse zu erzielen.
|