Заявката UPDATE в MySQL е DML израз, използван за модифициране на данните в таблица. Заявката UPDATE трябва да изисква клаузата SET и WHERE. Клаузата SET се използва за промяна на стойностите на колоната, зададена в клаузата WHERE.
Клаузата JOIN в MySQL се използва в оператора за извличане на данни чрез свързване на множество таблици в рамките на една заявка.
UPDATE JOIN е израз на MySQL, използван за извършване на актуализации на кръстосани таблици, което означава, че можем да актуализираме една таблица, използвайки друга таблица с условието на клаузата JOIN . Тази заявка актуализира и променя данните, на базата на които са обединени повече от една таблици ПЪРВИЧЕН Ключ и ЧУЖДЕСТРАНЕН Ключ и определено условие за присъединяване. Можем да актуализираме една или няколко колони наведнъж, като използваме Заявка за АКТУАЛИЗИРАНЕ .
ЗАБЕЛЕЖКА: Операторът MySQL UPDATE JOIN се поддържа от версия 4.0 или по-нова.
Синтаксис
Следва основен синтаксис на израза UPDATE JOIN за промяна на запис в MySQL таблицата:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
В горния синтаксис на MySQL UPDATE JOIN:
Първо сме посочили двете таблици: основната таблица (Tab1) и друга таблица (tab2) след клаузата UPDATE. След клаузата UPDATE се изисква да се посочи поне една таблица. След това посочихме видовете JOIN клаузи , т.е. или INNER JOIN или ЛЯВО ПРИСЪЕДИНЯВАНЕ , които се появяват точно след клаузата UPDATE и след това предикат за присъединяване, посочен след ключовата дума ON. След това трябва да присвоим новите стойности на колоните в Tab1 и/или Tab2 за промяна в таблицата. И накрая, условието на клаузата WHERE се използва за ограничаване на редове за актуализиране.
Как работи UPDATE JOIN в MySQL?
Работният процес UPDATE JOIN в MySQL е същият като описания в горния синтаксис. Но понякога ще открием, че само тази заявка е извършила актуализацията на кръстосана таблица, без да включва каквито и да е обединения. Следният синтаксис е друг начин за актуализиране на една таблица с помощта на друга таблица :
сравняване на низове в java
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
Горният оператор UPDATE дава същия резултат като UPDATE JOIN с клаузи INNER JOIN или LEFT JOIN. Това означава, че можем да пренапишем горния синтаксис като синтаксис UPDATE JOIN, показан по-горе:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Нека вземем няколко примера, за да разберем как операторът UPDATE JOIN работи в MySQL таблицата.
UPDATE JOIN Примери
Първо ще създадем две таблици с имена производителност и Служител и двете таблици са свързани чрез външен ключ. Тук „Изпълнението“ е a родителска таблица , а „Служители“ е дете маса . Следните скриптове създават и двете таблици заедно с техните записи.
Таблица: Изпълнение
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
След това попълнете записите в таблицата, като използвате израза INSERT.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
След това изпълнете заявката SELECT, за да проверите данните, както е показано на изображението по-долу:
Таблица: Служители
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.
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);
След това изпълнете заявката SELECT, за да проверите данните, както е показано на изображението по-долу:
UPDATE JOIN с пример INNER JOIN
Да предположим, че искаме да актуализираме заплатата на служителите въз основа на тяхното представяне . Можем да актуализираме заплатата на служител в таблицата Employees, като използваме оператора UPDATE INNER JOIN, тъй като производителността процент се съхранява в таблицата на производителността.
В горните таблици трябва да използваме производителност поле, за да се присъедините към таблицата Служители и ефективност. Вижте заявката по-долу:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
След като изпълним горния оператор, ще получим резултата по-долу, където можем да видим, че колоната за заплатата на служителя е актуализирана успешно.
Нека разберем как работи тази заявка в MySQL. В заявката сме посочили само таблицата Employees след клаузата UPDATE. Това е така, защото искаме да променим записа само в таблицата Служители, а не и в двете таблици.
Заявката проверява стойностите на колоната за производителност за всеки ред в таблицата „Служители“ спрямо колоната за производителност на таблицата „Ефективност“. Ако получи съответстващата колона за ефективност, тогава тя взема процента в таблицата с ефективността и актуализира колоната за заплата в таблицата Служители. Тази заявка актуализира всички записи в таблицата Employees, защото не сме посочили клаузата WHERE в заявката UPDATE JOIN.
UPDATE JOIN с пример за LEFT JOIN
За да разберем UPDATE JOIN с LEFT JOIN, първо трябва да вмъкнем два нови реда в таблицата Employees:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Тъй като тези служители са новоназначени, тяхното представяне не е налице. Вижте резултата по-долу:
Ако искаме да актуализираме заплатата за новоназначени служители , не можем да използваме заявката UPDATE INNER JOIN. Това се дължи на липсата на техните данни за ефективност в таблицата за ефективност. По този начин ще използваме командата UPDATE LEFT JOIN, за да изпълним тази нужда.
Операторът UPDATE LEFT JOIN в MySQL се използва за актуализиране на ред в таблица, когато няма намерени записи в съответния ред на друга таблица.
Например , ако искаме да увеличим заплатата на новоназначен служител с 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;
След като изпълним горната заявка, ще получим резултата като изображението по-долу, където можем да видим, че заплатата на новонаетите служители е актуализирана успешно.
В тази статия научихме оператора MySQL Update Join, който ни позволява да променяме съществуващите данни в една таблица с новите данни от друга таблица с условието на клаузата JOIN. Тази заявка е полезна, когато трябва да модифицираме определени колони, посочени в клаузата WHERE, заедно с използването на клаузите INNER JOIN или LEFT JOIN.