Come modificare i dati nella tabella SQL
I dati nella tabella SQL possono essere modificati tramite il comando UPDATE.
UPDATE tabella
SET attributo = dato
[, attributo= dato ]
[ WHERE condizione ]
Questo comando mi consente di modificare il valore dei record ( righe ) in uno o più campi ( colonne ) della tabella.
Nella clausola SET è indicato l'attributo e il valore da registrare dopo il simbolo uguale.
Esempio
UPDATE Persone
SET regione = 'Lazio'
WHERE residenza = "Roma"
Il dato può essere un valore, il risultato di un altra select nidificata, il simbolo NULL o DEFAULT.
Il comando aggiorna tutti i dati che soddisfano la condizione indicata nella clausola WHERE.
Nota. La condizione WHERE è facoltativa. Se la condizione non è indicata, il comando UPDATE aggiorna tutti i dati della tabella.
Un esempio pratico
Ho la tabella persone
Per aumentare di un anno il campo Età di tutte le righe scrivo il comando UPDATE senza condizioni
UPDATE Persone
SET anno = anno +1
Nella query non è presente la clausola WHERE.
Quindi, la condizione è sempre soddisfatta per ogni riga.
Il risultato è il seguente
Attenzione. Il nuovo valore si sovrappone a quelli precedenti che, pertanto, dopo l'esecuzione della query sono perduti per sempre.
Esempio 2
Devo scrivere "Firenze" in tutte le righe in cui il cognome è "Rossi".
Per farlo scrivo il comando UPDATE con la clausola WHERE.
UPDATE Persone
SET residenza ="Firenze"
WHERE cognome ='Rossi'
Il DBMS seleziona le righe in cui l'attributo Cognome è uguale a "Rossi".
Poi le modifica scrivendo "Firenze" nell'attributo Residenza.
In questo caso soltanto due righe della tabella sono modificate.
Come modificare un solo record della tabella
Per modificare una singola riga devo indicare una condizione in grado di identificarla in modo univoco.
L'ideale è usare una chiave primaria ( PRIMARY KEY ) come condizione.
Esempio
La tabella Dipendenti ha una chiave primaria nell'attributo Matricola.
Per aggiornare lo stato civile della matricola 2234 scrivo il comando UPDATE con la clausola WHERE:
UPDATE Dipendenti
SET StatoCivile = "coniugato"
WHERE ( id = "2234" )
Il comando UPDATE modifica solo la riga indicata perché Matricola è una chiave primaria.
Tutti gli altri record non sono modificati poiché sono associati a numeri identificativi diversi.
Esempio 2
Se la tabella non ha una chiave primaria, posso indicare nella condizione WHERE più attributi.
UPDATE Dipendenti
SET StatoCivile = "coniugato"
WHERE ( Nome = "Giovanni ) AND ( Cognome = "Russo" )
Il risultato è lo stesso dell'esempio precedente.
Tuttavia, se nella tabella ci sono due persone con lo stesso nome e cognome, il comando aggiorna entrambe le righe.
Pertanto, è sempre meglio definire una chiave primaria in ogni tabella.
E così via.