mysql update statement tutorial update query syntax examples
Denne vejledning forklarer MySQL UPDATE-erklæringen sammen med Query Syntax & eksempler. Du vil også lære forskellige variationer af MySQL Update Table Command:
Som med enhver anden database har vi altid et behov for at opdatere eller ændre eller ændre eksisterende data i tabellerne. I MySQL har vi UPDATE-sætningen, der kan bruges til at opdatere eller ændre dataene i tabellen.
Ved hjælp af denne kommando kan vi opdatere et eller flere felter. Vi kan opdatere værdierne for en bestemt tabel ad gangen. Ved at bruge WHERE-klausulen kan vi specificere de anvendte betingelser, især når der er behov for at opdatere specifikke rækker fra en tabel.
Før du fortsætter, skal du være opmærksom på, at vi bruger MySQL version 8.0. Du kan downloade det fra her.
Hvad du vil lære:
MySQL UPDATE tabel syntaks
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition;
Syntaks Forklaring:
- Syntaksen starter med nøgleordet “UPDATE” og informerer derved MySQL-serveren om typen af aktivitet, der skal udføres. Dette er et obligatorisk nøgleord og kan ikke udelades.
- Derefter kommer navnet på den tabel, som opdateringshandlingen skal udføres på. Dette er obligatorisk og kan ikke udelades.
- For det tredje er det igen et nøgleord - SET. Dette nøgleord informerer MySQL Server om de værdier, der skal opdateres for kolonnenavnene. Dette er et obligatorisk nøgleord og kan ikke udelades.
- Dernæst vil kolonnenavnene opdateres sammen med deres tilsvarende værdier. Dette er også obligatorisk og kan ikke udelades.
- Derefter kommer WHERE-betingelsen, som begrænser eller filtrerer antallet af målrækker, som UPDATE-handlingen skal anvendes på. WHERE er også et nøgleord, men et valgfrit.
WHERE-klausulen er dog vigtig. Hvis ikke nævnt, eller hvis betingelsen ikke er indstillet korrekt, opdateres hverken tabellen eller de ikke-krævede rækker.
Modifikatorer i en opdatering af tabeloversigten
Nedenfor er modifikatorerne angivet i en UPDATE-erklæring.
LAV PRIORITET: Denne modifikator informerer MySQL Engine om at udsætte opdateringen, indtil der ikke er nogen forbindelseslæsning fra tabellen.
IGNORERE: Denne modifikator informerer MySQL Engine om at fortsætte med UPDATE-operationen, selvom der er fejl. Der udføres ingen opdateringshandling på de rækker, der forårsagede fejl.
MySQL UPDATE Eksempel
Nedenfor er en eksempeltabel oprettet i MySQL.
Skema navn: pacific
Tabelnavn: medarbejdere
Kolonnenavne:
- empNum - Indeholder heltalsværdier for medarbejdernummeret.
- lastName - Indeholder varchar-værdier for medarbejderens efternavn.
- fornavn - Indeholder varchar-værdier for medarbejderens fornavn.
- e-mail - Indeholder varchar-værdier for medarbejderens e-mail-id.
- deptNum - Indeholder varchar for det afdelings-id, som en medarbejder tilhører.
- løn - Indeholder decimalværdier af løn for hver medarbejder.
Skema navn: pacific
Tabelnavn: afdelinger
Kolonnenavne:
- deptNum - Indeholder varchar til afdeling ID inden for en organisation.
- by - Indeholder navnet på den by, hvor afdelingerne arbejder fra.
- land - Indeholder navnet på det land, der svarer til byen.
- bonus - Indeholder den procentvise værdi af bonusen.
MySQL UPDATE tabelkommando
# 1) MySQL opdatering af en enkelt kolonne
Lad os nu finde ud af en post, som vi gerne vil opdatere. Først skal vi se på et scenario, hvor vi skal opdatere en enkelt kolonne ved hjælp af UPDATE-nøgleordet.
Her er en medarbejder med medarbejdernummeret som 1008.
Forespørgslen og dens tilsvarende resultater er som følger:
Lad os opdatere e-mail-id'et for denne medarbejder fra ob@gmail.com til oliver.bailey@gmail.com ved hjælp af UPDATE-nøgleordet.
OPDATERING: Nøgleordet informerer MySQL-motoren om, at udsagnet handler om at opdatere en tabel.
SÆT: Denne klausul indstiller værdien for det kolonnenavn, der er nævnt efter dette nøgleord, til en ny værdi.
HVOR: Denne klausul specificerer den særlige række, der skal opdateres.
Efter udførelse af UPDATE-sætningen viser output de statistikker, der er relateret til erklæringens udførelse.
Følgende er de detaljer, der vises:
- En erklæring, der blev udført.
- Beskeder, der viser antallet af rækker, der blev opdateret, og hvis der var advarsler.
For at verificere output af UPDATE-sætningen, lad os udføre SELECT-sætningen igen for at se ændringen i e-mail-id'et.
Tabel Snapshot før:
empNum | fornavn | efternavn | deptNum | |
---|---|---|---|---|
7 | Rom | Italien | ||
1008 | Oliver | Bailey | ob@gmail.com | 3 |
Forespørgsel:
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;
Tabel snapshot efter:
empNum | fornavn | efternavn | deptNum | |
---|---|---|---|---|
1008 | Oliver | Bailey | oliver.bailey@gmail.com | 3 |
# 2) MySQL opdater flere kolonner
Syntaksen for at opdatere mere end en kolonne ved hjælp af UPDATE-sætningen er den samme som for opdatering af en enkelt kolonne. En enkelt SET-sætning vil have flere kolonnenavne sammen med dens nye værdi, der skal indstilles, adskilt med et komma.
Lad os se på rækken, som vi har brug for at opdatere. Række med medarbejdernummeret som 1003.
Her vil vi prøve at opdatere efternavnet fra 'Mary' til 'Margaret' og derefter e-mail-id'et fra ml@gmail.com til margaret.langaley@gmail.com.
Følgende er UPDATE-forespørgslen. Overhold kolonnenavnene adskilt med et komma.
Outputtet fra ovenstående udførelse viser de samme statistikker som i det foregående tilfælde.
Følgende er output for den samme post efter udførelsen af UPDATE-sætningen.
Tabel Snapshot før:
empNum | fornavn | efternavn | deptNum | |
---|---|---|---|---|
1003 | Mary | Langley | ml@gmail.com | to |
Forespørgsel:
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ;
Tabel snapshot efter:
empNum | fornavn | efternavn | deptNum | |
---|---|---|---|---|
1003 | Margaret | Langley | margaret.langley@gmail.com | 3 |
# 3) MySQL-opdatering med ERSTAT-funktion
Lad os se mere om brugen af ERSTAT-funktionen til at OPDATERE en række i tabellen. Her er vores målpost, som vi vil opdatere.
Nedenstående registrering er for medarbejdernummer 1010. Vi målretter mod at opdatere e-mail-id'et fra ja@gmail.com til jacob.armstrong@gmail.com.
Lad os bruge følgende UPDATE-forespørgsel med funktionen ERSTAT, der opdaterer e-mail-id'et.
Følgende er de parametre, der sendes i REPLACE-funktionen. Alle 3 parametre er positionelle i karakter, dvs. rækkefølgen af parametrene kan ikke ændres.
1St.Parameter - Indeholder navnet på e-mail-id'et.
tondParameter - Indeholder det FROM-e-mail-id, der skal ændres.
3rdParameter - Indeholder TO-e-mail-id'et, som er den nye værdi.
Følgende er øjebliksbillede af tabellen efter udførelse af UPDATE-sætningen:
Tabel Snapshot før:
empNum | fornavn | efternavn | deptNum | |
---|---|---|---|---|
1010 | Jacob | Armstrong | ja@gmail.com | 4 |
Forespørgsel:
UPDATE employees SET email = REPLACE(email, “ja@gmail.com”, jacob.armstrong@gmail.com) WHERE empNum = 1010 ;
Tabel snapshot efter:
empNum | fornavn | efternavn | deptNum | |
---|---|---|---|---|
1010 | Jacob | Armstrong | jacob.armstrong@gmail.com | 4 |
# 4) MySQL UPDATE ved hjælp af SELECT-erklæring
I denne type UPDATE hentes den nye værdi for den kolonne, der skal opdateres, af en SELECT-sætning i en underforespørgsel. Så lad os tage et eksempel her fra vores 'medarbejdere' -tabel. Her er vores målpost, som vi vil opdatere.
I dette tilfælde opdaterer vi afdelingens nummer, dvs. kolonnen deptNum, ved hjælp af afdelingstabellerne. Hvis vi ser på afdelingstabellen, svarer deptNum = 5 til Berlin. Lad os flytte denne medarbejder til Charlotte på deptNum = 2.
For at opnå denne opgave anvendes følgende UPDATE-sætning:
For at bekræfte output fra vores UPDATE-sætning, lad os udføre VÆLG udmelding.
Som vist ovenfor er værdien for kolonnen deptNum blevet opdateret til “2”.
Tabel Snapshot før:
empNum | fornavn | efternavn | deptNum | |
---|---|---|---|---|
1005 | Peter | Læs | pl@gmail.com | 5 |
deptNum | By | Land |
---|---|---|
1 | New York | Forenede Stater |
to | Charlotte | Forenede Stater |
3 | Chicago | Forenede Stater |
4 | London | England |
5 | Berlin | Tyskland |
6 | Mumbai | Indien |
Forespørgsel:
Tabel snapshot efter:
empNum fornavn efternavn e-mail deptNum 7 Rom Italien NUL 1005 Peter Læs pl@gmail.com to
# 5) MySQL UPDATE flere rækker
Til tider står vi muligvis over for et krav, hvor vi skal opdatere en eller flere kolonner til flere rækker med forskellige værdier.
For eksempel, Vi ønsker at give et bestemt beløb af bonusafdelingsmæssigt, dvs. alle medarbejdere i en afdeling skal få en bestemt mængde bonus.
sql database interview spørgsmål og svar
Den generelle syntaks er som følger:
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END;
For at forklare dette med et eksempel kan vi tilføje endnu en kolonne til afdelingstabellerne. Vi tilføjer kolonnen 'bonus' til afdelingstabellen. Ideen er at tildele en bonusprocent til hver afdeling og hæve lønningerne til de ansatte med den procentdel, der svarer til hver afdeling.
For at opnå dette udfører vi følgende ALTER-udsagn for at tilføje en kolonne:
ALTER TABLE departments ADD COLUMN bonus decimal(5,2);
Følgende er tabelstrukturen efter ovenstående ændringer. De nye kolonner tilføjes med NUL som værdi.

