DELETE
Cancellare righe da una tabella
Sezione intitolata “Cancellare righe da una tabella”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 clientiWHERE id = 3;Questa query cancella il cliente con id = 3.
Il filtro è la parte più importante
Sezione intitolata “Il filtro è la parte più importante”Con DELETE, WHERE è la tua cintura di sicurezza.
WHERE id = 3Senza 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 controllo con SELECT
Sezione intitolata “Il controllo con SELECT”Il modo più prudente è provare prima la stessa condizione con una SELECT:
SELECT *FROM clientiWHERE id = 3;Se il risultato è proprio la riga che vuoi eliminare, puoi usare lo stesso filtro nel DELETE.
Altro esempio:
SELECT *FROM clientiWHERE email = 'test@email.it';Se vedi solo il cliente di test, puoi cancellarlo così:
DELETE FROM clientiWHERE email = 'test@email.it';La condizione è identica. Cambia solo l’azione.
DELETE non è DROP TABLE
Sezione intitolata “DELETE non è DROP TABLE”È facile confonderli all’inizio, ma fanno cose molto diverse:
DELETEelimina righe.DROP TABLEelimina la tabella intera, compresa la struttura.
Se immagini una rubrica, DELETE cancella uno o più contatti. DROP TABLE butta via tutta la rubrica.
A volte è meglio non cancellare
Sezione intitolata “A volte è meglio non cancellare”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 clientiSET attivo = FALSEWHERE id = 3;Così il cliente non risulta più attivo, ma i suoi dati restano disponibili per controlli futuri.
Riepilogo rapido
Sezione intitolata “Riepilogo rapido”DELETEelimina righe.WHEREdecide quali righe eliminare.- Prima di cancellare, controlla il filtro con una
SELECT. DELETEnon elimina la struttura della tabella.- In alcuni casi conviene disattivare una riga invece di cancellarla.