English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come utilizzare SQL per eliminare rapidamente tutte le righe da una tabella.
L'istruzione TRUNCATE TABLE è più veloce della DELETE per eliminare tutte le righe dalla tabella. Logicamente, TRUNCATE TABLE è simile aDELETEnessunaWHEREclausola.
L'istruzione TRUNCATE TABLE elimina tutte le righe dalla tabella, ma mantiene invariata la struttura della tabella e le colonne, le restrizioni, gli indici e altro. Per eliminare la tabella e i suoi dati, puoi usare l'istruzioneDROP TABLEistruzioni, ma dovresti agire con cautela.
Sintassi di base di TRUNCATE TABLE:
TRUNCATE TABLE table_name;
Facciamo una pulizia della tabella del database.
Considera che in un database abbiamoemployeecontiene i seguenti record:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
Le seguenti istruzioniemployeeseliminare tutte le righe dalla tabella:
TRUNCATE TABLE employees;
Ora, dopo aver eseguito le istruzioni SQL menzionate sopra, se tenti di estrarreemployeenella tabellaselezionando recordselezionando una colonna, otterrai un risultato vuoto.
Nonostante DELETE e TRUNCATE TABLE sembrano avere effetti simili, il loro modo di funzionare è diverso. Ecco alcune delle principali differenze tra queste due istruzioni:
La dichiarazione TRUNCATE TABLE elimina e ricrea la tabella, riportando qualsiasi valore di incrementazione automatico a suo valore iniziale (solitamente 1).
DELETE ti permette di filtrare le righe da eliminare in base a una clausola WHERE opzionale, mentre TRUNCATE TABLE senza supportare la clausola WHERE elimina solo tutte le righe.
In confronto con DELETE, TRUNCATE TABLE è più veloce e utilizza meno risorse di sistema, perché DELETE scansiona la tabella per generare il numero di righe interessate, poi elimina riga per riga e registra un'entrata per ogni riga eliminata nel registro del database, mentre TRUNCATE TABLE elimina tutte le righe senza fornire altre informazioni.
Suggerimento:Se desideri eliminare tutte le righe e ricreare l'intera tabella, usa TRUNCATE TABLE. Se desideri eliminare un numero limitato di righe basato su una condizione specifica o non desideri riportare a zero il valore di incrementazione automatico, usa DELETE.