Interogarea UPDATE în MySQL este o instrucțiune DML folosită pentru modificarea datelor unui tabel. Interogarea UPDATE trebuie să necesite clauzele SET și WHERE. Clauza SET este folosită pentru a modifica valorile coloanei specificate în clauza WHERE.
Clauza JOIN din MySQL este folosită în instrucțiune pentru a prelua date prin unirea mai multor tabele într-o singură interogare.
UPDATE JOIN este o instrucțiune MySQL folosită pentru a efectua actualizări încrucișate, ceea ce înseamnă că putem actualiza un tabel folosind un alt tabel cu condiția clauzei JOIN . Această interogare actualizează și modifică datele pe care sunt conectate mai multe tabele PRIMAR Cheie și STRĂIN Cheie și o condiție de unire specificată. Putem actualiza o singură sau mai multe coloane simultan folosind UPDATE interogare .
NOTĂ: Instrucțiunea MySQL UPDATE JOIN este acceptată de la versiunea 4.0 sau o versiune ulterioară.
Sintaxă
Mai jos este o sintaxă de bază a instrucțiunii UPDATE JOIN pentru a modifica înregistrarea în tabelul MySQL:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
În sintaxa MySQL UPDATE JOIN de mai sus:
În primul rând, am specificat cele două tabele: tabelul principal (Tab1) și un alt tabel (tab2) după clauza UPDATE. După clauza UPDATE, este necesar să specificați cel puțin un tabel. În continuare, am specificat tipurile de clauze JOIN , adică fie INNER JOIN fie LEFT JOIN , care apar imediat după clauza UPDATE și apoi un predicat de unire specificat după cuvântul cheie ON. Apoi, trebuie să atribuim noile valori coloanelor din Tab1 și/sau Tab2 pentru modificarea în tabel. În cele din urmă, condiția clauzei WHERE este utilizată pentru a limita rândurile pentru actualizare.
Cum funcționează UPDATE JOIN în MySQL?
Procesul de lucru UPDATE JOIN în MySQL este identic cu cel descris în sintaxa de mai sus. Dar, uneori, am constata că numai această interogare a efectuat actualizarea încrucișată fără a implica niciun fel de alăturare. Următoarea sintaxă este o altă modalitate de a actualiza un tabel folosind un alt tabel :
reporniți mysql ubuntu
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
Instrucțiunea UPDATE de mai sus produce același rezultat ca și UPDATE JOIN cu clauze INNER JOIN sau LEFT JOIN. Înseamnă că putem rescrie sintaxa de mai sus ca sintaxa UPDATE JOIN afișată mai sus:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Să luăm câteva exemple pentru a înțelege cum funcționează instrucțiunea UPDATE JOIN în tabelul MySQL.
UPDATE JOIN Exemple
Mai întâi, vom crea două tabele numite Performanţă și Angajat , iar ambele tabele sunt legate printr-o cheie externă. Aici, „Performanța” este a masa părinte , iar „Angajați” este copil masa . Următoarele scripturi creează ambele tabele împreună cu înregistrările lor.
Tabel: Performanță
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Apoi, completați înregistrările din tabel folosind instrucțiunea INSERT.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Apoi, executați interogarea SELECT pentru a verifica datele așa cum se arată în imaginea de mai jos:
Tabel: Angajati
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) );
Apoi, completați înregistrările din tabel folosind instrucțiunea 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);
Apoi, executați interogarea SELECT pentru a verifica datele așa cum se arată în imaginea de mai jos:
UPDATE JOIN cu INNER JOIN Exemplu
Să presupunem că vrem să actualizăm salariul angajatului în funcție de performanța acestora . Putem actualiza salariul unui angajat în tabelul Angajați folosind instrucțiunea UPDATE INNER JOIN deoarece performanța procent este stocat în tabelul de performanță.
În tabelele de mai sus, trebuie să folosim performanţă câmp pentru a se alătura tabelului Angajați și performanță. Vedeți interogarea de mai jos:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
După executarea instrucțiunii de mai sus, vom obține rezultatul de mai jos, unde putem vedea că coloana de salariu a angajatului este actualizată cu succes.
Să înțelegem cum funcționează această interogare în MySQL. În interogare, am specificat doar tabelul Angajați după clauza UPDATE. Se datorează faptului că dorim să schimbăm înregistrarea doar în tabelul Angajați, nu în ambele tabele.
Interogarea verifică valorile coloanei de performanță pentru fiecare rând din tabelul „Angajați” cu coloana de performanță din tabelul „Performanță”. Dacă va primi coloana de performanță potrivită, atunci ia procentul din tabelul de performanță și actualizează coloana de salarii a tabelului de angajați. Această interogare actualizează toate înregistrările din tabelul Angajați, deoarece nu am specificat clauza WHERE în interogarea UPDATE JOIN.
UPDATE JOIN cu LEFT JOIN Exemplu
Pentru a înțelege UPDATE JOIN cu LEFT JOIN, trebuie mai întâi să inserăm două rânduri noi în tabelul Employees:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Având în vedere că acești angajați sunt angajați noi, recordul lor de performanță nu este disponibil. Vedeți rezultatul de mai jos:
Dacă vrem să actualizăm salariul pentru angajații nou angajați , nu putem folosi interogarea UPDATE INNER JOIN. Se datorează indisponibilității datelor lor de performanță în tabelul de performanță. Astfel, vom folosi instrucțiunea UPDATE LEFT JOIN pentru a îndeplini această nevoie.
Instrucțiunea UPDATE LEFT JOIN din MySQL este folosită pentru a actualiza un rând dintr-un tabel atunci când nu există înregistrări găsite în rândul corespunzător al altui tabel.
De exemplu , dacă dorim să creștem cu 2,5% salariul unui angajat nou angajat, putem face acest lucru cu ajutorul următoarei declarații:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
După executarea interogării de mai sus, vom obține rezultatul ca imaginea de mai jos, unde putem vedea că salariul angajaților nou angajați este actualizat cu succes.
În acest articol, am învățat instrucțiunea MySQL Update Join care ne permite să modificăm datele existente într-un tabel cu noile date dintr-un alt tabel cu condiția clauzei JOIN. Această interogare este avantajoasă atunci când trebuie să modificăm anumite coloane specificate în clauza WHERE împreună cu utilizarea clauzelor INNER JOIN sau LEFT JOIN.