Löschen Sie alle Datensätze in einer MYSQL-Tabelle in phpMyAdmin


121

Ich benutze wampserver 2.2. Wenn ich alle Datensätze einer Tabelle in phpMyAdmin löschen möchte (alle auswählen), werden nur ein Datensatz und nicht alle Datensätze gelöscht. Warum werden nicht alle Datensätze gelöscht?


3
hängt von Ihrer Anfrage ab, haben Sie so ausgeführt? DELETE FROM tableName
John Woo

SHIFT-DEL
Markieren Sie

Antworten:


129

Gehen Sie zu Ihrer Datenbank -> Struktur und leeren Sie sie in der gewünschten Tabelle. Siehe hier:

Dieser Screenshot


166

Sie haben 2 Möglichkeiten deleteund truncate:

  1. delete from mytable

    Dadurch wird der gesamte Inhalt der Tabelle gelöscht, ohne dass die automatisch inkrementelle ID zurückgesetzt wird. Dieser Vorgang ist sehr langsam. Wenn Sie bestimmte Datensätze löschen möchten, fügen Sie am Ende eine where-Klausel hinzu.

  2. truncate myTable

    Dadurch wird die Tabelle zurückgesetzt, dh alle automatisch inkrementellen Felder werden zurückgesetzt. Es ist eine DDL und es ist sehr schnell. Sie können keinen bestimmten Datensatz durch löschen truncate.



27

Verwenden Sie diese Abfrage:

DELETE FROM tableName;

Hinweis: Um einen bestimmten Datensatz zu löschen, können Sie die Bedingung in der where-Klausel auch in der Abfrage angeben.

ODER Sie können diese Abfrage auch verwenden:

truncate tableName;

Denken Sie auch daran, dass Sie keine Beziehung zu einer anderen Tabelle haben sollten. Wenn die Tabelle eine Fremdschlüsseleinschränkung enthält, werden diese Datensätze nicht gelöscht und geben den Fehler aus.


19

Sie können alle Zeilen mit diesem Befehl löschen. Beachten Sie jedoch, dass Sie den Befehl zum Abschneiden nach dem Ausführen nicht mehr zurücksetzen können.

  truncate tableName;

11

' Tabellenname abschneiden' schlägt für eine Tabelle mit definierter Schlüsseleinschränkung fehl . Der Tabellenwert wird auch nicht neu indiziert AUTO_INCREMENT. Löschen Sie stattdessen alle Tabelleneinträge und setzen Sie die Indizierung mit dieser SQL-Syntax auf 1 zurück:

DELETE FROM tableName;
ALTER TABLE tableName AUTO_INCREMENT = 1

4

Ein interessanter Fakt.

Ich war mir sicher, dass TRUNCATE immer eine bessere Leistung erzielen wird, aber in meinem Fall dauerte es für eine Datenbank mit ca. 30 Tabellen mit Fremdschlüsseln, die nur wenige Zeilen enthält, ungefähr 12 Sekunden, um alle Tabellen zu TRUNCIEREN, im Gegensatz zu nur einigen hundert Millisekunden um die Zeilen zu löschen. Durch Einstellen des automatischen Inkrements wird insgesamt etwa eine Sekunde hinzugefügt, aber es ist immer noch viel besser.

Daher würde ich vorschlagen, beide zu versuchen und herauszufinden, welche für Ihren Fall schneller funktioniert.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.