UPDATE-query in MySQL is een DML-instructie die wordt gebruikt voor het wijzigen van de gegevens van een tabel. De UPDATE-query moet de SET- en WHERE-clausule vereisen. De SET-clausule wordt gebruikt om de waarden te wijzigen van de kolom die is opgegeven in de WHERE-clausule.
De JOIN-clausule in MySQL wordt in de instructie gebruikt om gegevens op te halen door meerdere tabellen binnen één query samen te voegen.
De UPDATE JOIN is een MySQL-instructie die wordt gebruikt om kruistabelupdates uit te voeren, wat betekent dat we de ene tabel kunnen bijwerken met behulp van een andere tabel met de JOIN-clausulevoorwaarde . Met deze query worden de gegevens bijgewerkt en gewijzigd waarop meer dan één tabel is samengevoegd PRIMAIRE Sleutel en BUITENLANDS Sleutel en een opgegeven join-voorwaarde. We kunnen één of meerdere kolommen tegelijk bijwerken met behulp van de UPDATE-vraag .
OPMERKING: De MySQL UPDATE JOIN-instructie wordt ondersteund vanaf versie 4.0 of hoger.
Syntaxis
Hieronder volgt een basissyntaxis van de UPDATE JOIN-instructie om records in de MySQL-tabel te wijzigen:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
In de bovenstaande MySQL UPDATE JOIN-syntaxis:
Eerst hebben we de twee tabellen gespecificeerd: de hoofdtabel (Tab1) en een andere tabel (tab2) na de UPDATE-clausule. Na de UPDATE-clausule is het vereist om ten minste één tabel op te geven. Vervolgens hebben we de soorten gespecificeerd JOIN-clausules , d.w.z. INNER JOIN of LINKS AANMELDEN , die direct na de UPDATE-clausule verschijnen en vervolgens een join-predikaat dat is opgegeven na het ON-trefwoord. Vervolgens moeten we de nieuwe waarden toewijzen aan de kolommen in Tab1 en/of Tab2 voor wijziging in de tabel. Ten slotte wordt de WHERE-clausulevoorwaarde gebruikt om het aantal rijen te beperken dat kan worden bijgewerkt.
Hoe werkt UPDATE JOIN in MySQL?
Het werkproces UPDATE JOIN in MySQL is hetzelfde als beschreven in de bovenstaande syntaxis. Maar soms ontdekten we dat alleen deze query de update van de kruistabellen uitvoerde, zonder dat er joins bij betrokken waren. De volgende syntaxis is een andere manier om een tabel bij te werken met een andere tabel :
veer modules
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
De bovenstaande UPDATE-instructie levert hetzelfde resultaat op als de UPDATE JOIN met een INNER JOIN- of LEFT JOIN-clausule. Het betekent dat we de bovenstaande syntaxis kunnen herschrijven als de UPDATE JOIN-syntaxis die hierboven wordt weergegeven:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Laten we enkele voorbeelden nemen om te begrijpen hoe de UPDATE JOIN-instructie werkt in de MySQL-tabel.
UPDATE JOIN Voorbeelden
Eerst gaan we twee tabellen maken met de naam Prestatie En Medewerker , en beide tabellen zijn gerelateerd via een externe sleutel. Hier is de 'Prestatie' een ouder tafel , en 'Werknemers' is de kind tafel . De volgende scripts maken beide tabellen samen met hun records.
Tabel: Prestaties
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Vul vervolgens de records in de tabel in met behulp van de INSERT-instructie.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Voer vervolgens de SELECT-query uit om de gegevens te verifiëren, zoals weergegeven in de onderstaande afbeelding:
Tabel: Medewerkers
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) );
Vul vervolgens de records in de tabel in met behulp van de INSERT-instructie.
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);
Voer vervolgens de SELECT-query uit om de gegevens te verifiëren, zoals weergegeven in de onderstaande afbeelding:
UPDATE JOIN met INNER JOIN Voorbeeld
Stel dat we de het salaris van de werknemer op basis van zijn prestaties . We kunnen het salaris van een werknemer in de tabel Werknemers bijwerken met de instructie UPDATE INNER JOIN vanwege de prestaties percentage wordt opgeslagen in de prestatietabel.
In de bovenstaande tabellen moeten we de prestatie veld om deel te nemen aan de tabel Werknemers en prestaties. Zie de onderstaande vraag:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Na het uitvoeren van de bovenstaande verklaring krijgen we de onderstaande uitvoer, waarin we kunnen zien dat de salariskolom van de werknemer met succes is bijgewerkt.
Laten we begrijpen hoe deze query werkt in MySQL. In de query hebben we alleen de tabel Werknemers opgegeven na de UPDATE-clausule. Dit komt omdat we de record alleen in de tabel Werknemers willen wijzigen, en niet in beide tabellen.
De query controleert de waarden van de prestatiekolommen voor elke rij in de tabel 'Werknemers' ten opzichte van de prestatiekolom van de tabel 'Prestaties'. Als het de overeenkomende prestatiekolom krijgt, wordt het percentage in de Prestatietabel gebruikt en wordt de salariskolom van de Werknemerstabel bijgewerkt. Met deze query worden alle records in de tabel Werknemers bijgewerkt, omdat we de WHERE-clausule niet hebben opgegeven in de UPDATE JOIN-query.
UPDATE JOIN met LEFT JOIN Voorbeeld
Om de UPDATE JOIN met LEFT JOIN te begrijpen, moeten we eerst twee nieuwe rijen invoegen in de tabel Werknemers:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Omdat deze werknemers nieuwe medewerkers zijn, is hun prestatierecord niet beschikbaar. Zie de onderstaande uitvoer:
Als we het salaris voor nieuw aangenomen medewerkers willen bijwerken , kunnen we de UPDATE INNER JOIN-query niet gebruiken. Dit komt doordat hun prestatiegegevens niet beschikbaar zijn in de prestatietabel. We zullen dus de instructie UPDATE LEFT JOIN gebruiken om aan deze behoefte te voldoen.
De UPDATE LEFT JOIN-instructie in MySQL wordt gebruikt om een rij in een tabel bij te werken wanneer er geen records zijn gevonden in de overeenkomstige rij van een andere tabel.
Bijvoorbeeld Als we het salaris van een nieuw aangenomen medewerker met 2,5% willen verhogen, kunnen we dit doen met behulp van de volgende verklaring:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Na het uitvoeren van de bovenstaande vraag krijgen we de uitvoer zoals hieronder afgebeeld, waar we kunnen zien dat het salaris van de nieuw aangenomen werknemers met succes is bijgewerkt.
In dit artikel hebben we de MySQL Update Join-instructie geleerd waarmee we de bestaande gegevens in de ene tabel kunnen wijzigen met de nieuwe gegevens uit een andere tabel met de JOIN-clausulevoorwaarde. Deze query is handig als we bepaalde kolommen moeten wijzigen die zijn opgegeven in de WHERE-clausule, samen met het gebruik van de INNER JOIN- of LEFT JOIN-clausules.