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:
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.