Heim > Datenbank > MySQL-Tutorial > TRUNCATE vs. DELETE in SQL: Was sind die Hauptunterschiede?

TRUNCATE vs. DELETE in SQL: Was sind die Hauptunterschiede?

Linda Hamilton
Freigeben: 2025-01-15 09:17:44
Original
148 Leute haben es durchsucht

TRUNCATE vs. DELETE in SQL: What are the Key Differences?

Umfassendes Verständnis der Unterschiede zwischen TRUNCATE und DELETE in SQL

Die Befehle TRUNCATE und DELETE in SQL werden beide zum Löschen von Daten in einer Tabelle verwendet, ihre Methoden sind jedoch unterschiedlich und bieten normalerweise eine schnellere und gründlichere Möglichkeit, Daten zu löschen.

Anweisungstyp

Im Gegensatz zu DELETE, das DML (Data Manipulation Language) ist, gehört TRUNCATE zu DDL (Data Definition Language).

Commit und Rollback

Befehls-Rollback-Funktionen variieren je nach Datenbank:

  • SQL Server und PostgreSQL: Beide ermöglichen ein Rollback von TRUNCATE.
  • Oracle: TRUNCATE als DDL-Vorgang umfasst zwei Commits und ist somit irreversibel. Allerdings kann die Flashback-Funktion von Oracle dieses Problem teilweise lindern.

Weltraumrecycling

DELETE hinterlässt freien Speicherplatz, während TRUNCATE ihn zurückgewinnt. Die REUSE STORAGE-Option von Oracle ermöglicht die Beibehaltung von Datensegmenten und verbessert so die Effizienz beim Neuladen von Tabellen.

Zeilenbereich

DELETE ermöglicht das selektive Löschen von Zeilen, während TRUNCATE alle Zeilen bedingungslos löscht. Oracle ermöglicht das Abschneiden bestimmter Partitionen in partitionierten Tabellen.

Objekttyp

DELETE funktioniert für Tabellen und Cluster-Tabellen, TRUNCATE ist jedoch auf Tabellen oder den gesamten Cluster beschränkt (Oracle-spezifisch).

Datenobjekt-ID

In Oracle behält DELETE die Datenobjekt-ID bei, während TRUNCATE eine neue ID zuweist, es sei denn, seit der Erstellung der Tabelle wurden keine Einfügevorgänge durchgeführt.

Rückblende (Oracle)

DELETE unterstützt die Flashback-Funktion, aber TRUNCATE blockiert sie, es sei denn, die FLASHBACK ARCHIVE-Funktion wird verwendet.

Berechtigungen

DELETE-Berechtigung kann dem Benutzer gewährt werden, TRUNCATE erfordert jedoch DROP ANY TABLE-Berechtigung (Oracle-spezifisch).

Leistungshinweise

  • Wiederherstellen/Rückgängig machen: DELETE generiert viele Rückgängig-Daten, während TRUNCATE vernachlässigbaren Platz beansprucht.
  • Index: TRUNCATE stellt einen deaktivierten Index wieder her (Oracle-spezifisch).
  • Fremdschlüssel: Wenn ein Fremdschlüssel auf die Tabelle verweist, ist TRUNCATE verboten und das Verhalten von DELETE hängt von der Konfiguration ab.
  • Tabellensperre: TRUNCATE erfordert exklusive Sperren (Oracle-spezifisch), während DELETE gemeinsame Sperren bevorzugt.

Trigger und Remote-Ausführung

TRUNCATE unterstützt DDL-Trigger (Oracle-spezifisch). Oracle erlaubt keine Remote-TRUNCATE-Ausführung.

Identitätsspalte

In SQL Server setzt TRUNCATE die Reihenfolge der Identitätsspalten zurück, DELETE jedoch nicht.

Ergebnismenge

In Oracle PL/SQL kann die DELETE-Anweisung gelöschte Zeilen an den Client zurückgeben.

Das obige ist der detaillierte Inhalt vonTRUNCATE vs. DELETE in SQL: Was sind die Hauptunterschiede?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage