CodeGym /Java Course /All lectures for IT purposes /Modifica dei dati in una tabella

Modifica dei dati in una tabella

All lectures for IT purposes
Livello 1 , Lezione 186
Disponibile

4.1 Istruzione UPDATE SET

Se è necessario modificare i record esistenti nella tabella, per questo utilizziamo l'operatore UPDATE.

Da un lato, l'operatore UPDATEè simile a operator INSERT, perché dobbiamo specificare nuovi valori per le colonne. E d'altra parte, sull'operatore SELECT, perché ti consente di lavorare immediatamente con i gruppi di dati.

Importante! Lo scopo dell'operatore UPDATEè modificare i dati non in una riga della tabella, ma in tutte le righe che soddisfano una determinata condizione. E se commetti un piccolo errore, puoi facilmente perdere tutti i dati nella tabella.

Vista generale della richiesta:

UPDATE table SET
  	column 1 = expression 1,
  	column 2 = expression 2,
  	column 3 = expression 3
WHERE condition;

Scriviamo una query che aumenterà lo stipendio di tutti i nostri dipendenti di 100. La nostra query sarà simile a questa:

UPDATE employee SET
  	salary = salary+100;

E ora per tutti coloro che hanno uno stipendio inferiore a 50K, lo aumenteremo anche del 20%. Esempio di richiesta:

UPDATE employee SET
  	salary = salary*1.2
WHERE salary<50000;

E, naturalmente, aumenteremo di 2 volte lo stipendio del regista, come potrebbe essere senza di lui:

UPDATE employee SET
  	salary = salary*2
WHERE id=4;

4.2 Scenari complessi di modifica dei dati

Se decidi di modificare i dati in più tabelle contemporaneamente o quando modifichi i dati in una tabella, devi riempirla con i dati di un'altra o semplicemente in qualche modo utilizzare i dati di un'altra tabella nel processo di modifica della prima, poi ci aspettano sorprese.

Proviamo a cambiare il livello di tutti gli utenti nella tabella degli utenti che esistono nella tabella dei dipendenti. Per semplicità, verificheremo la coincidenza degli utenti per nome.

Come vorremmo scrivere questa query:

UPDATE user SET
  	level = 80,
WHERE user . name IN ( list of names from employee table );

Bene, aggiungiamo un elenco di nomi dalla tabella dei dipendenti a questa query:

UPDATE user SET
  	level = 80,
WHERE user.name IN (select name from employee);

Interessante! La stessa query SQL per ottenere i nomi si è rivelata ancora più breve della descrizione dell'attività. I creatori di SQL non hanno mangiato il loro pane invano.

Costretto a sconvolgerti -questo approccio non funzionerà. Per prima cosa devi unirti a queste tabelle, sarà simile a questa:

UPDATE table 1, table 2 SET
  	column 1 = expression 1,
  	column 2 = expression 2,
  	column 3 = expression 3
WHERE table 1.id = table 2.ref_id;

Rendiamolo un po' più difficile. È necessario impostare il livello su 80 solo per i buoni impiegati il ​​cui stipendio sarà superiore a 50k. La soluzione completa sarà simile a questa:

UPDATE user, good_employees SET
  	user.level = 80
WHERE user.name = good_employees.name;

Tale join di tabelle è in realtà INNER JOIN, in modo che alla fine rimarranno solo gli utenti che hanno una corrispondenza per nome nella seconda tabella.

Ma abbiamo ancora bisogno di selezionare in qualche modo buoni dipendenti, quindi aggiungiamo altro codice:

SELECT * FROM employee WHERE salary >= 50000

E ora sostituiamo questa tabella nella nostra query finale:

UPDATE user,
    (SELECT * FROM employee WHERE salary >= 50000) good_emps
SET
    user.level = 80
WHERE user.name = good_emps.name;

Conviverci ora.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION