logo

AKTUALIZACE MySQL PŘIPOJTE SE

UPDATE dotaz v MySQL je příkaz DML používaný pro úpravu dat tabulky. Dotaz UPDATE musí vyžadovat klauzuli SET a WHERE. Klauzule SET se používá ke změně hodnot sloupce uvedeného v klauzuli WHERE.

Klauzule JOIN v MySQL se používá v příkazu k načtení dat spojením více tabulek v rámci jednoho dotazu.

UPDATE JOIN je příkaz MySQL používaný k provádění aktualizací mezi tabulkami, což znamená, že můžeme aktualizovat jednu tabulku pomocí jiné tabulky s podmínkou klauzule JOIN. . Tento dotaz aktualizuje a mění data, na základě kterých je spojeno více než jedna tabulka HLAVNÍ Klíč a ZAHRANIČNÍ, CIZÍ Klíč a zadaná podmínka spojení. Můžeme aktualizovat jeden nebo více sloupců najednou pomocí AKTUALIZOVANÝ dotaz .

POZNÁMKA: Příkaz MySQL UPDATE JOIN je podporován od verze 4.0 nebo vyšší.

Syntax

Následuje základní syntaxe příkazu UPDATE JOIN pro úpravu záznamu do tabulky MySQL:

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

Ve výše uvedené syntaxi MySQL UPDATE JOIN:

Nejprve jsme specifikovali dvě tabulky: hlavní tabulku (Tab1) a další tabulku (tab2) po klauzuli UPDATE. Po klauzuli UPDATE je nutné zadat alespoň jednu tabulku. Dále jsme specifikovali typy JOIN doložky , tedy buď INNER JOIN nebo PŘIPOJIT SE VLEVO , které se objeví hned za klauzulí UPDATE a potom predikát spojení zadaný za klíčovým slovem ON. Poté musíme přiřadit nové hodnoty do sloupců v Tab1 a/nebo Tab2 pro úpravu do tabulky. Nakonec se podmínka klauzule WHERE používá k omezení řádků pro aktualizaci.

Jak funguje UPDATE JOIN v MySQL?

Pracovní proces UPDATE JOIN v MySQL je stejný, jak je popsáno ve výše uvedené syntaxi. Někdy jsme však zjistili, že tento dotaz sám o sobě provedl aktualizaci mezi tabulkami, aniž by zahrnoval jakékoli spojení. Následující syntaxe je dalším způsobem aktualizace jedné tabulky pomocí jiné tabulky :

je vztah
 UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition; 

Výše uvedený příkaz UPDATE poskytuje stejný výsledek jako příkaz UPDATE JOIN s klauzulemi INNER JOIN nebo LEFT JOIN. To znamená, že můžeme přepsat výše uvedenou syntaxi jako syntaxi UPDATE JOIN zobrazenou výše:

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

Vezměme si několik příkladů, abychom pochopili, jak funguje příkaz UPDATE JOIN v tabulce MySQL.

Příklady UPDATE JOIN

Nejprve vytvoříme dvě tabulky pojmenované Výkon a Zaměstnanec a obě tabulky spolu souvisí prostřednictvím cizího klíče. Zde je „Výkon“ a rodičovský stůl , a 'Zaměstnanci' je dítě stůl . Následující skripty vytvoří obě tabulky spolu s jejich záznamy.

Tabulka: Výkon

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

Dále vyplňte záznamy v tabulce pomocí příkazu INSERT.

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

Poté spusťte dotaz SELECT a ověřte data, jak je znázorněno na obrázku níže:

Aktualizace MySQL Připojte se

Tabulka: Zaměstnanci

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

Dále vyplňte záznamy v tabulce pomocí pří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); 

Poté spusťte dotaz SELECT a ověřte data, jak je znázorněno na obrázku níže:

Aktualizace MySQL Připojte se

Příklad UPDATE JOIN pomocí INNER JOIN

Předpokládejme, že chceme aktualizovat mzdu zaměstnance na základě jeho výkonu . Mzdu zaměstnance můžeme aktualizovat v tabulce Zaměstnanci pomocí příkazu UPDATE INNER JOIN, protože výkon procento je uložena v tabulce výkonu.

Ve výše uvedených tabulkách musíme použít výkon pole pro připojení k tabulce Zaměstnanci a výkon. Viz níže uvedený dotaz:

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

Po provedení výše uvedeného příkazu získáme níže uvedený výstup, kde vidíme, že sloupec mzdy zaměstnance je úspěšně aktualizován.

Aktualizace MySQL Připojte se

Pojďme pochopit, jak tento dotaz funguje v MySQL. V dotazu jsme za klauzuli UPDATE zadali pouze tabulku Zaměstnanci. Je to proto, že chceme změnit záznam pouze v tabulce Zaměstnanci, nikoli v obou tabulkách.

Dotaz kontroluje hodnoty sloupce výkonu pro každý řádek v tabulce 'Zaměstnanci' oproti sloupci výkonu v tabulce 'Výkon'. Pokud získá odpovídající sloupec výkonu, vezme procento v tabulce Výkon a aktualizuje sloupec plat v tabulce Zaměstnanci. Tento dotaz aktualizuje všechny záznamy v tabulce Zaměstnanci, protože jsme nezadali klauzuli WHERE v dotazu UPDATE JOIN.

UPDATE JOIN s LEVÝM JOIN Příklad

Abychom pochopili UPDATE JOIN s LEFT JOIN, musíme nejprve vložit dva nové řádky do tabulky Zaměstnanci:

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

Vzhledem k tomu, že tito zaměstnanci jsou noví zaměstnanci, jejich záznam o výkonu není k dispozici. Viz níže uvedený výstup:

Aktualizace MySQL Připojte se

Pokud chceme aktualizovat plat pro nově přijaté zaměstnance , nemůžeme použít dotaz UPDATE INNER JOIN. Je to kvůli nedostupnosti jejich údajů o výkonu v tabulce Výkon. K naplnění této potřeby tedy použijeme příkaz UPDATE LEFT JOIN.

Příkaz UPDATE LEFT JOIN v MySQL se používá k aktualizaci řádku v tabulce, když v odpovídajícím řádku jiné tabulky nejsou nalezeny žádné záznamy.

Například , pokud chceme nově přijatému zaměstnanci zvýšit mzdu o 2,5 %, můžeme tak učinit pomocí následujícího prohlášení:

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

Po provedení výše uvedeného dotazu získáme výstup jako na obrázku níže, kde vidíme, že plat nově přijatých zaměstnanců je úspěšně aktualizován.

Aktualizace MySQL Připojte se

V tomto článku jsme se naučili příkaz MySQL Update Join, který nám umožňuje změnit existující data v jedné tabulce novými daty z jiné tabulky s podmínkou JOIN. Tento dotaz je výhodný, když potřebujeme upravit určité sloupce uvedené v klauzuli WHERE spolu s použitím klauzule INNER JOIN nebo LEFT JOIN.