Heim  >  Artikel  >  Datenbank  >  MySQL Advanced (einundzwanzig) Tabellendaten löschen

MySQL Advanced (einundzwanzig) Tabellendaten löschen

黄舟
黄舟Original
2017-02-11 10:45:251491Durchsuche

MySQL löscht Tabellendaten

Es gibt zwei Methoden zum Löschen von Daten in MySQL: eine ist die DELETE-Anweisung und die andere ist die TRUNCATE TABLE-Anweisung. Die DELETE-Anweisung kann Datensätze auswählen, die über WHERE gelöscht werden sollen. Mit TRUNCATE TABLE werden alle Datensätze in der Tabelle gelöscht. Daher ist die DELETE-Anweisung flexibler.

Wenn Sie alle Datensätze in der Tabelle löschen möchten, können Sie die folgenden zwei Methoden verwenden:

DELETE FROM table1
       TRUNCATE TABLE table1
Wobei sich TABLE im zweiten Datensatz befindet optional.

Wenn Sie einige Datensätze in der Tabelle löschen möchten, können Sie nur die DELETE-Anweisung verwenden.

Wenn DELETE keine WHERE-Klausel hinzufügt, ist es dasselbe wie TRUNCATE TABLE, hat aber einen Unterschied, d. h. DELETE kann die Anzahl der gelöschten Datensätze zurückgeben, während TRUNCATE TABLE 0 zurückgibt .

Wenn in einer Tabelle ein Auto-Inkrement-Feld vorhanden ist, stellt das Auto-Inkrement-Feld nach der Verwendung von TRUNCATE TABLE und DELETE ohne WHERE-Klausel zum Löschen aller Datensätze den Startwert auf 1 wieder her. Wenn Sie möchten dies nicht tun. Wenn ja, können Sie der DELETE-Anweisung ein permanentes WHERE hinzufügen, z. B. WHERE 1 oder WHERE true.

       DELETE FROM table1 WHERE ...;

Die obige Anweisung scannt bei der Ausführung jeden Datensatz. Dies ist jedoch nicht vergleichbar, da die WHERE-Bedingung immer wahr ist. Obwohl dadurch der maximale Wert für die automatische Inkrementierung beibehalten werden kann, da alle Datensätze gescannt werden, sind die Ausführungskosten viel höher als bei DELETE ohne WHERE-Klausel.

Der größte Unterschied zwischen DELETE und TRUNCATE TABLE besteht darin, dass DELETE die zu löschenden Datensätze über die WHERE-Anweisung auswählen kann, die Ausführungsgeschwindigkeit jedoch nicht hoch ist.

      DELETE FROM table1 WHERE 1;
Nachdem Truncate gelöscht wurde, wird das MySQL-Protokoll nicht aufgezeichnet und die Daten können nicht wiederhergestellt werden. Der Effekt des Löschens ähnelt dem Löschen aller Datensätze in der MySQL-Tabelle nacheinander, bis der Löschvorgang abgeschlossen ist, während das Abschneiden dem Beibehalten der Struktur der MySQL-Tabelle und dem Neuerstellen der Tabelle entspricht. Alle Zustände entsprechen einem neuer Tisch. Es kann auch die Anzahl der gelöschten Datensätze zurückgeben. TRUNCATE TABLE kann bestimmte Datensätze nicht löschen und keine gelöschten Datensätze zurückgeben. Aber es wird sehr schnell ausgeführt.


Im Gegensatz zu Standard-SQL-Anweisungen unterstützt DELETE die Klauseln ORDER BY und LIMIT. Durch diese beiden Klauseln können wir die zu löschenden Datensätze besser steuern. Wenn wir beispielsweise nur einen Teil der durch die WHERE-Klausel gefilterten Datensätze löschen möchten, können wir LIMIT verwenden. Wenn wir die letzten Datensätze löschen möchten, können wir ORDER BY und LIMIT zusammen verwenden. Angenommen, wir möchten die ersten 6 Datensätze in der Benutzertabelle löschen, deren Name „Mike“ lautet. Sie können die folgende DELETE-Anweisung verwenden:

Im Allgemeinen ist MySQL nicht sicher, welche der 6 gelöschten Datensätze es sind. Um die Sicherheit zu erhöhen, können wir die Datensätze mit ORDER BY sortieren.

Schöne Texte und Bilder
      DELETE FROM users WHERE name = 'Mike' LIMIT 6;


      DELETE FROM users WHERE name = 'Mike' ORDER BY id DESC LIMIT 6;

Das Obige ist der Inhalt von MySQL Advanced (21) zum Löschen von Tabellendaten und mehr Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

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