Heim >Datenbank >MySQL-Tutorial >Eine kurze Analyse der MySQL-Löschmethoden: der Unterschied zwischen Löschen, Abschneiden und Löschen
In MySQL gibt es insgesamt drei Löschmethoden: Löschen, Abschneiden und Löschen. Die Verwendungs- und Verwendungsszenarien der drei sind völlig unterschiedlich.
detele kann verwendet werden, um einige oder alle Daten in einer Tabelle zu löschen. Die Verwendungssyntax lautet wie folgt:
delete from table_name [where...] [order by...] [limit...]
PS: Die Befehle in [] sind optionale Befehle und können weggelassen werden.
Wenn wir die drei besten Schüler mit den höchsten Mathematikergebnissen in der Schülertabelle löschen möchten, können wir das folgende SQL verwenden:
delete from student order by math desc limit 3;
In der InnoDB-Engine ist der Löschvorgang nicht möglich Löschen Sie die Daten tatsächlich. Stattdessen werden die Daten zum Löschen markiert und als gelöscht markiert. Wir können dies testen und überprüfen, indem wir MySQL auf den nichtautomatischen Übermittlungsmodus einstellen. Die SQL-Einstellung für den nichtautomatischen Festschreibungsmodus lautet wie folgt:
set autocommit=0;
Danach löschen Sie zuerst Daten, verwenden Sie dann den Rollback-Vorgang und überprüfen Sie abschließend, ob die zuvor gelöschten Daten noch vorhanden sind Löschen ist nicht die Daten werden wirklich gelöscht, sondern markieren die Daten nur als gelöscht. Die Überprüfungs-SQL und die Ausführungsergebnisse sind in der folgenden Abbildung dargestellt:
In der InnoDB-Engine , delete wird verwendet, um alle Daten zu löschen. Die automatische Inkrementierungsspalte wird nicht auf den Anfangswert zurückgesetzt. Wir können dies mit dem folgenden Befehl überprüfen:
truncate Der Ausführungseffekt ist ähnlich zu löschen, und es wird auch zum Löschen aller Daten in der Tabelle verwendet. Für Zeilendaten lautet die Verwendungssyntax wie folgt:
truncate [table] table_name
Der größte Unterschied zwischen Abschneiden und Löschen besteht darin, dass delete bedingte Ausdrücke verwenden kann, um Teile zu löschen der Daten, während Truncate keine bedingten Ausdrücke hinzufügen kann, sodass nur alle Zeilendaten gelöscht werden können , beispielsweise meldet das folgende Truncate nach dem Hinzufügen des Where-Befehls einen Fehler:
truncate scheint nur Zeilendaten zu löschen, es handelt sich jedoch um eine DDL-Anweisung, d. Datenmanipulationssprache, die zum Bearbeiten von Daten verwendet wird. Warum löscht das Abschneiden nur Zeilendaten, aber keine Spaltendaten (Felder, Indizes usw.), obwohl es sich um eine DDL-Sprache handelt? Dies liegt daran, dass Truncate im Wesentlichen eine neue Tabellenstruktur erstellt und dann die ursprüngliche Tabelle löscht, sodass sie zur DDL-Sprache und nicht zur DML-Sprache gehört.
truncate setzt die Auto-Inkrement-Spalte in der InnoDB-Engine zurück, wie im folgenden Befehl gezeigt:
drop und die ersten beiden Befehle löschen nur die Zeilendaten und die Tabellenstruktur der gesamten Tabelle. Die Syntax lautet wie folgt:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [,tbl_name]
wobei TEMPORARY für temporäre Tabelle steht ignoriert.
Verwendungsbeispiele für Drop sind wie folgt:
In Bezug auf die Datenwiederherstellung: Löschen kann gelöschte Daten wiederherstellen, während Abschneiden und Löschen gelöschte Daten nicht wiederherstellen kann.
Ausführungsgeschwindigkeit: Löschen > abschneiden >
In Bezug auf das Löschen von Daten: „Drop“ löscht die gesamte Tabelle, einschließlich Zeilendaten, Felder, Indizes und andere Daten, während „Truncate and Drop“ nur Zeilendaten löscht.
In Bezug auf das Hinzufügen von Bedingungen: Beim Löschen können Where-Ausdrücke zum Hinzufügen von Abfragebedingungen verwendet werden, während beim Abschneiden und Löschen keine Where-Abfragebedingungen hinzugefügt werden können.
Automatisch inkrementierende Spalten zurücksetzen: In der InnoDB-Engine können durch „Truncate“ automatisch inkrementierte Spalten zurückgesetzt werden, durch „Delete“ können jedoch keine automatisch inkrementierten Spalten zurückgesetzt werden.
Mit Löschen und Abschneiden können Zeilendaten in der Tabelle gelöscht werden, während durch Löschen die gesamte Tabelle gelöscht wird. Die gelöschten Daten umfassen alle Zeilendaten, Felder, Indizes und andere Daten, wobei durch Löschen die Daten gelöscht werden .kann wiederhergestellt werden, während Truncate und Drop nicht wiederherstellbar sind, aber im Hinblick auf die Ausführungseffizienz haben die beiden letztgenannten Löschmethoden große Vorteile, daher sollte der entsprechende Löschbefehl entsprechend dem tatsächlichen Szenario ausgewählt werden Nicht wiederherstellbar. Seien Sie vorsichtig, wenn Sie die Datenlöschmethode verwenden.
【Verwandte Empfehlung: MySQL-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonEine kurze Analyse der MySQL-Löschmethoden: der Unterschied zwischen Löschen, Abschneiden und Löschen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!