Упит УПДАТЕ у МиСКЛ-у је ДМЛ израз који се користи за модификацију података у табели. Упит УПДАТЕ мора да захтева клаузулу СЕТ и ВХЕРЕ. Клаузула СЕТ се користи за промену вредности колоне наведене у клаузули ВХЕРЕ.
ЈОИН клаузула у МиСКЛ-у се користи у изјави за преузимање података спајањем више табела у оквиру једног упита.
УПДАТЕ ЈОИН је МиСКЛ наредба која се користи за ажурирање унакрсних табела што значи да можемо ажурирати једну табелу користећи другу табелу са условом клаузуле ЈОИН . Овај упит ажурира и мења податке на основу којих је спојено више табела ПРИМАРНА Кључ и СТРАНИ Кључ и одређени услов спајања. Можемо да ажурирамо једну или више колона истовремено користећи УПДАТЕ упит .
НАПОМЕНА: МиСКЛ УПДАТЕ ЈОИН израз је подржан од верзије 4.0 или новије.
Синтакса
Следи основна синтакса изјаве УПДАТЕ ЈОИН за измену записа у МиСКЛ табелу:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
У горњој МиСКЛ УПДАТЕ ЈОИН синтакси:
Прво смо навели две табеле: главну табелу (Таб1) и другу табелу (таб2) после клаузуле УПДАТЕ. Након клаузуле УПДАТЕ, потребно је навести најмање једну табелу. Затим смо навели типове ЈОИН клаузуле , односно, или ИННЕР ЈОИН или ЛЕФТ ЈОИН , који се појављују одмах после клаузуле УПДАТЕ, а затим предиката за придруживање наведен после кључне речи ОН. Затим морамо да доделимо нове вредности колонама у Таб1 и/или Таб2 ради модификације у табели. Коначно, услов клаузуле ВХЕРЕ се користи за ограничавање редова за ажурирање.
Како УПДАТЕ ЈОИН функционише у МиСКЛ-у?
Радни процес УПДАТЕ ЈОИН у МиСКЛ је исти као што је описано у горњој синтакси. Али понекад бисмо открили да је овај упит сам извршио ажурирање унакрсних табела без укључивања икаквих спајања. Следећа синтакса је још један начин за ажурирање једне табеле помоћу друге табеле :
како извршити скрипту
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
Горња изјава УПДАТЕ даје исти резултат као УПДАТЕ ЈОИН са клаузулама ИННЕР ЈОИН или ЛЕФТ ЈОИН. То значи да можемо поново да напишемо горњу синтаксу као УПДАТЕ ЈОИН синтаксу приказану изнад:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Узмимо неколико примера да бисмо разумели како наредба УПДАТЕ ЈОИН функционише у МиСКЛ табели.
УПДАТЕ ЈОИН Примери
Прво ћемо креирати две табеле са именом Перформансе и Запослени , а обе табеле су повезане преко страног кључа. Овде је 'Перформансе' а родитељска табела , а 'Запослени' је дете сто . Следеће скрипте креирају обе табеле заједно са њиховим записима.
Табела: Перформансе
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Затим попуните записе у табели користећи ИНСЕРТ наредбу.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Затим извршите СЕЛЕЦТ упит да бисте потврдили податке као што је приказано на доњој слици:
Табела: Запослени
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) );
Затим попуните записе у табели користећи ИНСЕРТ наредбу.
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);
Затим извршите СЕЛЕЦТ упит да бисте потврдили податке као што је приказано на доњој слици:
АЖУРИРАЈ ПРИДРУЖИВАЊЕ са примером ИННЕР ЈОИН
Претпоставимо да желимо да ажурирамо плате запослених по основу њиховог учинка . Можемо да ажурирамо плату запосленог у табели Емплоиеес користећи изјаву УПДАТЕ ИННЕР ЈОИН јер учинак проценат се чува у табели перформанси.
У горњим табелама морамо да користимо перформансе поље за придруживање табели Запослени и учинак. Погледајте доњи упит:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Након извршења горње изјаве, добићемо доњи излаз, где можемо видети да је колона плата запосленог успешно ажурирана.
Хајде да разумемо како овај упит функционише у МиСКЛ-у. У упиту смо навели само табелу Емплоиеес после клаузуле УПДАТЕ. То је зато што желимо да променимо запис само у табели Запослени, а не у обе табеле.
Упит проверава вредности колоне учинка за сваки ред у табели „Запослени“ у односу на колону перформанси у табели „Перформансе“. Ако ће добити подударну колону учинка, онда узима проценат у табели Учинак и ажурира колону плата у табели Запослени. Овај упит ажурира све записе у табели Емплоиеес јер нисмо навели клаузулу ВХЕРЕ у упиту УПДАТЕ ЈОИН.
УПДАТЕ ЈОИН са ЛЕФТ ЈОИН Пример
Да бисмо разумели УПДАТЕ ЈОИН са ЛЕФТ ЈОИН, прво морамо да убацимо два нова реда у табелу Емплоиеес:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Пошто су ови запослени новозапослени, тако да евиденција о њиховом учинку није доступна. Погледајте доњи излаз:
Уколико желимо да ажурирамо зараду новопримљених , не можемо да користимо упит УПДАТЕ ИННЕР ЈОИН. То је због недоступности њихових података о учинку у табели Перформансе. Стога ћемо користити наредбу УПДАТЕ ЛЕФТ ЈОИН да испунимо ову потребу.
Наредба УПДАТЕ ЛЕФТ ЈОИН у МиСКЛ-у се користи за ажурирање реда у табели када нема записа у одговарајућем реду друге табеле.
На пример , ако желимо да новопримљеном раднику повећамо плату за 2,5%, то можемо учинити уз помоћ следеће изјаве:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Након извршења горњег упита, добићемо излаз као на слици испод где можемо видети да је плата новозапослених успешно ажурирана.
У овом чланку смо научили МиСКЛ Упдате Јоин изјаву која нам омогућава да променимо постојеће податке у једној табели са новим подацима из друге табеле са условом клаузуле ЈОИН. Овај упит је користан када треба да изменимо одређене колоне наведене у клаузули ВХЕРЕ заједно са употребом клаузула ИННЕР ЈОИН или ЛЕФТ ЈОИН.