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?
SHIFT-DEL
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?
SHIFT-DEL
Antworten:
Sie haben 2 Möglichkeiten delete
und truncate
:
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.
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
.
Gehen Sie zur Registerkarte SQL und führen Sie eine der folgenden Abfragen aus:
delete from tableName;
Löschen : Löscht alle Zeilen aus Ihrer Tabelle. Beim nächsten Einfügen wird die nächste automatische Inkrementierungs-ID verwendet.
oder
truncate tableName;
Abschneiden : Löscht auch die Zeilen aus Ihrer Tabelle, beginnt jedoch mit einer neuen Zeile mit 1.
Ein detaillierter Blog mit Beispiel: http://sforsuresh.in/phpmyadmin-deleting-rows-mysql-table/
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.
' 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
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.
Schreiben Sie die Abfrage: kürzen Sie 'Your_table_name';
DELETE FROM tableName