mysql update statement tutorial update query syntax examples
Denna handledning förklarar uttalandet om MySQL UPDATE tillsammans med frågesyntax och exempel. Du kommer också att lära dig olika variationer av MySQL Update Table Command:
Som med alla andra databaser har vi alltid ett behov av att uppdatera eller modifiera eller ändra befintlig data i tabellerna. I MySQL har vi UPDATE-uttalandet som kan användas för att uppdatera eller modifiera data i tabellen.
Med detta kommando kan vi uppdatera ett eller flera fält. Vi kan uppdatera värdena för en viss tabell åt gången. Genom att använda WHERE-klausulen kan vi specificera de villkor som används, särskilt när det finns ett behov av att uppdatera specifika rader från en tabell.
Innan du fortsätter ska du notera att vi använder MySQL version 8.0. Du kan ladda ner den från här.
Vad du kommer att lära dig:
MySQL UPDATE Tabellsyntax
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition;
Syntaxförklaring:
- Syntaxen börjar med nyckelordet ”UPDATE” och informerar därmed MySQL-servern om vilken typ av aktivitet som ska utföras. Detta är ett obligatoriskt nyckelord och kan inte utelämnas.
- Därefter kommer namnet på tabellen som uppdateringsåtgärden måste utföras på. Detta är obligatoriskt och kan inte utelämnas.
- För det tredje är återigen ett nyckelord - SET. Detta nyckelord informerar MySQL Server om de värden som ska uppdateras för kolumnnamnen. Detta är ett obligatoriskt nyckelord och kan inte utelämnas.
- Därefter kommer kolumnnamnen att uppdateras tillsammans med motsvarande värden. Detta är också obligatoriskt och kan inte utelämnas.
- Sedan kommer WHERE-villkoret, som begränsar eller filtrerar antalet målrader som UPDATE-åtgärden måste tillämpas på. WHERE finns också ett nyckelord, men ett valfritt.
WHERE-klausulen är dock betydelsefull. Om det inte nämns, eller om villkoret inte är korrekt, uppdateras varken tabellen eller de ej nödvändiga raderna.
Modifierare i ett UPDATE-tabelluttalande
Nedan listas modifierarna i ett UPDATE-uttalande.
LÅG PRIORITET: Denna modifierare informerar MySQL-motorn om att fördröja uppdateringen tills det inte finns någon anslutningsavläsning från tabellen.
IGNORERA: Denna modifierare informerar MySQL Engine om att fortsätta med UPDATE-operationen även om det finns några fel. Ingen uppdateringsåtgärd utförs på raderna som orsakade fel.
MySQL UPDATE Exempel
Nedan visas en provtabell skapad i MySQL.
Schemans namn: stilla
Tabellnamn: anställda
Kolumnnamn:
- empNum - Innehåller heltal för anställds nummer.
- lastName - Innehåller varcharvärden för anställdas efternamn.
- förnamn - Innehåller varcharvärden för den anställdas förnamn.
- e-post - Innehåller varcharvärden för den anställdes e-post-ID.
- deptNum - Innehåller varchar för avdelnings-ID som en anställd tillhör.
- lön - Har decimalvärden för lönen för varje anställd.
Schemans namn: stilla
Tabellnamn: avdelningar
Kolumnnamn:
- deptNum - Har varchar för avdelnings-ID inom en organisation.
- stad - Innehåller namnet på staden där avdelningarna arbetar.
- land - Innehåller namnet på det land som motsvarar staden.
- bonus - Innehåller procentsatsen för bonusen.
MySQL UPDATE Tabellkommando
# 1) MySQL uppdaterar enstaka kolumn
Nu ska vi ta reda på en post som vi vill uppdatera. Först ska vi titta på ett scenario där vi måste uppdatera en enda kolumn med hjälp av UPDATE-nyckelordet.
Här är en anställd med anställd nummer 1008.
Frågan och motsvarande resultat är följande:
Låt oss uppdatera e-post-ID för den anställde från ob@gmail.com till oliver.bailey@gmail.com med hjälp av UPDATE-nyckelordet.
UPPDATERING: Nyckelordet informerar MySQL-motorn om att uttalandet handlar om att uppdatera en tabell.
UPPSÄTTNING: Denna klausul ställer in värdet på kolumnnamnet som nämns efter detta nyckelord till ett nytt värde.
VAR: Denna klausul specificerar den specifika raden som måste uppdateras.
Efter genomförandet av UPDATE-uttalandet visar utdata den statistik som är relaterad till uttalandet.
Nedan följer detaljerna som visas:
- Ett uttalande som utfördes.
- Meddelanden som visar antalet rader som har uppdaterats och om det var några varningar.
För att verifiera utdata från UPDATE-uttalandet, låt oss köra SELECT-satsen igen för att se förändringen i e-post-ID.
Tabellbild före:
empNum | förnamn | efternamn | e-post | avd |
---|---|---|---|---|
7 | Rom | Italien | ||
1008 | Oliver | Bailey | ob@gmail.com | 3 |
Fråga:
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;
Tabell ögonblicksbild efter:
empNum | förnamn | efternamn | e-post | avd |
---|---|---|---|---|
1008 | Oliver | Bailey | oliver.bailey@gmail.com | 3 |
# 2) MySQL uppdaterar flera kolumner
Syntaxen för att uppdatera mer än en kolumn med UPDATE-uttalandet är densamma som för att uppdatera en enda kolumn. Ett enda SET-uttalande kommer att ha flera kolumnnamn tillsammans med dess nya värde som måste ställas in, åtskilt med ett komma.
Låt oss ta en titt på raden som vi behöver uppdatera. Rad med anställd nummer 1003.
Här kommer vi att försöka uppdatera efternamnet från 'Mary' till 'Margaret' och sedan e-post-ID från ml@gmail.com till margaret.langaley@gmail.com.
Följande är UPDATE-frågan. Observera kolumnnamnen åtskilda med ett komma.
Utdata från ovanstående utförande visar samma statistik som i föregående fall.
Följande är utdata för samma post efter genomförandet av UPDATE uttalande.
Tabellbild före:
empNum | förnamn | efternamn | e-post | avd |
---|---|---|---|---|
1003 | Mary | Langley | ml@gmail.com | två |
Fråga:
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ;
Tabell ögonblicksbild efter:
empNum | förnamn | efternamn | e-post | avd |
---|---|---|---|---|
1003 | Margaret | Langley | margaret.langley@gmail.com | 3 |
# 3) MySQL-uppdatering med ersättningsfunktion
Låt oss se mer om hur du använder REPLACE-funktionen för att UPPDATERA en rad i tabellen. Här är vår målpost som vi vill uppdatera.
Nedanstående post är för anställd nummer 1010. Vi kommer att rikta oss till att uppdatera e-post-ID: t från ja@gmail.com till jacob.armstrong@gmail.com.
Låt oss använda följande UPDATE-fråga med REPLACE-funktionen som uppdaterar e-post-ID: t.
Följande är de parametrar som skickas i REPLACE-funktionen. Alla tre parametrarna är positionella till sin karaktär, dvs ordningen på parametrarna kan inte ändras.
1stParameter - Innehåller namnet på e-post-ID.
tvåndParameter - Innehåller det FROM-e-post-ID som ska ändras.
3rdParameter - Innehåller E-post-ID som är det nya värdet.
Följande är ögonblicksbilden av tabellen efter genomförandet av UPDATE-uttalandet:
Tabellbild före:
empNum | förnamn | efternamn | e-post | avd |
---|---|---|---|---|
1010 | Jacob | Armstrong | ja@gmail.com | 4 |
Fråga:
UPDATE employees SET email = REPLACE(email, “ja@gmail.com”, jacob.armstrong@gmail.com) WHERE empNum = 1010 ;
Tabell ögonblicksbild efter:
empNum | förnamn | efternamn | e-post | avd |
---|---|---|---|---|
1010 | Jacob | Armstrong | jacob.armstrong@gmail.com | 4 |
# 4) MySQL UPDATE med SELECT Statement
I den här typen av UPPDATERING hämtas det nya värdet för kolumnen som ska uppdateras med ett SELECT-uttalande i en underfråga. Så, låt oss ta ett exempel här från tabellen 'anställda'. Här är vår målpost som vi vill uppdatera.
I det här fallet kommer vi att uppdatera avdelningsnumret, dvs deptNum-kolumnen, med hjälp av avdelningstabellerna. Om vi tittar på avdelningstabellen motsvarar deptNum = 5 Berlin. Låt oss flytta den här medarbetaren till Charlotte på deptNum = 2.
För att uppnå denna uppgift används följande UPDATE-uttalande:
För att verifiera resultatet av vårt UPDATE-uttalande, låt oss köra VÄLJ påstående.
Som visas ovan har värdet för kolumnen deptNum uppdaterats till '2'.
Tabellbild före:
empNum | förnamn | efternamn | e-post | avd |
---|---|---|---|---|
1005 | Peter | läsa | pl@gmail.com | 5 |
avd | Stad | Land |
---|---|---|
1 | New York | Förenta staterna |
två | Charlotte | Förenta staterna |
3 | Chicago | Förenta staterna |
4 | London | England |
5 | Berlin | Tyskland |
6 | Mumbai | Indien |
Fråga:
Tabell ögonblicksbild efter:
empNum förnamn efternamn e-post avd 7 Rom Italien NULL 1005 Peter läsa pl@gmail.com två
# 5) MySQL UPDATE Flera rader
Ibland kan vi möta ett krav där vi måste uppdatera en eller flera kolumner för flera rader med olika värden.
Till exempel, vi vill ge en viss mängd bonusavdelning klokt, dvs. alla anställda i en avdelning bör få en viss mängd bonus.
bästa virusborttagningsprogrammet för pc
Den allmänna syntaxen är som följer:
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END;
För att förklara detta med ett exempel kan vi lägga till ytterligare en kolumn i avdelningstabellerna. Vi lägger till kolumnen 'bonus' i avdelningstabellen. Tanken är att tilldela en bonusprocent till varje avdelning och höja lönen för de anställda med den procentsatsen som motsvarar varje avdelning.
För att uppnå detta kommer vi att utföra följande ALTER-uttalanden för att lägga till en kolumn:
ALTER TABLE departments ADD COLUMN bonus decimal(5,2);
Följande skulle vara tabellstrukturen efter ovanstående ändringar. De nya kolumnerna läggs till med NULL som värde.

