AGGIORNAMENTO SQL
L'istruzione SQL UPDATE viene utilizzata a aggiorna e modifica i record presenti in un database . Viene utilizzato per modificare i record già esistenti archiviati nelle tabelle del database. Questo comando funziona insieme a WHERE clausola. La condizione specificata nell'istruzione UPDATE viene utilizzata per decidere quali colonne o righe della tabella verranno interessate o modificate.
Il comando UPDATE può essere utilizzato anche per aggiornare una tabella con un'altra tabella. Può essere utilizzato anche per aggiornare la data e l'ora di una query SQL.
ACCESSO ALL'AGGIORNAMENTO SQL
L'istruzione SQL UPDATE può essere utilizzata anche per aggiornare una tabella utilizzando un'altra tabella collegata da un join. Questa è nota come istruzione SQL UPDATE JOIN.
UPDATE table1, table2, INNER JOIN table1 ON table1.column1 = table2.column1 SET table1.column1 = table2.column2 WHERE condition
Quella che segue è la sintassi di base dell'istruzione UPDATE che utilizza la clausola JOIN:
Esempio:
CREATE TABLE TAE1 (Col1 INT, Col2 INT, Col3 VARCHAR (100)) INSERT INTO TAE1 (Col1, Col2, Col3) SELECT 1, 11, 'FIRST' UNION ALL SELECT 11,12, 'SECOND' UNION ALL SELECT 21, 13, 'THIRD' UNION ALL SELECT 31, 14, 'FOURTH'
Creiamo prima la prima tabella TAE1.
CREATE TABLE TAE2 (Col1 INT, Col2 INT, Col3 VARCHAR (100)) INSERT INTO TAE2 (Col1, Col2, Col3) SELECT 1, 21, 'TWO-ONE' UNION ALL SELECT 11,22, 'TWO-TWO' UNION ALL SELECT 21, 23, 'TWO-THREE' UNION ALL SELECT 31, 24, 'TWO-FOUR'
Ora creiamo la seconda tabella TAE2.
SELECT * FROM TAE1
Col1 | Col2 | Col3 |
1 | 11 | Prima |
11 | 12 | Secondo |
21 | 13 | Terzo |
31 | 14 | Quarto |
Risultato:
Vediamo ora il contenuto della tabella TAE2.
SELECT * FROM TAE2
Risultato:
Col1 | Col2 | Col3 |
1 | 21 | Due uno |
11 | 22 | Due-due |
21 | 23 | Due-tre |
31 | 24 | Due-quattro |
Ora la query seguente aggiornerà le righe di TAE1 dove il valore di Col1 è 21 e 31 utilizzando la tabella TAE2 dove sono presenti righe simili e dove Col1 è 21 e 31. Verranno aggiornati solo i record corrispondenti di Col2 e Col3 della tabella TAE1 .
UPDATE TAE1 SET Col2 = TAE2.Col2, Col3 = TAE2.Col3 FROM TAE1 INNER JOIN TAE2 ON TAE1.Col1 = TAE2.Col1 WHERE TAE1.Col1 IN (21, 31);
Risultato:
Col1 | Col2 | Col3 |
1 | 11 | Prima |
11 | 12 | Secondo |
21 | 13 | Due-tre |
31 | 14 | Due-quattro |
Ora, se si verifica il contenuto della tabella TAE1, si otterrà il seguente output.
Tuttavia, il contenuto di TAE2 rimane invariato.
Col1 | Col2 | Col3 |
1 | 21 | Due uno |
11 | 22 | Due-due |
21 | 23 | Due-tre |
31 | 24 | Due-quattro |
Questo è un esempio di utilizzo della clausola JOIN con l'istruzione UPDATE. Ha unito le due tabelle precedenti.
DATA DI AGGIORNAMENTO SQL
L'istruzione SQL UPDATE DATE viene utilizzata per aggiornare il campo della data e dell'ora in SQL.
UPDATE table_name SET data_field = ‘data_value’ WHERE conditions;
Quella che segue è la sintassi generale dell'aggiornamento del campo data e ora in SQL :
UPDATE table_name SET data_field = getdate();
Quella che segue è la sintassi dell'aggiornamento della data con la data corrente in SQL :
UPDATE table_name SET data_field = CURRENT_TIMESTAMP;
Quella che segue è la sintassi per aggiornare la data e l'ora con la data e l'ora correnti in SQL:
UPDATE table_name SET data_field = ‘YYYY-MM-DD HH:MM:SS’;
Quella che segue è la sintassi per aggiornare la data e l'ora con una data e un'ora specifiche in SQL:
UPDATE table_name SET data_field = CAST(‘date_value’ AS DATETIME);
Quella che segue è la sintassi per aggiornare la data con un valore specifico quando il formato della data non è noto:
Esempio:
UPDATE Employee SET DOJ = ‘2021-07-05’ WHERE Dept_ID = 10;
Quello che segue è un esempio di aggiornamento della data in più righe nel Dipendente specificato tabella.
Emp_ID | Emp_Name | Denominazione | ID_gestore | DOJ | Stipendio | ID_reparto |
1 | Emp1 | Direttore | 11-07-2021 | 45000 | 10 | |
2 | Emp2 | Direttore | 11-07-2021 | 40000 | 20 | |
3 | Emp3 | Gestore | Emp1 | 11-07-2021 | 27000 | 10 |
4 | Emp4 | Gestore | Emp2 | 08-10-2021 | 25000 | 20 |
5 | Emp5 | Analista | Emp3 | 11-07-2021 | 20000 | 10 |
6 | Emp6 | Analista | Emp3 | 08-10-2021 | 18000 | 10 |
7 | Emp7 | Impiegato | Emp3 | 11-07-2021 | 15000 | 10 |
8 | Emp8 | Commerciante | Emp4 | 2021-09-09 | 14000 | 20 |
9 | Emp9 | Commerciante | Emp4 | 08-10-2021 | 13000 | 20 |
Query:
Risultato:
Emp_ID | Emp_Name | Denominazione | ID_gestore | DOJ | Stipendio | ID_reparto |
1 | Emp1 | Direttore | 05-07-2021 | 45000 | 10 | |
3 | Emp3 | Gestore | Emp1 | 05-07-2021 | 27000 | 10 |
5 | Emp5 | Analista | Emp3 | 05-07-2021 | 20000 | 10 |
6 | Emp6 | Analista | Emp3 | 05-07-2021 | 18000 | 10 |
7 | Emp7 | Impiegato | Emp3 | 05-07-2021 | 15000 | 10 |
Pertanto, la colonna DOJ per tutti i dipendenti con Dept_ID 10 è stata aggiornata.
Di seguito è riportato l'esempio di aggiornamento della data di ammissione in una tabella studenti utilizzando la funzione CAST:
UPDATE student
SET admission_date = CAST(‘2021-04-10’ AS DATETIME)
WHERE id = 42;