English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL svuota la tabella (istruzione TRUNCATE TABLE)

In questo tutorial, imparerai come utilizzare SQL per eliminare rapidamente tutte le righe da una tabella.

eliminare i dati della 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

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.

TRUNCATE TABLE vs DELETE

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.