Lad os derefter skrive UPDATE-forespørgslen, der opdaterer bonusprocenten for hver afdeling.

Efter udførelse af ovenstående erklæring, er det følgende øjebliksbillede med de opdaterede værdier for bonussøjlen.

Tabel Snapshot før:
deptNum By Land Bonus 1 New York Forenede Stater NUL to Charlotte Forenede Stater NUL 3 Chicago Forenede Stater NUL 4 London England NUL 5 Berlin Tyskland NUL 6 Mumbai Indien NUL
Forespørgsel:
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;
Tabel snapshot efter:
deptNum By Land Bonus 7 Rom Italien 18 1 New York Forenede Stater 3 to Charlotte Forenede Stater 5 3 Chicago Forenede Stater 8 4 London England 10 5 Berlin Tyskland 13 6 Mumbai Indien femten
# 6) MySQL UPDATE ved hjælp af INNER JOIN Keyword
TILSLUTTE er et af de vigtigste nøgleord i SQL-udsagnene. Normalt har du muligvis brugt det i SELECT-sætningen.
Der er grundlæggende fire typer JOIN-udsagn:
- INDRE MEDLEM: Henter de poster, der er almindelige i begge tabeller.
- VENSTRE MEDLEM: Henter alle poster fra tabellen i venstre side af nøgleordet og de matchende poster fra tabellen i højre side af nøgleordet.
- HØJRE MEDLEM: Henter alle poster fra tabellen i højre side af nøgleordet og de matchende poster fra tabellen i venstre side af nøgleordet.
- YDRE MEDLEM: Henter alle poster fra begge tabeller med de tilsvarende uoverensstemmende poster repræsenteret som NULL.
MySQL giver en unik mulighed for at bruge JOIN selv i UPDATE-udsagn til at udføre tværopdateringer. Det er dog kun begrænset til INNER JOIN og LEFT JOIN.
Den generiske syntaks af UPDATE-sætningen ved hjælp af JOIN-nøgleordet er som følger:
UPDATE TAB1, TAB2, (INNER JOIN | LEFT JOIN) TAB1 ON TAB1.COL1 = TAB2.COL1 SET TAB1.COL2 = TAB2.COL2, TAB2.COL3 = expr WHERE condition
- Her forventer UPDATE-sætningen tre dataelementer.
- Tabelnavne, TAB1 og TAB2, som sammenføjning udføres på.
- Type JOIN, som vi agter at udføre, INNER eller VENSTRE.
- Derefter følger kommandoen SET, hvor vi kan opdatere kolonneværdierne i enten / eller TAB1 og TAB2.
- Endelig en WHERE-klausul, der kun opdaterer de rækker, der passer til vores kriterier.
For at forklare dette med et eksempel kan vi tilføje endnu en kolonne til tabellen Medarbejdere. Vi tilføjer kolonnen 'løn' til tabellen Medarbejdere. Ideen er at hæve medarbejdernes løn med en bonusprocentværdi, der findes i bonussøjlen i afdelingstabellen.
For at opnå dette udfører vi følgende ALTER-udsagn for at tilføje en kolonne:
ALTER TABLE employees ADD COLUMN salarydecimal(7,2);
Dernæst udfylder vi de to nye felter, som vi har tilføjet. Efter udfyldning af værdierne er følgende indhold i tabellen.
Medarbejdertabel:
empNum fornavn efternavn e-mail deptNum Løn 1007 Schmitt James js@gmail.com 4 18000 1001 Andrews Jack ja@gmail.com 1 3000 1002 Schwatz Mike ms@gmail.com 1 5000 1003 Langley Margaret margaret.langley@gmail.com to 8000 1004 Harera Sandra sh@gmail.com 1 10.000 1005 Læs Peter pl@gmail.com to 13000 1006 Keith Jenny jk@gmail.com to 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 Kop Harry hb@gmail.com 5 24000 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 27000
Lad os nu bruge JOIN-nøgleordet og opdatere lønnen til alle medarbejderne med en bonusprocent i afdelingernes tabel. Her er deptNum den nøgle, som de to tabeller matches med.
F Tilladelse er øjebliksbillede af medarbejdernes lønninger fra nu af:

