logo

DOŁĄCZ DO AKTUALIZACJI MySQL

Zapytanie UPDATE w MySQL to instrukcja DML używana do modyfikowania danych tabeli. Zapytanie UPDATE musi wymagać klauzuli SET i WHERE. Klauzula SET służy do zmiany wartości kolumny określonej w klauzuli WHERE.

Klauzula JOIN w MySQL jest używana w instrukcji do pobierania danych poprzez połączenie wielu tabel w ramach jednego zapytania.

UPDATE JOIN to instrukcja MySQL używana do wykonywania aktualizacji między tabelami, co oznacza, że ​​możemy zaktualizować jedną tabelę przy użyciu innej tabeli z warunkiem klauzuli JOIN . To zapytanie aktualizuje i zmienia dane, na podstawie których łączonych jest więcej niż jedna tabela PODSTAWOWY Klucz i ZAGRANICZNY Klucz i określony warunek złączenia. Możemy aktualizować jedną lub wiele kolumn jednocześnie za pomocą AKTUALIZUJ zapytanie .

UWAGA: Instrukcja MySQL UPDATE JOIN jest obsługiwana od wersji 4.0 lub wyższej.

Składnia

Poniżej znajduje się podstawowa składnia instrukcji UPDATE JOIN służącej do modyfikacji rekordu w tabeli MySQL:

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

W powyższej składni MySQL UPDATE JOIN:

Najpierw określiliśmy dwie tabele: tabelę główną (Tab1) i drugą tabelę (tab2) po klauzuli UPDATE. Po klauzuli UPDATE wymagane jest podanie przynajmniej jednej tabeli. Następnie określiliśmy rodzaje Klauzule JOIN , tj. albo POŁĄCZENIE WEWNĘTRZNE, albo LEWO DOŁĄCZ , które pojawiają się zaraz po klauzuli UPDATE, a następnie predykacie łączenia określonym po słowie kluczowym ON. Następnie musimy przypisać nowe wartości do kolumn w Tab1 i/lub Tab2 w celu modyfikacji w tabeli. Na koniec warunek klauzuli WHERE służy do ograniczania liczby wierszy do aktualizacji.

Jak działa UPDATE JOIN w MySQL?

Proces pracy UPDATE JOIN w MySQL'a jest taki sam, jak opisano w powyższej składni. Czasami jednak stwierdzaliśmy, że samo to zapytanie wykonywało aktualizację między tabelami bez konieczności stosowania jakichkolwiek złączeń. Poniższa składnia to kolejny sposób aktualizowania jednej tabeli przy użyciu innej tabeli :

nazwa produktów do makijażu
 UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition; 

Powyższa instrukcja UPDATE daje taki sam wynik jak UPDATE JOIN z klauzulami INNER JOIN lub LEFT JOIN. Oznacza to, że możemy ponownie zapisać powyższą składnię jako składnię UPDATE JOIN wyświetloną powyżej:

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

Weźmy kilka przykładów, aby zrozumieć, jak działa instrukcja UPDATE JOIN w tabeli MySQL.

AKTUALIZACJA DOŁĄCZ Przykłady

Najpierw utworzymy dwie tabele o nazwach Wydajność I Pracownik , a obie tabele są powiązane za pomocą klucza obcego. Tutaj „Wydajność” to: tabela nadrzędna , a „Pracownicy” to dziecko tabela . Poniższe skrypty tworzą obie tabele wraz z ich rekordami.

Tabela: Wydajność

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

Następnie uzupełnij rekordy w tabeli za pomocą instrukcji INSERT.

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

Następnie wykonaj zapytanie SELECT, aby zweryfikować dane, jak pokazano na poniższym obrazku:

Dołącz do aktualizacji MySQL

Tabela: Pracownicy

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

Następnie uzupełnij rekordy w tabeli za pomocą instrukcji 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); 

Następnie wykonaj zapytanie SELECT, aby zweryfikować dane, jak pokazano na poniższym obrazku:

Dołącz do aktualizacji MySQL

UPDATE JOIN za pomocą przykładu INNER JOIN

Załóżmy, że chcemy zaktualizować plik wynagrodzenie pracownika uzależnione od jego wyników pracy . Możemy zaktualizować wynagrodzenie pracownika w tabeli Pracownicy za pomocą instrukcji UPDATE INNER JOIN ze względu na wydajność odsetek jest przechowywany w tabeli wydajności.

W powyższych tabelach musimy użyć wydajność pole umożliwiające dołączenie do tabeli Pracownicy i Wydajność. Zobacz poniższe zapytanie:

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

Po wykonaniu powyższej instrukcji otrzymamy poniższe dane wyjściowe, w których możemy zobaczyć, że kolumna wynagrodzeń pracownika została pomyślnie zaktualizowana.

Dołącz do aktualizacji MySQL

Pozwól nam zrozumieć, jak to zapytanie działa w MySQL. W zapytaniu po klauzuli UPDATE podaliśmy jedynie tabelę Pracownicy. Dzieje się tak dlatego, że chcemy zmienić rekord tylko w tabeli Pracownicy, a nie w obu tabelach.

Zapytanie sprawdza wartości kolumny wydajności dla każdego wiersza tabeli „Pracownicy” względem kolumny wydajności tabeli „Wydajność”. Jeśli otrzyma kolumnę dopasowanej wydajności, pobiera wartość procentową z tabeli Wydajność i aktualizuje kolumnę wynagrodzeń w tabeli Pracownicy. To zapytanie aktualizuje wszystkie rekordy w tabeli Pracownicy, ponieważ w zapytaniu UPDATE JOIN nie określono klauzuli WHERE.

UPDATE JOIN za pomocą LEFT JOIN Przykład

Aby zrozumieć funkcję UPDATE JOIN za pomocą LEFT JOIN, musimy najpierw wstawić dwa nowe wiersze do tabeli Pracownicy:

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

Ponieważ ci pracownicy są nowo zatrudnieni, dlatego ich historia wyników nie jest dostępna. Zobacz poniższe dane wyjściowe:

Dołącz do aktualizacji MySQL

Jeśli chcemy zaktualizować wynagrodzenie dla nowo zatrudnionych pracowników , nie możemy użyć zapytania UPDATE INNER JOIN. Wynika to z niedostępności danych o ich wydajności w tabeli Performance. Dlatego, aby spełnić tę potrzebę, użyjemy instrukcji UPDATE LEFT JOIN.

Instrukcja UPDATE LEFT JOIN w MySQL służy do aktualizacji wiersza w tabeli, gdy nie znaleziono żadnych rekordów w odpowiadającym wierszu innej tabeli.

Na przykład , jeśli chcemy podnieść wynagrodzenie nowozatrudnionego pracownika o 2,5%, możemy to zrobić za pomocą następującego stwierdzenia:

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

Po wykonaniu powyższego zapytania otrzymamy wynik jak na obrazku poniżej, na którym możemy zobaczyć, że wynagrodzenie nowo zatrudnionych pracowników zostało pomyślnie zaktualizowane.

Dołącz do aktualizacji MySQL

W tym artykule poznaliśmy instrukcję MySQL Update Join, która pozwala nam na zmianę istniejących danych w jednej tabeli nowymi danymi z innej tabeli z warunkiem klauzuli JOIN. To zapytanie jest korzystne, gdy musimy zmodyfikować pewne kolumny określone w klauzuli WHERE wraz z użyciem klauzul INNER JOIN lub LEFT JOIN.