Upit UPDATE u MySQL je DML naredba koja se koristi za modificiranje podataka u tablici. Upit UPDATE mora zahtijevati klauzulu SET i WHERE. Klauzula SET koristi se za promjenu vrijednosti stupca navedenog u klauzuli WHERE.
Klauzula JOIN u MySQL-u koristi se u izjavi za dohvaćanje podataka spajanjem više tablica unutar jednog upita.
UPDATE JOIN je MySQL naredba koja se koristi za izvođenje ažuriranja između tablica što znači da možemo ažurirati jednu tablicu pomoću druge tablice s uvjetom klauzule JOIN . Ovaj upit ažurira i mijenja podatke na temelju kojih je spojeno više od jedne tablice PRIMARNO Ključ i STRANI Ključ i navedeni uvjet pridruživanja. Možemo ažurirati jedan ili više stupaca odjednom pomoću AŽURIRAJ upit .
NAPOMENA: Izjava MySQL UPDATE JOIN podržana je od verzije 4.0 ili novije.
Sintaksa
Slijedi osnovna sintaksa izjave UPDATE JOIN za izmjenu zapisa u MySQL tablici:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
U gornjoj sintaksi MySQL UPDATE JOIN:
Prvo smo naveli dvije tablice: glavnu tablicu (Tab1) i drugu tablicu (tab2) nakon klauzule UPDATE. Nakon klauzule UPDATE, potrebno je navesti barem jednu tablicu. Zatim smo naveli vrste JOIN klauzule , tj. ili INNER JOIN ili LIJEVO PRIDRUŽI , koji se pojavljuju odmah nakon klauzule UPDATE i zatim predikata pridruživanja navedenog iza ključne riječi ON. Zatim moramo dodijeliti nove vrijednosti stupcima u Tab1 i/ili Tab2 za izmjenu u tablici. Konačno, uvjet klauzule WHERE koristi se za ograničavanje redaka za ažuriranje.
Kako UPDATE JOIN radi u MySQL-u?
Radni proces UPDATE JOIN u MySQL je isti kao što je opisano u gornjoj sintaksi. Ali ponekad bismo otkrili da je samo ovaj upit izvršio ažuriranje između tablica bez uključivanja bilo kakvih spajanja. Sljedeća sintaksa još je jedan način ažuriranja jedne tablice pomoću druge tablice :
usporedba nizova u Javi
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
Gornja izjava UPDATE proizvodi isti rezultat kao UPDATE JOIN s klauzulama INNER JOIN ili LEFT JOIN. To znači da možemo ponovno napisati gornju sintaksu kao sintaksu UPDATE JOIN prikazanu gore:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Uzmimo nekoliko primjera da bismo razumjeli kako izjava UPDATE JOIN radi u MySQL tablici.
UPDATE JOIN Primjeri
Prvo ćemo stvoriti dvije tablice s imenima Izvođenje i Zaposlenik , a obje su tablice povezane preko stranog ključa. Ovdje je 'Performans' a matična tablica , a 'Zaposlenici' je dijete stol . Sljedeće skripte stvaraju obje tablice zajedno s njihovim zapisima.
Tablica: Izvedba
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Zatim ispunite zapise u tablici pomoću naredbe INSERT.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Zatim izvršite upit SELECT za provjeru podataka kao što je prikazano na slici ispod:
Tablica: Zaposlenici
CREATE TABLE Employees ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, performance INT(11) DEFAULT NULL, salary FLOAT DEFAULT NULL, CONSTRAINT fk_performance FOREIGN KEY (performance) REFERENCES Performance (performance) );
Zatim ispunite zapise u tablici pomoću naredbe INSERT.
INSERT INTO Employees (name, performance, salary) VALUES('Mary', 101, 55000), ('John', 103, 65000), ('Suzi', 104, 85000), ('Gracia', 105, 110000), ('Nancy Johnson', 103, 95000), ('Joseph', 102, 45000), ('Donald', 103, 50000);
Zatim izvršite upit SELECT za provjeru podataka kao što je prikazano na slici ispod:
UPDATE JOIN s INNER JOIN primjerom
Pretpostavimo da želimo ažurirati plaće zaposlenika na temelju njihovog učinka . Možemo ažurirati plaću zaposlenika u tablici Zaposlenici pomoću izjave UPDATE INNER JOIN jer učinak postotak pohranjuje se u tablici performansi.
U gornjim tablicama moramo koristiti izvođenje polje za pridruživanje tablici Zaposlenici i učinak. Pogledajte donji upit:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Nakon izvršenja gornje izjave, dobit ćemo donji izlaz, gdje možemo vidjeti da je stupac plaće zaposlenika uspješno ažuriran.
Hajde da shvatimo kako ovaj upit radi u MySQL-u. U upitu smo naveli samo tablicu Employees iza klauzule UPDATE. To je zato što želimo promijeniti zapis samo u tablici Zaposlenici, a ne u obje tablice.
Upit provjerava vrijednosti stupca izvedbe za svaki red u tablici 'Zaposlenici' u odnosu na stupac izvedbe tablice 'Performanse'. Ako dobije odgovarajući stupac učinka, tada uzima postotak u tablici Učinak i ažurira stupac plaće u tablici Zaposlenici. Ovaj upit ažurira sve zapise u tablici zaposlenika jer nismo naveli klauzulu WHERE u upitu UPDATE JOIN.
UPDATE JOIN s primjerom LEFT JOIN
Da bismo razumjeli UPDATE JOIN s LEFT JOIN, prvo moramo umetnuti dva nova retka u tablicu Employees:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Budući da su ti zaposlenici novozaposleni, njihova evidencija o učinku nije dostupna. Pogledajte donji izlaz:
Ako želimo ažurirati plaću za novozaposlene djelatnike , ne možemo koristiti upit UPDATE INNER JOIN. To je zbog nedostupnosti njihovih podataka o izvedbi u tablici Performance. Stoga ćemo koristiti naredbu UPDATE LEFT JOIN da ispunimo ovu potrebu.
Naredba UPDATE LEFT JOIN u MySQL-u koristi se za ažuriranje retka u tablici kada u odgovarajućem retku druge tablice nema zapisa.
Na primjer , ako novozaposlenom djelatniku želimo povećati plaću za 2,5%, to možemo učiniti uz pomoć sljedeće izjave:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Nakon izvršenja gornjeg upita, dobit ćemo rezultat kao na slici ispod gdje možemo vidjeti da je plaća novozaposlenih zaposlenika uspješno ažurirana.
U ovom smo članku naučili naredbu MySQL Update Join koja nam omogućuje izmjenu postojećih podataka u jednoj tablici s novim podacima iz druge tablice uz uvjet klauzule JOIN. Ovaj upit je koristan kada trebamo modificirati određene stupce navedene u klauzuli WHERE zajedno s korištenjem klauzula INNER JOIN ili LEFT JOIN.