Øjebliksbillede fra afdelingstabellen er som følger:

Følgende er UPDATE-forespørgslen, der opdaterer medarbejdernes løn baseret på bonusprocenten i afdelingernes tabeller baseret på kolonnen deptNum.

Lad os nu kontrollere lønnen for hver medarbejder efter vandretur.

Hvis du sammenligner det med det foregående øjebliksbillede, kan du nemt forstå den bonusprocent, der er tilføjet til lønnen.
Alle medarbejdere skal juble!
Tabel Snapshot før:
empNum fornavn efternavn e-mail deptNum Løn 1007 Schmitt James js@gmail.com 4 18000 1001 Andrews Jack ja@gmail.com 1 3000 1002 Schwatz Mike ms@gmail.com 1 5000 1003 Langley Margaret margaret.langley@gmail.com to 8000 1004 Harera Sandra sh@gmail.com 1 10.000 1005 Læs Peter pl@gmail.com to 13000 1006 Keith Jenny jk@gmail.com to 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 Kop Harry hb@gmail.com 5 24000 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 27000
deptNum By Land Bonus 7 Rom Italien 18 1 New York Forenede Stater 3 to Charlotte Forenede Stater 5 3 Chicago Forenede Stater 8 4 London England 10 5 Berlin Tyskland 13 6 Mumbai Indien femten
Forespørgsel:
UPDATE employees INNER JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * bonus)/100) ;
Tabel snapshot efter:
empNum fornavn efternavn e-mail deptNum Løn 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Jack ja@gmail.com 1 3182,7 1002 Schwatz Mike ms@gmail.com 1 5304,5 1003 Langley Margaret margaret.langley@gmail.com to 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 Læs Peter pl@gmail.com to 14332,5 1006 Keith Jenny jk@gmail.com to 16537.5 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494.4 1009 Kop Harry hb@gmail.com 5 30645.6 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670
# 7) MySQL UPDATE ved hjælp af LEFT JOIN Keyword
Som forklaret i det foregående afsnit er der to typer JOIN, der er tilladt i MySQL UPDATE. Vi har allerede set UPDATE ved hjælp af INNER JOIN.
Lad os starte med UPDATE ved hjælp af LEFT JOIN.
Eksempel:
Vi har en ny ansættelse, der endnu ikke er tildelt en afdeling. Men vi er nødt til at give alle nyansatte en bonus på 1%. Da den nye ansættelse ikke er tildelt nogen afdeling, kan vi ikke få nogen bonusprocentoplysninger fra denne tabel. I et sådant tilfælde opdaterer vi lønnen for de nye ansættelser ved hjælp af LEFT JOIN.
For at opnå dette skal vi tilføje en ny medarbejder til medarbejderdatabasen.
INSERT INTO employees(empNum, firstName, lastName, email, deptNum, Salary) VALUES (1011, “Tom”, “Hanks”, th@gmail.com, NULL, 10000.00);
Følgende er den nye rekord, som vi har tilføjet:

Medarbejdertabel:
empNum fornavn efternavn e-mail deptNum Løn 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Jack ja@gmail.com 1 3183 1002 Schwatz Mike ms@gmail.com 1 5305 1003 Langley Margaret margaret.langley@gmail.com to 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 Læs Peter pl@gmail.com to 14333 1006 Keith Jenny jk@gmail.com to 16538 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494 1009 Kop Harry hb@gmail.com 5 30646 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670 1011 Hanks Tom th@gmail.com NUL 10.000
Dernæst giver vi Tom en bonus på 1% oven på sin løn ved hjælp af UPDATE-erklæringen med LEFT JOIN-klausul:

Nedenfor er lønnen for TOM efter vandretur.

Hvis du sammenligner det med det forrige øjebliksbillede, kan du nemt forstå den bonusprocent, der er tilføjet til lønnen.
Tabel Snapshot før:
empNum fornavn efternavn e-mail deptNum Løn 1011 Tom Hanks th@gmail.com NUL 10.000
Forespørgsel:
UPDATE employees LEFT JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * 1)/100) WHERE employees.deptNum IS NULL ;
Tabel snapshot efter:
empNum fornavn efternavn e-mail deptNum Løn 1011 Tom Hanks th@gmail.com NUL 10100
Anbefalet læsning = >> MySQL tilslutter sig
Ofte stillede spørgsmål og svar
Q # 1) Hvordan opdaterer jeg attributter i MySQL?
Svar: Vi kan opdatere attribut (er) ved hjælp af MySQL UPDATE-sætningen, hvor udsagnet begynder med UPDATE-nøgleordet efterfulgt af tabelnavnet. Dernæst er SET-klausulen efterfulgt af et kolonnenavn og en WHERE-klausul.
Q # 2) Hvordan opdaterer du flere poster i MySQL?
Svar: Som afbildet ovenfor, under “Opdater flere rækker” sektion, kan vi opdatere flere rækker til en eller flere kolonner med de samme eller forskellige værdier ved hjælp af CASE-sætningen.
Q # 3) Kan vi bruge JOIN i Update-forespørgsel i MySQL?
Svar: Ja, MySQL tillader brug af JOIN i UPDATE-udsagn. Det er dog kun begrænset til INDRE og VENSTRE JOIN.
Spørgsmål nr. 4) Hvor skal jeg downloade MySQL fra?
Svar: Du kan downloade MySQL version 8.0 herfra: MySQL .
Spørgsmål nr. 5) Hvad er betydningen af WHERE-klausulen i opdateringserklæringen?
Svar: WHERE-klausul begrænser antallet af rækker, der skal passe i UPDATE-klausulens kriterier.
Foreslået læsning = >> Sådan bruges MySQL If-erklæring
Konklusion
Således har vi i denne vejledning lært om 7 forskellige måder at udføre MySQL UPDATE-udsagn på.
- Opdater en enkelt kolonne
- Opdater flere kolonner
- Opdater ved hjælp af REPLACE
- Opdater ved hjælp af SELECT
- Opdater flere rækker
- Opdater ved hjælp af INNER JOIN
- Opdater ved hjælp af LEFT JOIN
Vi kan bruge en af disse baseret på vores krav.
God læselyst!!
Anbefalet læsning
- Forskellen mellem SQL Vs MySQL Vs SQL Server (med eksempler)
- Top 40 bedste MySQL-interviewspørgsmål og -svar (2021 spørgsmål)
- MongoDB opdater og slet dokument med eksempler
- C # Brug af erklæring og C # Virtuel metodevejledning med eksempler
- Tutorial On C # Conditional Statements
- Java Reflection Tutorial med eksempler
- Python DateTime-tutorial med eksempler
- Bugzilla Tutorial: Defect Management Tool Hands-on Tutorial