Låt oss sedan skriva UPDATE-frågan som uppdaterar bonusprocenten för varje avdelning.

Efter genomförandet av ovanstående uttalande är följande ögonblicksbild med de uppdaterade värdena för bonuskolumnen.

Tabellbild före:
avd Stad Land Bonus 1 New York Förenta staterna NULL två Charlotte Förenta staterna NULL 3 Chicago Förenta staterna NULL 4 London England NULL 5 Berlin Tyskland NULL 6 Mumbai Indien NULL
Fråga:
UPDATE departments SET bonus = CASE WHEN deptNum = 1 THEN 3.00 WHEN deptNum= 2 THEN 5.00 WHEN deptNum= 3 THEN 8.00 WHEN deptNum= 4 THEN 10.00 WHEN deptNum= 5 THEN 13.00 WHEN deptNum= 6 THEN 15.00 WHEN deptNum= 7 THEN 18.00 END;
Tabell ögonblicksbild efter:
avd Stad Land Bonus 7 Rom Italien 18 1 New York Förenta staterna 3 två Charlotte Förenta staterna 5 3 Chicago Förenta staterna 8 4 London England 10 5 Berlin Tyskland 13 6 Mumbai Indien femton
# 6) MySQL UPDATE med INNER JOIN Keyword
ANSLUTA SIG är ett av de viktigaste nyckelorden i SQL-uttalandena. Vanligtvis kan du ha använt det i SELECT-uttalandet.
Det finns i princip fyra typer av JOIN-uttalanden:
- INRE KOPPLING: Hämtar de poster som är vanliga i båda tabellerna.
- VÄNSTER GÅ MED: Hämtar alla poster från tabellen till vänster om nyckelordet och matchande poster från tabellen till höger om nyckelordet.
- HÖGER GÅ MED: Hämtar alla poster från tabellen till höger om nyckelordet och matchande poster från tabellen till vänster om nyckelordet.
- YTTRE GÅNG: Hämtar alla poster från båda tabellerna, med motsvarande felaktiga poster representerade som NULL.
MySQL ger en unik möjlighet att använda JOIN även i UPDATE-uttalanden för att utföra uppdateringar över flera tabeller. Det är dock begränsat till INNER JOIN och LEFT JOIN.
Den generiska syntaxen för UPDATE-uttalandet med sökordet JOIN är som följer:
UPDATE TAB1, TAB2, (INNER JOIN | LEFT JOIN) TAB1 ON TAB1.COL1 = TAB2.COL1 SET TAB1.COL2 = TAB2.COL2, TAB2.COL3 = expr WHERE condition
- Här förväntar sig UPDATE-uttalandet tre dataobjekt.
- Tabellnamn, TAB1 och TAB2, på vilka föreningen utförs.
- Typ av JOIN som vi tänker utföra, INNER eller VÄNSTER.
- Därefter följer SET-kommandot med vilket vi kan uppdatera kolumnvärdena i antingen / eller TAB1 och TAB2.
- Slutligen en WHERE-klausul som endast uppdaterar de rader som passar våra kriterier.
För att förklara detta med ett exempel kan du lägga till ytterligare en kolumn i tabellen Anställda. Vi lägger till kolumnen 'lön' i tabellen Anställda. Tanken är att höja lönen till anställda med ett bonusprocentvärde som finns i bonuskolumnen i avdelningstabellen.
För att uppnå detta kommer vi att utföra följande ALTER-uttalanden för att lägga till en kolumn:
ALTER TABLE employees ADD COLUMN salarydecimal(7,2);
Därefter fyller vi de två nya fälten som vi har lagt till. Efter att ha fyllt värdena är följande innehållet i tabellen.
Anställdas tabell:
empNum förnamn efternamn e-post avd Lön 1007 Schmitt James js@gmail.com 4 18000 1001 Andrews Jack ja@gmail.com 1 3000 1002 Schwatz Mikrofon ms@gmail.com 1 5000 1003 Langley Margaret margaret.langley@gmail.com två 8000 1004 Harera Sandra sh@gmail.com 1 10.000 1005 läsa Peter pl@gmail.com två 13000 1006 Keith Jenny jk@gmail.com två 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 Kopp Harry hb@gmail.com 5 24000 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 27000
Låt oss nu använda nyckelordet JOIN och uppdatera lönen för alla anställda med en bonusprocent i avdelningstabellen. Här är deptNum nyckeln som de två tabellerna matchas på.
F nu är ögonblicksbilden av lönerna för anställda från och med nu:

