Kürzung vs. SQL löschen

Kürzung vs. SQL löschen
Es gibt zwei Hauptmethoden zum Entfernen von Daten in einer SQL -Datenbank: Abschneiden und Löschen. Obwohl der Prozess eng miteinander verbunden erscheinen mag, kann es von Vorteil sein, den Unterschied zwischen diesen Befehlen zu verstehen.

Lassen Sie uns den Unterschied zwischen den Kürzungen und Löschen von Befehlen in SQL aufschlüsseln.

SQL STRUNCATE -Befehl

Der Befehl TRUNCATE in SQL ist als Datendefinitionssprache bekannt. Die Befehle abgestürzt werden die Daten aus einer Tabelle entfernen, während die Tabellenstruktur erhalten bleibt. Im Gegensatz zum Befehl Löschen können Sie nicht mit der WHERE -Klausel bestimmte Datensätze filtern.

In ähnlicher Weise können wir Rollback nach dem Ausführen der abgeschnittenen Befehle nicht ausführen, da für diesen Befehl keine Protokolle erhalten bleiben.

Hinweis: Einige Datenbankmotoren unterstützen Rollback für Truncate -Befehle, dies ist jedoch nicht universell.

Wenn eine Tabelle Teil einer indizierten Ansicht ist oder von einem Fremdschlüssel verwiesen wird, funktioniert der Befehl abgestoßen nicht in dieser Tabelle.

Die Befehlssyntax ist wie gezeigt:

TABLE TABLE TABLE_NAME;

Der Befehl TRUNCATE ist schneller als löschen, da er vor dem Entfernen keinen Scan für die Datensätze ausführt. Es stellt auch sicher, dass die gesamte Tabelle vor dem Entfernen der Daten gesperrt ist, wodurch der Transaktionsraum reduziert wird.

Abhängig von der Datenbank -Engine benötigen Sie explizite Berechtigungen, um einen Kürzungsvorgang auf einer Tabelle durchzuführen. In SQL Server benötigen Sie beispielsweise die Berechtigung zur Änderung der Tabelle. MySQL erfordert eine Tropfenberechtigung, PostgreSQL benötigt eine Kürzung der Genehmigung, und Oracle benötigt die Abfallberechtigungen.

SQL Delete -Befehl

Der Befehl löschen ist ein Datenmanipulationsbefehl. Sie können Datensätze aus einer Datenbanktabelle entfernen und die Anzahl der gelöschten Datensätze zurückgeben. Die Befehle löschen entfernen die Zeilen aus einer Tabelle und nicht die gesamte Tabelle aus der Datenbank.

Im Gegensatz zum Befehl Truncate können Sie mit dem Befehl Löschen die Zieldatensätze mit der WHERE -Klausel filtern.

Die Befehlssyntax ist unten dargestellt:

Löschen aus table_name;

Um bestimmte Datensätze zu filtern, können Sie die Syntax wie unten gezeigt verwenden:

Löschen aus table_name wobei Bedingung;

Hinweis: Wenn Sie die Zielspalten nicht angeben, entfernen der Befehl alle Datensätze aus der angegebenen Tabelle.

Im Gegensatz zum Befehl TRUNCATE, der die gesamte Tabelle sperrt, sperrt der Befehl lösche einzelne Zeilen, die zu einem höheren Transaktionsraum führen, insbesondere auf einer großen Tabelle.

Um einen Befehl Löschen auf einer Tabelle auszuführen, benötigen Sie die Erlaubnis zur Löschung.

Übersichtstabelle

Die folgende Tabelle fasst die Unterschiede zwischen den Befehlen SQL Delete und Triple zusammen.

SQL Müll SQL Löschen
Typ Datendefinitionssprache Datenmanipulierungssprache
Schloss Typ Tisch Reihe
Rollback Einige Datenbankmotoren Ja
Transaktionsprotokolle Ganzes Tisch Pro Zeile
Transaktionsraum Nutzung Weniger Höher
Unterstützung auslösen NEIN Ja
Geschwindigkeit Sehr schnell Langsam
Entfernungstyp Alle Reihen Alle oder spezifischen Zeilen (wie angegeben)
Funktioniert mit einer indizierten Ansicht? NEIN Ja
Identitätsspalte Reset Einige Datenbankmotoren NEIN
Rücksendungen entlastete Datensätze? NEIN Ja

In den meisten Fällen hängt die Auswahl des besten Betriebstyps von Ihren spezifischen Anforderungen ab. Betrachten Sie jedoch die folgenden Punkte:

  1. Für bestimmte Zeilen entscheiden Sie sich für das Löschen.
  2. Schnitt ist schneller als löschen; Verwenden Sie daher Truncate, wenn Sie alle Zeilen in einer Tabelle entfernen möchten.
  3. Wenn Sie sich nicht um die Tabellenstruktur kümmern, verwenden Sie andere Befehle wie Drop.

Abschluss

In diesem Artikel werden zwei grundlegende Befehle erörtert, um Daten in einer SQL -Datenbank zu entfernen. Mit diesem Handbuch können Sie ausdrücklich angeben, wie der Befehl Truncate oder der Befehl Löscher in einer relationalen Datenbank ausfällt. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Tutorials finden Sie in den anderen Linux -Hinweisartikeln.