logo

MySQL OPDATERING TILMELD DIG

UPDATE-forespørgsel i MySQL er en DML-sætning, der bruges til at ændre dataene i en tabel. UPDATE-forespørgslen skal kræve SET og WHERE-sætningen. SET-udtrykket bruges til at ændre værdierne for den kolonne, der er angivet i WHERE-udtrykket.

JOIN-klausul i MySQL bruges i sætningen til at hente data ved at forbinde flere tabeller i en enkelt forespørgsel.

UPDATE JOIN er en MySQL-sætning, der bruges til at udføre krydstabelopdateringer, hvilket betyder, at vi kan opdatere en tabel ved hjælp af en anden tabel med JOIN-klausulens betingelse . Denne forespørgsel opdaterer og ændrer de data, hvor mere end én tabel er forbundet baseret på PRIMÆR Nøgle og UDENLANDSK Nøgle og en specificeret forbindelsestilstand. Vi kan opdatere enkelte eller flere kolonner ad gangen ved hjælp af OPDATERING forespørgsel .

BEMÆRK: MySQL UPDATE JOIN-sætningen understøttes fra version 4.0 eller nyere.

Syntaks

Følgende er en grundlæggende syntaks for UPDATE JOIN-sætning for at ændre post i MySQL-tabellen:

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

I ovenstående MySQL UPDATE JOIN-syntaks:

Først har vi specificeret de to tabeller: hovedtabellen (Tab1) og en anden tabel (tab2) efter UPDATE-klausulen. Efter UPDATE-klausulen er det nødvendigt at angive mindst én tabel. Dernæst har vi specificeret typerne af JOIN klausuler , dvs. enten INNER JOIN eller VENSTRE JOIN , som vises lige efter UPDATE-sætningen og derefter et join-prædikat angivet efter ON-nøgleordet. Derefter skal vi tildele de nye værdier til kolonnerne i Tab1 og/eller Tab2 for ændring i tabellen. Endelig bruges WHERE-sætningsbetingelsen til at begrænse rækker til opdatering.

Hvordan virker UPDATE JOIN i MySQL?

UPDATE JOIN-arbejdsprocessen ind MySQL er den samme som beskrevet i ovenstående syntaks. Men nogle gange ville vi opdage, at denne forespørgsel alene udførte krydstabelopdateringen uden at involvere nogen joinforbindelser. Følgende syntaks er en anden måde at opdatere en tabel ved hjælp af en anden tabel :

side ned tastatur
 UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition; 

Ovenstående UPDATE-sætning giver det samme resultat som UPDATE JOIN med en INNER JOIN- eller LEFT JOIN-sætning. Det betyder, at vi kan omskrive ovenstående syntaks som UPDATE JOIN syntaks vist ovenfor:

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

Lad os tage nogle eksempler for at forstå, hvordan UPDATE JOIN-sætningen fungerer i MySQL-tabellen.

OPDATERING JOIN Eksempler

Først vil vi oprette to navngivne tabeller Ydeevne og Medarbejder , og begge tabeller er relateret gennem en fremmednøgle. Her er 'Performance' en forældre tabel , og 'Medarbejdere' er barn bord . Følgende scripts opretter begge tabeller sammen med deres poster.

Tabel: Ydelse

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

Udfyld derefter posterne i tabellen ved hjælp af INSERT-sætningen.

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

Udfør derefter SELECT-forespørgslen for at bekræfte dataene som vist på billedet nedenfor:

MySQL Update Deltag

Tabel: Medarbejdere

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

Udfyld derefter posterne i tabellen ved hjælp af INSERT-sætningen.

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

Udfør derefter SELECT-forespørgslen for at bekræfte dataene som vist på billedet nedenfor:

MySQL Update Deltag

OPDATERING JOIN med INNER JOIN Eksempel

Antag, at vi ønsker at opdatere medarbejders løn på baggrund af deres præstation . Vi kan opdatere en medarbejders løn i tabellen Medarbejdere ved hjælp af UPDATE INNER JOIN-erklæringen, fordi præstationen procent er gemt i præstationstabellen.

I ovenstående tabeller skal vi bruge ydeevne feltet for at deltage i tabellen Medarbejdere og præstationer. Se nedenstående forespørgsel:

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

Efter at have eksekveret ovenstående opgørelse, får vi nedenstående output, hvor vi kan se, at medarbejderens lønkolonne er opdateret med succes.

MySQL Update Deltag

Lad os forstå, hvordan denne forespørgsel fungerer i MySQL. I forespørgslen har vi kun angivet tabellen Medarbejdere efter UPDATE-klausulen. Det er fordi vi kun ønsker at ændre posten i tabellen Medarbejdere, ikke i begge tabeller.

Forespørgslen kontrollerer præstationskolonneværdierne for hver række i tabellen 'Medarbejdere' mod præstationskolonnen i tabellen 'Performance'. Hvis den får den matchede præstationskolonne, tager den procentdelen i præstationstabellen og opdaterer medarbejdertabellens lønkolonne. Denne forespørgsel opdaterer alle poster i tabellen Employees, fordi vi ikke har angivet WHERE-sætningen i UPDATE JOIN-forespørgslen.

OPDATERING JOIN med LEFT JOIN Eksempel

For at forstå OPDATERING JOIN med LEFT JOIN skal vi først indsætte to nye rækker i tabellen Medarbejdere:

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

Da disse medarbejdere er nyansatte, er deres præstationsrekord ikke tilgængelig. Se nedenstående output:

MySQL Update Deltag

Hvis vi ønsker at opdatere lønnen for nyansatte medarbejdere , kan vi ikke bruge UPDATE INNER JOIN-forespørgslen. Det skyldes, at deres præstationsdata ikke er tilgængeligt i præstationstabellen. Derfor vil vi bruge UPDATE LEFT JOIN-erklæringen til at opfylde dette behov.

UPDATE LEFT JOIN-sætningen i MySQL bruges til at opdatere en række i en tabel, når der ikke findes nogen poster i en anden tabels tilsvarende række.

For eksempel , hvis vi ønsker at hæve lønnen for en nyansat med 2,5 %, kan vi gøre dette ved hjælp af følgende udsagn:

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

Efter at have udført ovenstående forespørgsel, vil vi få output som nedenstående billede, hvor vi kan se, at lønnen for de nyansatte medarbejdere er opdateret med succes.

MySQL Update Deltag

I denne artikel har vi lært MySQL Update Join-sætningen, der giver os mulighed for at ændre de eksisterende data i én tabel med de nye data fra en anden tabel med JOIN-sætningsbetingelsen. Denne forespørgsel er fordelagtig, når vi skal ændre visse kolonner, der er specificeret i WHERE-sætningen sammen med enten at bruge INNER JOIN- eller LEFT JOIN-sætningerne.