back to top

SQL DELETE e TRUNCATE – Cancellazione di dati da una tabella

Vediamo in questa lezione quando e come utilizzare il comando SQL DELETE per effettuare la cancellazione (massiva o selettiva) dei dati in essa contenuti. Per prima cosa, però, cerchiamo di individuare la casistica in cui il comando DELETE può esserci utile.

Nel cilco di vita di un sito web o di un’applicazione (basata su un database) può capitare che i dati di una tabella divengano obsoleti, rendendo necessaria (o opportuna) la loro cancellazione dalla base dati. In questa circostanza, quindi, sarà necessario invocare appositi comandi SQL per eliminare dal database tali dati obsoleti.

Cancellare dati con DELETE

La cancellazione dei dati da una tabella di un database avviene attraverso il comando DELETE. La sintassi è la seguente:

DELETE FROM nome_tabella

Si noti che in questo modo, mancando il filtro WHERE sull’operazione DELETE, si cancellano indiscriminatamente tutti i dati dalla tabella. Si faccia attenzione, quindi, e si proceda con cautela nell’utilizzo di una simile query SQL in quanto, una volta eseguita, i dati non potranno essere recuperati se non attraverso il ripristino di un eventuale copia di backup del database.

Ipotizziamo, per mostrare un esempio più raffinato, di voler cancellare tutti i libri dalla relativa tabella che non sono più disponibili. Per farlo introdurremo un filtro utilizzando la clausola WHERE in questo modo:

DELETE FROM libri WHERE disponibile = 0

Anche in questo caso, come per l’utilizzo di SELECT e altri comandi, è possibile utilizzare più parametri condizionali con l’utilizzo di AND e/o di OR in modo da raffinare ulteriormente il criterio attraverso il quale effettuare la cancellazione.

Svuotare la tabella con TRUNCATE

Abbiamo già visto come, attraverso il comando DELETE, sia possibile svuotare la tabella da tutti i dati (omettendo di utilizzare WHERE):

DELETE FROM nome_tabella

In alternativa è possibile utilizzare un altro comando SQL che svolge la medesima funzione, si tratta del comando TRUNCATE:

TRUNCATE TABLE nome_tabella

Con TRUNCATE vengono eliminati, in modo irreversibile, tutti i dati presenti nella tabella che viene di fatto svuotata.

Eliminare la tabella

I comando illustrati in questa lezione servono a cancellare i dati all’interno della tabella e non la tabella stessa! Se avete bisogno di cancellare del tutto la tabella (non solo i suoi dati, cioè, ma anche la sua stessa struttura) dovete utilizzare il comando DROP già illustrato in una delle precedenti lezioni di questa guida.

Pubblicità