Salta ai contenuti

DELETE

DELETE serve a rimuovere righe da una tabella.

Non elimina la tabella intera. Elimina solo i dati che scegli con il filtro.

Per esempio:

DELETE FROM clienti
WHERE id = 3;

Questa query cancella il cliente con id = 3.

Con DELETE, WHERE è la tua cintura di sicurezza.

WHERE id = 3

Senza questa condizione, il database potrebbe cancellare tutte le righe della tabella.

Attenzione: Prima di eseguire un DELETE, controlla sempre quali righe stai per cancellare.

Il modo più prudente è provare prima la stessa condizione con una SELECT:

SELECT *
FROM clienti
WHERE id = 3;

Se il risultato è proprio la riga che vuoi eliminare, puoi usare lo stesso filtro nel DELETE.

Altro esempio:

SELECT *
FROM clienti
WHERE email = 'test@email.it';

Se vedi solo il cliente di test, puoi cancellarlo così:

DELETE FROM clienti
WHERE email = 'test@email.it';

La condizione è identica. Cambia solo l’azione.

È facile confonderli all’inizio, ma fanno cose molto diverse:

  • DELETE elimina righe.
  • DROP TABLE elimina la tabella intera, compresa la struttura.

Se immagini una rubrica, DELETE cancella uno o più contatti. DROP TABLE butta via tutta la rubrica.

Nel mondo reale, non sempre conviene eliminare davvero una riga.

Per esempio, se un cliente ha fatto ordini o ricevuto fatture, potresti voler conservare la sua storia. In questi casi spesso si aggiunge una colonna come attivo.

UPDATE clienti
SET attivo = FALSE
WHERE id = 3;

Così il cliente non risulta più attivo, ma i suoi dati restano disponibili per controlli futuri.

  • DELETE elimina righe.
  • WHERE decide quali righe eliminare.
  • Prima di cancellare, controlla il filtro con una SELECT.
  • DELETE non elimina la struttura della tabella.
  • In alcuni casi conviene disattivare una riga invece di cancellarla.