logo

AKTUALIZÁCIA MySQL PRIPOJTE SA

UPDATE dotaz v MySQL je príkaz DML používaný na úpravu údajov tabuľky. Dotaz UPDATE musí vyžadovať klauzuly SET a WHERE. Klauzula SET sa používa na zmenu hodnôt stĺpca špecifikovaného v klauzule WHERE.

Klauzula JOIN v MySQL sa používa v príkaze na získanie údajov spojením viacerých tabuliek v rámci jedného dotazu.

UPDATE JOIN je príkaz MySQL používaný na vykonávanie aktualizácií medzi tabuľkami, čo znamená, že môžeme aktualizovať jednu tabuľku pomocou inej tabuľky s podmienkou klauzuly JOIN. . Tento dotaz aktualizuje a mení údaje, na základe ktorých je spojených viac ako jedna tabuľka PRIMÁRNY Kľúč a ZAHRANIČNÝ Kľúč a špecifikovaná podmienka spojenia. Môžeme aktualizovať jeden alebo viacero stĺpcov naraz pomocou AKTUALIZOVAŤ dotaz .

POZNÁMKA: Príkaz MySQL UPDATE JOIN je podporovaný od verzie 4.0 alebo vyššej.

Syntax

Nasleduje základná syntax príkazu UPDATE JOIN na úpravu záznamu do tabuľky MySQL:

 UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition; 

Vo vyššie uvedenej syntaxi MySQL UPDATE JOIN:

Najprv sme špecifikovali dve tabuľky: hlavnú tabuľku (Tab1) a ďalšiu tabuľku (tab2) po klauzule UPDATE. Po klauzule UPDATE je potrebné zadať aspoň jednu tabuľku. Ďalej sme špecifikovali typy klauzuly JOIN , teda buď VNÚTORNÉ SPOJENIE resp ĽAVÉ PRIPOJENIE , ktoré sa objavia hneď za klauzulou UPDATE a potom predikátom spojenia zadaným za kľúčovým slovom ON. Potom musíme priradiť nové hodnoty do stĺpcov v Tab1 a/alebo Tab2 na úpravu do tabuľky. Nakoniec sa podmienka klauzuly WHERE používa na obmedzenie riadkov na aktualizáciu.

Ako funguje UPDATE JOIN v MySQL?

Pracovný proces UPDATE JOIN v MySQL je rovnaký, ako je opísané vo vyššie uvedenej syntaxi. Niekedy by sme však zistili, že tento dotaz sám o sebe vykonal aktualizáciu medzi tabuľkami bez toho, aby zahŕňal akékoľvek spojenia. Nasledujúca syntax je ďalším spôsobom aktualizácie jednej tabuľky pomocou inej tabuľky :

t ff
 UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition; 

Vyššie uvedený príkaz UPDATE poskytuje rovnaký výsledok ako príkaz UPDATE JOIN s klauzulou INNER JOIN alebo LEFT JOIN. Znamená to, že vyššie uvedenú syntax môžeme prepísať ako syntax UPDATE JOIN zobrazenú vyššie:

 UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition 

Uveďme si niekoľko príkladov, aby sme pochopili, ako funguje príkaz UPDATE JOIN v tabuľke MySQL.

Príklady UPDATE JOIN

Najprv vytvoríme dve tabuľky s názvom Výkon a zamestnanec a obe tabuľky sú prepojené prostredníctvom cudzieho kľúča. Tu je „Výkon“ a rodičovská tabuľka a „Zamestnanci“ sú dieťa tabuľky . Nasledujúce skripty vytvoria obe tabuľky spolu s ich záznamami.

Tabuľka: Výkon

 CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) ); 

Ďalej vyplňte záznamy v tabuľke pomocou príkazu INSERT.

 INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08); 

Potom vykonajte dotaz SELECT na overenie údajov, ako je znázornené na obrázku nižšie:

Aktualizácia MySQL Pripojte sa

Tabuľka: Zamestnanci

 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) ); 

Ďalej vyplňte záznamy v tabuľke pomocou príkazu 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); 

Potom vykonajte dotaz SELECT na overenie údajov, ako je znázornené na obrázku nižšie:

Aktualizácia MySQL Pripojte sa

UPDATE JOIN s INNER JOIN Príklad

Predpokladajme, že chceme aktualizovať mzdu zamestnanca na základe jeho výkonu . Mzdu zamestnanca môžeme aktualizovať v tabuľke Zamestnanci pomocou príkazu UPDATE INNER JOIN, pretože výkon percentá je uložený v tabuľke výkonnosti.

Vo vyššie uvedených tabuľkách musíme použiť výkon do poľa Zamestnanci a výkonnosť. Pozrite si nižšie uvedený dotaz:

 UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage; 

Po vykonaní vyššie uvedeného príkazu dostaneme výstup uvedený nižšie, kde vidíme, že stĺpec mzdy zamestnanca je úspešne aktualizovaný.

Aktualizácia MySQL Pripojte sa

Poďme pochopiť, ako tento dotaz funguje v MySQL. V dotaze sme za klauzulou UPDATE zadali iba tabuľku Zamestnanci. Je to preto, že chceme zmeniť záznam iba v tabuľke Zamestnanci, nie v oboch tabuľkách.

Dotaz kontroluje hodnoty stĺpca výkonu pre každý riadok v tabuľke „Zamestnanci“ v porovnaní so stĺpcom výkonu tabuľky „Výkon“. Ak získa zodpovedajúci stĺpec výkonu, vezme percentá v tabuľke Výkon a aktualizuje stĺpec platov v tabuľke Zamestnanci. Tento dotaz aktualizuje všetky záznamy v tabuľke Zamestnanci, pretože sme nešpecifikovali klauzulu WHERE v dotaze UPDATE JOIN.

UPDATE JOIN s LEFT JOIN Príklad

Aby sme pochopili UPDATE JOIN s LEFT JOIN, musíme najprv vložiť dva nové riadky do tabuľky Zamestnanci:

 INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000); 

Keďže títo zamestnanci sú novými zamestnancami, ich záznam o výkonnosti nie je k dispozícii. Pozrite si výstup nižšie:

Aktualizácia MySQL Pripojte sa

Ak chceme aktualizovať plat pre novoprijatých zamestnancov , nemôžeme použiť dotaz UPDATE INNER JOIN. Je to kvôli nedostupnosti ich údajov o výkone v tabuľke výkonu. Na splnenie tejto potreby teda použijeme príkaz UPDATE LEFT JOIN.

Príkaz UPDATE LEFT JOIN v MySQL sa používa na aktualizáciu riadku v tabuľke, keď sa v príslušnom riadku inej tabuľky nenašli žiadne záznamy.

Napríklad , ak chceme novoprijatému zamestnancovi zvýšiť mzdu o 2,5 %, môžeme to urobiť pomocou nasledujúceho vyhlásenia:

 UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL; 

Po vykonaní vyššie uvedeného dotazu dostaneme výstup ako na obrázku nižšie, kde vidíme, že plat novoprijatých zamestnancov je úspešne aktualizovaný.

Aktualizácia MySQL Pripojte sa

V tomto článku sme sa naučili príkaz MySQL Update Join, ktorý nám umožňuje zmeniť existujúce údaje v jednej tabuľke novými údajmi z inej tabuľky s podmienkou klauzuly JOIN. Tento dotaz je výhodný, keď potrebujeme upraviť určité stĺpce špecifikované v klauzule WHERE spolu s použitím klauzúl INNER JOIN alebo LEFT JOIN.