Uso wampserver 2.2. Quando voglio eliminare tutti i record di una tabella in phpMyAdmin (seleziona tutto), elimina solo un record, non tutti i record. Perché non elimina tutti i record?
SHIFT-DEL
Uso wampserver 2.2. Quando voglio eliminare tutti i record di una tabella in phpMyAdmin (seleziona tutto), elimina solo un record, non tutti i record. Perché non elimina tutti i record?
SHIFT-DEL
Risposte:
Hai 2 opzioni delete
e truncate
:
delete from mytable
Questo cancellerà tutto il contenuto della tabella, non resettando l'id autoincrementale, questo processo è molto lento. Se vuoi eliminare record specifici, aggiungi una clausola where alla fine.
truncate myTable
Ciò ripristinerà la tabella, ovvero tutti i campi incrementali automatici verranno ripristinati. È un DDL ed è molto veloce. Non è possibile eliminare alcun record specifico tramite truncate
.
Vai alla scheda Sql esegui una delle query seguenti:
delete from tableName;
Elimina : eliminerà tutte le righe dalla tabella. Il prossimo inserimento avrà il prossimo ID di incremento automatico.
o
truncate tableName;
Tronca : eliminerà anche le righe dalla tabella ma inizierà dalla nuova riga con 1.
Un blog dettagliato con esempio: http://sforsuresh.in/phpmyadmin-deleting-rows-mysql-table/
Usa questa query:
DELETE FROM tableName;
Nota: per eliminare alcuni record specifici, è possibile fornire anche la condizione nella clausola where nella query.
OPPURE puoi utilizzare questa query anche:
truncate tableName;
Ricorda inoltre che non dovresti avere alcun rapporto con altri tavoli. Se nella tabella sarà presente un vincolo di chiave esterna, quei record non verranno eliminati e restituiranno l'errore.
"Truncate tableName" avrà esito negativo su una tabella con vincolo di chiave definito. Inoltre, non reindicherà il AUTO_INCREMENT
valore della tabella . Invece, elimina tutte le voci della tabella e reimposta l'indicizzazione su 1 utilizzando questa sintassi sql:
DELETE FROM tableName;
ALTER TABLE tableName AUTO_INCREMENT = 1
Un fatto interessante.
Ero sicuro che TRUNCATE funzionerà sempre meglio, ma nel mio caso, per un db con circa 30 tabelle con chiavi esterne, popolato solo con poche righe, ci sono voluti circa 12 secondi per TRUNCATE tutte le tabelle, invece di poche centinaia di millisecondi per CANCELLARE le righe. L'impostazione dell'incremento automatico aggiunge circa un secondo in totale, ma è comunque molto meglio.
Quindi suggerirei di provarli entrambi, vedere quale funziona più velocemente per il tuo caso.
scrivi la query: truncate 'Your_table_name';
DELETE FROM tableName