Używam wampserver 2.2. Kiedy chcę usunąć wszystkie rekordy tabeli w phpMyAdmin (zaznacz wszystko), usuwa tylko jeden rekord, a nie wszystkie rekordy. Dlaczego nie usuwa wszystkich rekordów?
SHIFT-DEL
Używam wampserver 2.2. Kiedy chcę usunąć wszystkie rekordy tabeli w phpMyAdmin (zaznacz wszystko), usuwa tylko jeden rekord, a nie wszystkie rekordy. Dlaczego nie usuwa wszystkich rekordów?
SHIFT-DEL
Odpowiedzi:
Masz 2 opcje delete
i truncate
:
delete from mytable
Spowoduje to usunięcie całej zawartości tabeli, bez resetowania identyfikatora autoinkrementalnego, ten proces jest bardzo powolny. Jeśli chcesz usunąć określone rekordy, dodaj na końcu klauzulę where.
truncate myTable
Spowoduje to zresetowanie tabeli, tj. Wszystkie pola automatycznego przyrostu zostaną zresetowane. Jest to DDL i jest bardzo szybki. Nie możesz usunąć żadnego konkretnego rekordu za pośrednictwem truncate
.
Przejdź do zakładki Sql i uruchom jedno z poniższych zapytań:
delete from tableName;
Usuń : usuwa wszystkie wiersze z tabeli. Następne wstawienie zajmie następny identyfikator automatycznego zwiększania.
lub
truncate tableName;
Obetnij : usunie również wiersze z tabeli, ale rozpocznie się od nowego wiersza z 1.
Szczegółowy blog z przykładem: http://sforsuresh.in/phpmyadmin-deleting-rows-mysql-table/
Użyj tego zapytania:
DELETE FROM tableName;
Uwaga: Aby usunąć określony rekord, możesz również podać warunek w klauzuli where w zapytaniu.
LUB możesz użyć tego zapytania również:
truncate tableName;
Pamiętaj również, że nie powinieneś mieć żadnego związku z innym stołem. Jeśli w tabeli będzie ograniczenie związane z kluczem obcym, to te rekordy nie zostaną usunięte i zwróci błąd.
Operacja „Truncate tableName” zakończy się niepowodzeniem w przypadku tabeli ze zdefiniowanym ograniczeniem klucza. Nie spowoduje również ponownego zindeksowania AUTO_INCREMENT
wartości tabeli . Zamiast tego usuń wszystkie wpisy tabeli i zresetuj indeksowanie z powrotem do 1, używając następującej składni sql:
DELETE FROM tableName;
ALTER TABLE tableName AUTO_INCREMENT = 1
Ciekawy fakt.
Byłem pewien, że TRUNCATE zawsze będzie działać lepiej, ale w moim przypadku dla bazy danych z około 30 tabelami z obcymi kluczami, wypełnionymi tylko kilkoma wierszami, TRUNCATE wszystkich tabel zajęło około 12 sekund, w przeciwieństwie do zaledwie kilkuset milisekund aby usunąć wiersze. Ustawienie automatycznego przyrostu dodaje łącznie około sekundy, ale nadal jest dużo lepsze.
Sugerowałbym więc wypróbowanie obu, zobacz, które działa szybciej w twoim przypadku.
napisz zapytanie: obetnij 'Your_table_name';
DELETE FROM tableName