Ögonblicksbild från avdelningstabellen är som följer:

Nedan följer UPDATE-frågan som kommer att uppdatera de anställdas lön baserat på bonusprocenten i avdelningstabellerna baserat på kolumnen deptNum.

Låt oss nu verifiera lönen för varje anställd efter vandringen.

Om du jämför det med föregående ögonblicksbild kan du enkelt förstå bonusprocenten som läggs till lönen.
Alla anställda måste heja!
Tabellbild före:
empNum förnamn efternamn e-post avd Lön 1007 Schmitt James js@gmail.com 4 18000 1001 Andrews Jack ja@gmail.com 1 3000 1002 Schwatz Mikrofon ms@gmail.com 1 5000 1003 Langley Margaret margaret.langley@gmail.com två 8000 1004 Harera Sandra sh@gmail.com 1 10.000 1005 läsa Peter pl@gmail.com två 13000 1006 Keith Jenny jk@gmail.com två 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 Kopp Harry hb@gmail.com 5 24000 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 27000
avd Stad Land Bonus 7 Rom Italien 18 1 New York Förenta staterna 3 två Charlotte Förenta staterna 5 3 Chicago Förenta staterna 8 4 London England 10 5 Berlin Tyskland 13 6 Mumbai Indien femton
Fråga:
UPDATE employees INNER JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * bonus)/100) ;
Tabell ögonblicksbild efter:
empNum förnamn efternamn e-post avd Lön 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Jack ja@gmail.com 1 3182,7 1002 Schwatz Mikrofon ms@gmail.com 1 5304,5 1003 Langley Margaret margaret.langley@gmail.com två 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 läsa Peter pl@gmail.com två 14332,5 1006 Keith Jenny jk@gmail.com två 16537.5 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494.4 1009 Kopp Harry hb@gmail.com 5 30645.6 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670
# 7) MySQL UPDATE med LEFT JOIN Keyword
Som förklarats i föregående avsnitt finns det två typer av JOIN som är tillåtna i MySQL UPDATE. Vi har redan sett UPPDATERING med INNER JOIN.
Låt oss börja med UPDATE med LEFT JOIN.
Exempel:
Vi har en ny anställning som ännu inte tilldelats någon avdelning. Men vi måste ge alla nyanställda en bonus på 1%. Eftersom den nya anställningen inte tilldelas någon avdelning kan vi inte få någon bonusprocentinformation från den tabellen. I ett sådant fall UPPDATERAR vi lönen för de nyanställda med VÄNSTER JOIN.
För att uppnå detta ska vi lägga till en ny medarbetare i medarbetardatabasen.
INSERT INTO employees(empNum, firstName, lastName, email, deptNum, Salary) VALUES (1011, “Tom”, “Hanks”, th@gmail.com, NULL, 10000.00);
Följande är den nya posten som vi har lagt till:

Anställdas tabell:
empNum förnamn efternamn e-post avd Lön 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Jack ja@gmail.com 1 3183 1002 Schwatz Mikrofon ms@gmail.com 1 5305 1003 Langley Margaret margaret.langley@gmail.com två 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 läsa Peter pl@gmail.com två 14333 1006 Keith Jenny jk@gmail.com två 16538 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494 1009 Kopp Harry hb@gmail.com 5 30646 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670 1011 Hanks Tom th@gmail.com NULL 10.000
Därefter ger vi Tom en bonus på 1% utöver sin lön med UPDATE-uttalandet med LEFT JOIN-klausulen:

Nedan visas lönen för TOM efter vandring.

Om du jämför det med föregående ögonblicksbild kan du enkelt förstå bonusprocenten som läggs till lönen.
Tabellbild före:
empNum förnamn efternamn e-post avd Lön 1011 Tom Hanks th@gmail.com NULL 10.000
Fråga:
UPDATE employees LEFT JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * 1)/100) WHERE employees.deptNum IS NULL ;
Tabell ögonblicksbild efter:
empNum förnamn efternamn e-post avd Lön 1011 Tom Hanks th@gmail.com NULL 10100
Rekommenderad läsning = >> MySQL går med
Vanliga frågor och svar
F # 1) Hur uppdaterar jag attribut i MySQL?
Svar: Vi kan uppdatera attribut med hjälp av MySQL UPDATE-uttalande, med uttalandet som börjar med UPDATE-nyckelordet följt av tabellnamnet. Nästa är SET-satsen följt av ett kolumnnamn och en WHERE-sats.
F # 2) Hur uppdaterar du flera poster i MySQL?
Svar: Som avbildas ovan, under “Uppdatera flera rader” avsnitt kan vi uppdatera flera rader för en eller flera kolumner med samma eller olika värden med CASE-uttalandet.
F # 3) Kan vi använda JOIN i Update-frågan i MySQL?
Svar: Ja, MySQL tillåter användning av JOIN i UPDATE-uttalanden. Det är dock endast begränsat till INNER och LEFT JOIN.
F # 4) Var kan jag ladda ner MySQL från?
Svar: Du kan ladda ner MySQL version 8.0 härifrån: MySQL .
F # 5) Vilken betydelse har WHERE-klausulen i Update-uttalandet?
Svar: WHERE klausul begränsar antalet rader som ska passa i UPDATE klausulens kriterier.
Föreslagen läsning = >> Hur man använder MySQL If-uttalande
Slutsats
Således har vi i denna handledning lärt oss om 7 olika sätt att köra MySQL UPDATE-uttalanden.
- Uppdatera en enda kolumn
- Uppdatera flera kolumner
- Uppdatera med REPLACE
- Uppdatera med SELECT
- Uppdatera flera rader
- Uppdatera med INNER JOIN
- Uppdatera med LEFT JOIN
Vi kan använda någon av dessa, baserat på våra krav.
Glad läsning!!
Rekommenderad läsning
- Skillnad mellan SQL Vs MySQL Vs SQL Server (med exempel)
- Topp 40 bästa MySQL-intervjufrågor och svar (2021 frågor)
- MongoDB uppdatera och ta bort dokument med exempel
- C # Använda uttalande och C # Virtuell metodhandledning med exempel
- Handledning om C # villkorliga uttalanden
- Java Reflection Tutorial med exempel
- Python DateTime-handledning med exempel
- Bugzilla Tutorial: Defect Management Tool Praktisk handledning