UPDATE užklausa MySQL yra DML sakinys, naudojamas lentelės duomenims keisti. Užklausai UPDATE turi būti reikalinga sąlyga SET ir WHERE. SET sąlyga naudojama WHERE sąlygoje nurodyto stulpelio reikšmėms pakeisti.
JOIN sąlyga MySQL yra naudojama sakinyje norint gauti duomenis, sujungiant kelias lenteles vienoje užklausoje.
UPDATE JOIN yra MySQL sakinys, naudojamas kryžminėms lentelėms atnaujinti, o tai reiškia, kad galime atnaujinti vieną lentelę naudodami kitą lentelę su sąlyga JOIN . Ši užklausa atnaujina ir pakeičia duomenis, kai yra sujungtos daugiau nei viena lentelė PAGRINDINĖ Raktas ir UŽSIENIO Raktas ir nurodyta prisijungimo sąlyga. Vienu metu galime atnaujinti vieną ar kelis stulpelius naudodami ATNAUJINTI užklausą .
PASTABA: MySQL UPDATE JOIN teiginys palaikomas nuo 4.0 ar naujesnės versijos.
Sintaksė
Toliau pateikiama pagrindinė UPDATE JOIN sakinio sintaksė, skirta modifikuoti įrašą į MySQL lentelę:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
Aukščiau pateiktoje MySQL UPDATE JOIN sintaksėje:
Pirma, mes nurodėme dvi lenteles: pagrindinę lentelę (Tab1) ir kitą lentelę (tab2) po UPDATE. Po UPDATE sąlyga būtina nurodyti bent vieną lentelę. Toliau mes nurodėme tipus JOIN sąlygos , t.y., arba VIDINIS JOIN, arba KAIRĖ PRISIJUNGTI , kurie pasirodo iškart po sakinio UPDATE, o tada sujungimo predikatas, nurodytas po raktinio žodžio ON. Tada turime priskirti naujas reikšmes Tab1 ir (arba) Tab2 stulpeliams, kad būtų galima juos modifikuoti. Galiausiai sąlyga WHERE naudojama naujinimo eilėms apriboti.
Kaip MySQL veikia UPDATE JOIN?
UPDATE JOIN darbo procesas MySQL yra tokia pati, kaip aprašyta aukščiau pateiktoje sintaksėje. Tačiau kartais pastebėtume, kad vien ši užklausa atliko kryžminės lentelės atnaujinimą, neįtraukdama jokių sujungimų. Ši sintaksė yra dar vienas būdas atnaujinti vieną lentelę naudojant kitą lentelę :
kaip atidaryti failą su java
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
Aukščiau pateiktas teiginys UPDATE duoda tokį patį rezultatą kaip ir UPDATE JOIN su išlygomis INNER JOIN arba LEFT JOIN. Tai reiškia, kad aukščiau pateiktą sintaksę galime perrašyti kaip UPDATE JOIN sintaksę, rodomą aukščiau:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Paimkime keletą pavyzdžių, kad suprastume, kaip UPDATE JOIN sakinys veikia MySQL lentelėje.
ATNAUJINTI PRISIJUNGIMO pavyzdžiai
Pirmiausia sukursime dvi pavadinimų lenteles Spektaklis ir Darbuotojas , ir abi lentelės yra susijusios per išorinį raktą. Čia „našumas“ yra a tėvų stalas , o „Darbuotojai“ yra vaikas stalo . Šie scenarijai sukuria abi lenteles kartu su jų įrašais.
Lentelė: našumas
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Tada užpildykite lentelės įrašus naudodami INSERT sakinį.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Tada vykdykite SELECT užklausą, kad patikrintumėte duomenis, kaip parodyta toliau pateiktame paveikslėlyje:
Lentelė: Darbuotojai
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) );
Tada užpildykite lentelės įrašus naudodami INSERT sakinį.
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);
Tada vykdykite SELECT užklausą, kad patikrintumėte duomenis, kaip parodyta toliau pateiktame paveikslėlyje:
ATNAUJINTI PRISIJUNGIMĄ naudojant VIDINIŲ JOIN pavyzdį
Tarkime, kad norime atnaujinti darbuotojo darbo užmokestis pagal darbo rezultatus . Darbuotojo atlyginimą galime atnaujinti lentelėje Darbuotojai naudodami teiginį UPDATE INNER JOIN, nes veiklos rezultatai procentais yra saugomas našumo lentelėje.
Aukščiau pateiktose lentelėse turime naudoti spektaklis lauką, kad prisijungtumėte prie lentelės Darbuotojai ir našumas. Žiūrėkite žemiau pateiktą užklausą:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Atlikę aukščiau pateiktą teiginį, gausime žemiau pateiktą išvestį, kurioje pamatysime, kad darbuotojo atlyginimo stulpelis sėkmingai atnaujintas.
Leiskite mums suprasti, kaip ši užklausa veikia MySQL. Užklausoje nurodėme tik lentelę Darbuotojai po sąlyga UPDATE. Taip yra todėl, kad norime pakeisti įrašą tik lentelėje Darbuotojai, o ne abiejose lentelėse.
Užklausa patikrina kiekvienos lentelės „Darbuotojai“ eilutės našumo stulpelio reikšmes, palyginti su lentelės „Našumas“ našumo stulpeliu. Jei jis gaus suderinto našumo stulpelį, jis paima procentą našumo lentelėje ir atnaujina lentelės Darbuotojų atlyginimo stulpelį. Ši užklausa atnaujina visus įrašus lentelėje Darbuotojai, nes užklausoje UPDATE JOIN nenurodėme sąlygos WHERE.
ATNAUJINTI JOIN naudojant LEFT JOIN Pavyzdys
Norėdami suprasti UPDATE JOIN su LEFT JOIN, pirmiausia turime įterpti dvi naujas eilutes į lentelę Darbuotojai:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Kadangi šie darbuotojai yra naujai samdomi, todėl jų veiklos rezultatų nėra. Žiūrėkite žemiau pateiktą išvestį:
Jeigu norime atnaujinti atlyginimą naujai priimtiems darbuotojams , negalime naudoti užklausos UPDATE INNER JOIN. Taip yra dėl to, kad našumo lentelėje nėra jų našumo duomenų. Taigi, norėdami patenkinti šį poreikį, naudosime teiginį UPDATE LEFT JOIN.
MySQL sakinys UPDATE LEFT JOIN naudojamas lentelės eilutei atnaujinti, kai kitos lentelės atitinkamoje eilutėje nerandama jokių įrašų.
Pavyzdžiui , jei norime naujai priimtam darbuotojui atlyginimą padidinti 2,5 proc., tai galime padaryti tokio teiginio pagalba:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Atlikę aukščiau pateiktą užklausą, gausime išvestį kaip žemiau esantį paveikslėlį, kuriame pamatysime, kad naujai priimtų darbuotojų atlyginimas yra sėkmingai atnaujintas.
Šiame straipsnyje sužinojome apie „MySQL Update Join“ teiginį, kuris leidžia pakeisti esamus duomenis vienoje lentelėje su naujais duomenimis iš kitos lentelės su sąlyga JOIN. Ši užklausa yra naudinga, kai reikia modifikuoti tam tikrus stulpelius, nurodytus WHERE sąlygoje, kartu naudojant INNER JOIN arba LEFT JOIN sąlygas.