LÖSCHEN
- DELETE ist ein DML-Befehl.
- Die DELETE-Anweisung wird mit einer Zeilensperre ausgeführt, jede Zeile in der Tabelle ist zum Löschen gesperrt.
- Wir können Filter in der Where-Klausel angeben
- Es löscht angegebene Daten, wenn eine Bedingung vorhanden ist.
- Löschen aktiviert einen Trigger, da die Vorgänge einzeln protokolliert werden.
- Langsamer als truncate, weil Protokolle geführt werden.
- Rollback ist möglich.
KÜRZEN
- TRUNCATE ist ein DDL-Befehl.
- TRUNCATE TABLE sperrt immer die Tabelle und Seite, aber nicht jede Zeile.
- Wo-Bedingung kann nicht verwendet werden.
- Es entfernt alle Daten.
- TRUNCATE TABLE kann keinen Trigger aktivieren, da die Operation keine einzelnen Zeilenlöschungen protokolliert.
- Schneller in Bezug auf die Leistung, da keine Protokolle geführt werden.
- Rollback ist möglich.
- DELETE und TRUNCATE können beide rückgängig gemacht werden, wenn sie mit TRANSACTION verwendet werden (TRUNCATE kann in SQL Server rückgängig gemacht werden, aber nicht in MySQL).
- Wenn es einen PK mit automatischer Erhöhung gibt, wird durch Abschneiden der Zähler zurückgesetzt
http://beginner-sql-tutorial.com/sql-delete-statement .htm