UPDATE
Modificare una riga esistente
Sezione intitolata “Modificare una riga esistente”UPDATE serve quando un dato esiste già, ma deve cambiare.
Un cliente cambia città. Un prodotto cambia prezzo. Un ordine passa da “in preparazione” a “spedito”. In tutti questi casi non vuoi creare una nuova riga: vuoi aggiornare quella giusta.
Ecco la forma base:
UPDATE clientiSET citta = 'Bologna'WHERE id = 1;Questa query dice:
“Nella tabella
clienti, cambia la città inBologna, ma solo per la riga conid = 1.”
Il ruolo di SET
Sezione intitolata “Il ruolo di SET”SET indica cosa deve cambiare:
SET citta = 'Bologna'Puoi aggiornare anche più colonne insieme:
UPDATE clientiSET citta = 'Bologna', email = 'luca.nuova@email.it'WHERE id = 1;Qui cambi sia la città sia l’email dello stesso cliente.
Il ruolo di WHERE
Sezione intitolata “Il ruolo di WHERE”La parte più delicata è WHERE.
WHERE id = 1Questa condizione sceglie la riga da modificare. Senza di lei, il database non sa che vuoi aggiornare un solo cliente.
Attenzione: Un
UPDATEsenzaWHEREpuò modificare tutte le righe della tabella.
Una buona abitudine
Sezione intitolata “Una buona abitudine”Prima di fare un aggiornamento importante, prova la condizione con una SELECT:
SELECT *FROM clientiWHERE id = 1;Se la SELECT mostra una sola riga, sai che l’UPDATE toccherà una sola riga. Se ne mostra molte, fermati e controlla meglio il filtro.
Usare il valore attuale
Sezione intitolata “Usare il valore attuale”A volte il nuovo valore dipende da quello già presente.
Per esempio, questa query aumenta del 10% il prezzo di un prodotto:
UPDATE prodottiSET prezzo = prezzo * 1.10WHERE id = 5;prezzo * 1.10 significa: “prendi il prezzo attuale e moltiplicalo per 1,10”.
È una possibilità utile, ma va usata con attenzione. Anche qui, il filtro WHERE decide quali righe cambieranno.
Riepilogo rapido
Sezione intitolata “Riepilogo rapido”UPDATEmodifica righe già esistenti.SETdice quali colonne cambiare.WHEREdice quali righe modificare.- Prima di un aggiornamento importante, controlla il filtro con una
SELECT. - Senza
WHERE, rischi di aggiornare tutta la tabella.