UPDATE vaicājums MySQL ir DML priekšraksts, ko izmanto tabulas datu modificēšanai. UPDATE vaicājumam ir nepieciešama klauzula SET un WHERE. SET klauzulu izmanto, lai mainītu WHERE klauzulā norādītās kolonnas vērtības.
JOIN klauzula pakalpojumā MySQL tiek izmantota priekšrakstā, lai izgūtu datus, savienojot vairākas tabulas vienā vaicājumā.
UPDATE JOIN ir MySQL priekšraksts, ko izmanto, lai veiktu starptabulu atjauninājumus, kas nozīmē, ka mēs varam atjaunināt vienu tabulu, izmantojot citu tabulu ar JOIN klauzulas nosacījumu. . Šis vaicājums atjaunina un maina datus, kuros ir apvienotas vairākas tabulas PRIMĀRS Atslēga un ĀRZEMES Atslēga un norādīts savienojuma nosacījums. Mēs varam atjaunināt vienu vai vairākas kolonnas vienlaikus, izmantojot ATJAUNINĀT vaicājumu .
PIEZĪME. MySQL UPDATE JOIN priekšraksts tiek atbalstīts no 4.0 versijas vai jaunākas versijas.
Sintakse
Tālāk ir sniegta priekšraksta UPDATE JOIN pamata sintakse, lai modificētu ierakstu MySQL tabulā:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
Iepriekš minētajā MySQL UPDATE JOIN sintakse:
Pirmkārt, mēs esam norādījuši divas tabulas: galveno tabulu (Tab1) un citu tabulu (tab2) pēc klauzulas UPDATE. Pēc UPDATE klauzulas ir jānorāda vismaz viena tabula. Tālāk mēs esam norādījuši veidus JOIN klauzulas , t.i., vai nu INNER JOIN vai PA kreisi PIEVIENOTIES , kas parādās tieši aiz klauzulas UPDATE un pēc tam savienojuma predikāta, kas norādīts aiz atslēgvārda ON. Pēc tam mums ir jāpiešķir jaunās vērtības kolonnām Tab1 un/vai Tab2, lai tās pārveidotu tabulā. Visbeidzot, WHERE klauzulas nosacījums tiek izmantots, lai ierobežotu atjaunināšanas rindas.
Kā MySQL darbojas UPDATE JOIN?
UPDATE JOIN darba process MySQL ir tāda pati, kā aprakstīts iepriekš minētajā sintaksē. Bet dažreiz mēs atklājam, ka šis vaicājums viens pats veica starptabulu atjaunināšanu, neiesaistot nekādas pievienošanās. Tālāk norādītā sintakse ir vēl viens veids, kā atjaunināt vienu tabulu, izmantojot citu tabulu :
kas ir direktoriju iesniegšana
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
Iepriekš minētais UPDATE priekšraksts rada tādu pašu rezultātu kā UPDATE JOIN ar klauzulām INNER JOIN vai LEFT JOIN. Tas nozīmē, ka mēs varam pārrakstīt iepriekš minēto sintaksi kā UPDATE JOIN sintakse, kas parādīta iepriekš:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Ņemsim dažus piemērus, lai saprastu, kā MySQL tabulā darbojas priekšraksts UPDATE JOIN.
ATJAUNINĀT PIEVIENOŠANOS Piemēri
Pirmkārt, mēs izveidosim divas tabulas ar nosaukumu Performance un Darbinieks , un abas tabulas ir saistītas, izmantojot ārējo atslēgu. Šeit 'Izpildījums' ir a vecāku tabula , un “Darbinieki” ir bērns tabula . Šie skripti izveido abas tabulas kopā ar to ierakstiem.
Tabula: Veiktspēja
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Pēc tam aizpildiet ierakstus tabulā, izmantojot INSERT priekšrakstu.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Pēc tam izpildiet vaicājumu SELECT, lai pārbaudītu datus, kā parādīts zemāk esošajā attēlā:
Tabula: Darbinieki
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) );
Pēc tam aizpildiet ierakstus tabulā, izmantojot INSERT priekšrakstu.
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);
Pēc tam izpildiet vaicājumu SELECT, lai pārbaudītu datus, kā parādīts zemāk esošajā attēlā:
ATJAUNINĀT JOIN, izmantojot IEKŠĒJĀS PIEVIENOŠANĀS piemēru
Pieņemsim, ka mēs vēlamies atjaunināt darbinieka alga, pamatojoties uz viņa darba rezultātiem . Mēs varam atjaunināt darbinieka algu tabulā Darbinieki, izmantojot paziņojumu UPDATE INNER JOIN, jo sniegums procentos tiek saglabāts veiktspējas tabulā.
Iepriekš minētajās tabulās mums ir jāizmanto sniegumu lauks, lai pievienotos tabulai Darbinieki un sniegums. Skatiet zemāk esošo vaicājumu:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Pēc augstāk minētā paziņojuma izpildīšanas iegūsim zemāk redzamo izvadi, kurā varēsim redzēt, ka darbinieka algas aile ir veiksmīgi atjaunota.
Ļaujiet mums saprast, kā šis vaicājums darbojas MySQL. Vaicājumā mēs esam norādījuši tikai tabulu Darbinieki pēc klauzulas UPDATE. Tas ir tāpēc, ka mēs vēlamies mainīt ierakstu tikai tabulā Darbinieki, nevis abās tabulās.
Vaicājums pārbauda katras tabulas 'Darbinieku' rindas veiktspējas kolonnas vērtības salīdzinājumā ar tabulas 'Veiktspēja' veiktspējas kolonnu. Ja tas saņems atbilstošo snieguma sleju, tas ņem procentus tabulā Darbinieki un atjaunina tabulas Darbinieku algas kolonnu. Šis vaicājums atjaunina visus ierakstus tabulā Darbinieki, jo vaicājumā UPDATE JOIN neesam norādījuši klauzulu WHERE.
ATJAUNINĀT JOIN, izmantojot LEFT JOIN Piemērs
Lai saprastu UPDATE JOIN ar LEFT JOIN, vispirms tabulā Darbinieki ir jāievieto divas jaunas rindas:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Tā kā šie darbinieki ir jauni darbinieki, viņu darbības rādītāji nav pieejami. Skatiet zemāk esošo izvadi:
Ja vēlamies aktualizēt algu jaunpieņemtajiem darbiniekiem , mēs nevaram izmantot vaicājumu UPDATE INNER JOIN. Tas ir saistīts ar to, ka veiktspējas tabulā nav pieejami viņu veiktspējas dati. Tādējādi, lai izpildītu šo vajadzību, mēs izmantosim paziņojumu UPDATE LEFT JOIN.
Paziņojums UPDATE LEFT JOIN pakalpojumā MySQL tiek izmantots, lai atjauninātu rindu tabulā, ja citas tabulas atbilstošajā rindā nav atrasts neviens ieraksts.
Piemēram , ja vēlamies palielināt algu jaunpieņemtam darbiniekam par 2,5%, to varam izdarīt ar sekojoša paziņojuma palīdzību:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Pēc iepriekš minētā vaicājuma izpildes mēs saņemsim zemāk redzamo attēlu, kurā redzams, ka jaunpieņemto darbinieku alga ir veiksmīgi atjaunināta.
Šajā rakstā mēs uzzinājām MySQL Update Join paziņojumu, kas ļauj mainīt esošos datus vienā tabulā ar jaunajiem datiem no citas tabulas ar nosacījumu JOIN. Šis vaicājums ir izdevīgs, ja mums ir jāmaina noteiktas kolonnas, kas norādītas klauzulā WHERE, kā arī jāizmanto klauzulas INNER JOIN vai LEFT JOIN.