mysql update statement tutorial update query syntax examples
Denne opplæringen forklarer MySQL UPDATE-uttalelsen sammen med spørresyntaks og eksempler. Du vil også lære forskjellige variasjoner av MySQL Update Table Command:
Som med alle andre databaser, har vi alltid behov for å oppdatere eller endre eller endre eksisterende data i tabellene. I MySQL har vi UPDATE-setningen som kan brukes til å oppdatere eller endre dataene i tabellen.
Ved hjelp av denne kommandoen kan vi oppdatere ett eller flere felt. Vi kan oppdatere verdiene til en bestemt tabell om gangen. Ved å bruke WHERE-setningen kan vi spesifisere betingelsene som brukes, spesielt når det er behov for å oppdatere spesifikke rader fra en tabell.
Før du går videre, vær oppmerksom på at vi bruker MySQL versjon 8.0. Du kan laste den ned fra her.
Hva du vil lære:
MySQL UPDATE Tabellsyntaks
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition;
Syntaks Forklaring:
- Syntaksen starter med nøkkelordet “UPDATE”, og informerer derved MySQL Server om typen aktivitet som skal utføres. Dette er et obligatorisk nøkkelord og kan ikke utelates.
- Deretter kommer navnet på tabellen som oppdateringshandlingen må utføres på. Dette er obligatorisk og kan ikke utelates.
- For det tredje er det igjen et nøkkelord - SET. Dette nøkkelordet informerer MySQL Server om verdiene som skal oppdateres for kolonnenavnene. Dette er et obligatorisk nøkkelord og kan ikke utelates.
- Deretter blir kolonnenavnene som skal oppdateres sammen med de tilsvarende verdiene. Dette er også obligatorisk og kan ikke utelates.
- Deretter kommer WHERE-tilstanden, som begrenser eller filtrerer antall målrader som UPDATE-handlingen må brukes på. WHERE er også et nøkkelord, men et valgfritt.
WHERE-klausulen er imidlertid viktig. Hvis ikke dette er nevnt, eller hvis betingelsen ikke er satt riktig, blir verken tabellen eller de ikke-nødvendige radene oppdatert.
Modifikatorer i en UPDATE tabellerklæring
Enlisted nedenfor er modifikatorene i en UPDATE-uttalelse.
LAV PRIORITET: Denne modifisereren informerer MySQL-motoren om å utsette oppdateringen til det ikke er noen tilkoblingslesing fra tabellen.
OVERSE: Denne modifisereren informerer MySQL Engine om å fortsette med OPPDATERING, selv om det er noen feil. Ingen oppdateringshandlinger utføres på radene som forårsaket feil.
MySQL UPDATE Eksempel
Nedenfor er en eksempeltabell opprettet i MySQL.
Skjema navn: Stillehavet
Tabellnavn: ansatte
Kolonnenavn:
- empNum - Har heltallverdier for ansattnummeret.
- etternavn - Har varchar-verdier for etternavn til den ansatte.
- fornavn - Har varchar-verdier for fornavn til den ansatte.
- e-post - Har varchar-verdier for den ansattes e-post-ID.
- deptNum - Har varchar for avdelings-ID som en ansatt tilhører.
- lønn - Har desimalverdier av lønn for hver ansatt.
Skjema navn: Stillehavet
Tabellnavn: avdelinger
Kolonnenavn:
- deptNum - Har varchar for avdelings-ID i en organisasjon.
- by - Har navnet på byen der avdelingene jobber.
- land - Har navnet på landet som tilsvarer byen.
- bonus - Har den prosentvise verdien av bonusen.
MySQL UPDATE Tabellkommando
# 1) MySQL oppdaterer enkeltkolonne
La oss nå finne ut en post som vi ønsker å oppdatere. Først vil vi se på et scenario der vi må oppdatere en enkelt kolonne ved hjelp av UPDATE-nøkkelordet.
Her er en ansatt med ansatt nummer 1008.
Spørringen og de tilsvarende resultatene er som følger:
La oss oppdatere e-post-ID-en til denne medarbeideren fra ob@gmail.com til oliver.bailey@gmail.com, ved hjelp av UPDATE-nøkkelordet.
OPPDATER: Nøkkelordet informerer MySQL-motoren om at uttalelsen handler om å oppdatere en tabell.
SETT: Denne paragrafen setter verdien til kolonnenavnet som er nevnt etter dette søkeordet, til en ny verdi.
HVOR: Denne paragrafen spesifiserer den spesifikke raden som må oppdateres.
Etter at UPDATE-setningen er utført, vil utgangen vise statistikken relatert til uttalelsen.
Følgende er detaljene som vises:
- En uttalelse som ble henrettet.
- Meldinger som viser antall rader som ble oppdatert, og om det var advarsler.
For å bekrefte utdataene fra UPDATE-setningen, la oss kjøre SELECT-setningen på nytt for å se endringen i e-post-ID-en.
Tabell øyeblikksbilde før:
empNum | fornavn | etternavn | e-post | avd |
---|---|---|---|---|
7 | Roma | Italia | ||
1008 | Oliver | Bailey | ob@gmail.com | 3 |
Spørsmål:
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;
Tabell øyeblikksbilde etter:
empNum | fornavn | etternavn | e-post | avd |
---|---|---|---|---|
1008 | Oliver | Bailey | oliver.bailey@gmail.com | 3 |
# 2) MySQL oppdater flere kolonner
Syntaksen for å oppdatere mer enn en kolonne ved hjelp av UPDATE-setningen er den samme som for oppdatering av en enkelt kolonne. Én enkelt SET-setning vil ha flere kolonnenavn sammen med den nye verdien som må settes, atskilt med komma.
La oss ta en titt på raden vi trenger å oppdatere. Rad med ansatt nummer 1003.
Her vil vi prøve å oppdatere etternavnet fra “Mary” til “Margaret” og deretter e-post-ID fra ml@gmail.com til margaret.langaley@gmail.com.
Følgende er UPDATE-spørringen. Følg kolonnenavnene atskilt med komma.
Resultatet av ovennevnte utførelse viser samme statistikk som i forrige tilfelle.
Følgende er utdataene for samme postpost utførelsen av UPDATE-setningen.
Tabell øyeblikksbilde før:
empNum | fornavn | etternavn | e-post | avd |
---|---|---|---|---|
1003 | Mary | Langley | ml@gmail.com | to |
Spørsmål:
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ;
Tabell øyeblikksbilde etter:
empNum | fornavn | etternavn | e-post | avd |
---|---|---|---|---|
1003 | Margaret | Langley | margaret.langley@gmail.com | 3 |
# 3) MySQL-oppdatering med ERSTATT-funksjon
La oss se mer om å bruke ERSTATT-funksjonen til å OPPDATE en rad i tabellen. Her er vårt målrekord som vi vil oppdatere.
Registreringen nedenfor gjelder for ansatt nummer 1010. Vi vil målrette oss om å oppdatere e-post-ID-en fra ja@gmail.com til jacob.armstrong@gmail.com.
La oss bruke følgende UPDATE-spørsmål med REPLACE-funksjonen som vil oppdatere e-post-ID-en.
Følgende er parametrene som sendes i REPLACE-funksjonen. Alle de tre parametrene er posisjonelle i naturen, dvs. at rekkefølgen på parametrene ikke kan endres.
1St.Parameter - Inneholder navnet på e-post-ID-en.
tondParameter - Inneholder FROM e-post-ID som skal endres.
3rdParameter - Inneholder TO-e-post-IDen som er den nye verdien.
Følgende er øyeblikksbildet av tabellen etter gjennomføring av UPDATE-setningen:
Tabell øyeblikksbilde før:
empNum | fornavn | etternavn | e-post | avd |
---|---|---|---|---|
1010 | Jacob | Armstrong | ja@gmail.com | 4 |
Spørsmål:
UPDATE employees SET email = REPLACE(email, “ja@gmail.com”, jacob.armstrong@gmail.com) WHERE empNum = 1010 ;
Tabell øyeblikksbilde etter:
empNum | fornavn | etternavn | e-post | avd |
---|---|---|---|---|
1010 | Jacob | Armstrong | jacob.armstrong@gmail.com | 4 |
# 4) MySQL UPDATE ved hjelp av SELECT Statement
I denne typen OPPDATERING blir den nye verdien for kolonnen som skal oppdateres hentet av en SELECT-setning i en underspørring. Så, la oss ta et eksempel her fra 'ansatte' -tabellen. Her er vårt målrekord som vi vil oppdatere.
I dette tilfellet vil vi oppdatere avdelingsnummeret, dvs. kolonne deptNum, ved hjelp av avdelingstabellene. Hvis vi ser på avdelingstabellen, tilsvarer deptNum = 5 Berlin. La oss flytte denne medarbeideren til Charlotte på deptNum = 2.
For å oppnå denne oppgaven brukes følgende UPDATE-setning:
For å bekrefte utdataene fra UPDATE-uttalelsen, la oss utføre Å VELGE uttalelse.
Som vist ovenfor er verdien for kolonnen deptNum oppdatert til “2”.
Tabell øyeblikksbilde før:
empNum | fornavn | etternavn | e-post | avd |
---|---|---|---|---|
1005 | Peter | lese | pl@gmail.com | 5 |
avd | By | Land |
---|---|---|
1 | New York | forente stater |
to | Charlotte | forente stater |
3 | Chicago | forente stater |
4 | London | England |
5 | Berlin | Tyskland |
6 | Mumbai | India |
Spørsmål:
Tabell øyeblikksbilde etter:
empNum fornavn etternavn e-post avd 7 Roma Italia NULL 1005 Peter lese pl@gmail.com to
# 5) MySQL UPDATE flere rader
Noen ganger kan vi møte et krav der vi må oppdatere en eller flere kolonner for flere rader med forskjellige verdier.
For eksempel, Vi ønsker å gi et bestemt beløp av bonusavdeling klokt, dvs. alle ansatte i en avdeling skal få en bestemt mengde bonus.
beste virus fjerning programvare for pc
Den generelle syntaksen er som følger:
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END;
For å forklare dette med et eksempel kan du legge til en kolonne til avdelingstabellene. Vi vil legge til 'bonus' -kolonnen i avdelingstabellen. Ideen er å tildele en bonusprosent til hver avdeling og øke lønnen til de ansatte med den prosentandelen som tilsvarer hver avdeling.
For å oppnå dette vil vi utføre følgende ALTER-setninger for å legge til en kolonne:
ALTER TABLE departments ADD COLUMN bonus decimal(5,2);
Følgende vil være tabellstrukturen etter endringene ovenfor. De nye kolonnene vil bli lagt til med NULL som verdi.

La oss deretter skrive UPDATE-spørringen som vil oppdatere bonusprosenten for hver avdeling.

Etter utførelse av utsagnet ovenfor, er følgende øyeblikksbilde med oppdaterte verdier for bonuskolonnen.

Tabell øyeblikksbilde før:
avd By Land Bonus 1 New York forente stater NULL to Charlotte forente stater NULL 3 Chicago forente stater NULL 4 London England NULL 5 Berlin Tyskland NULL 6 Mumbai India NULL
Spørsmål:
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 øyeblikksbilde etter:
avd By Land Bonus 7 Roma Italia 18 1 New York forente stater 3 to Charlotte forente stater 5 3 Chicago forente stater 8 4 London England 10 5 Berlin Tyskland 1. 3 6 Mumbai India femten
# 6) MySQL UPDATE ved hjelp av INNER JOIN Keyword
BLI MED er et av de viktigste nøkkelordene i SQL-setningene. Vanligvis har du kanskje brukt den i SELECT-setningen.
Det er i utgangspunktet fire typer JOIN-utsagn:
- INNRE MEDLEM: Henter postene som er vanlige i begge tabeller.
- VENSTRE MEDLEM: Henter alle poster fra tabellen på venstre side av nøkkelordet og samsvarende poster fra tabellen på høyre side av nøkkelordet.
- RIKTIG MEDLEM: Henter alle poster fra tabellen på høyre side av nøkkelordet og samsvarende poster fra tabellen på venstre side av nøkkelordet.
- YTRE MEDLEM: Henter alle poster fra begge tabellene, med de tilsvarende feiltilpassede postene representert som NULL.
MySQL gir en unik mulighet til å bruke JOIN selv i UPDATE-setninger for å utføre oppdateringer på tvers av tabeller. Det er imidlertid bare begrenset til INNER JOIN og LEFT JOIN.
Den generiske syntaksen for UPDATE-setningen ved å bruke JOIN-nøkkelordet 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-setningen tre dataelementer.
- Tabellnavn, TAB1 og TAB2, som sammenføyning utføres på.
- Type JOIN som vi har tenkt å utføre, INNER eller VENSTRE.
- Deretter følger SET-kommandoen der vi kan oppdatere kolonneverdiene i enten / eller TAB1 og TAB2.
- Til slutt, en WHERE-klausul som bare oppdaterer de radene som passer til våre kriterier.
For å forklare dette med et eksempel kan du legge til en kolonne til tabellen ansatte. Vi vil legge til «lønn» -kolonnen i tabellen Ansatte. Ideen er å øke lønnen til de ansatte med en bonusprosentverdi som er tilstede i bonuskolonnen i avdelingstabellen.
For å oppnå dette vil vi utføre følgende ALTER-setninger for å legge til en kolonne:
ALTER TABLE employees ADD COLUMN salarydecimal(7,2);
Deretter vil vi fylle ut de to nye feltene vi har lagt til. Etter utfylling av verdiene, er følgende innholdet i tabellen.
Ansatte Tabell:
empNum fornavn etternavn e-post avd Lønn 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 lese Peter pl@gmail.com to 13000 1006 Keith Jenny jk@gmail.com to 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
La oss nå bruke JOIN-søkeordet og oppdatere lønnen til alle de ansatte med en bonusprosent i avdelingene. Her er deptNum nøkkelen som de to bordene blir matchet på.
F å la være øyeblikksbildet av lønn til ansatte per nå:

Øyeblikksbilde fra avdelingstabellen er som følger:

Følgende er UPDATE-spørringen som vil oppdatere lønnen til de ansatte basert på bonusprosenten i avdelingens tabeller basert på kolonnen deptNum.

La oss nå kontrollere lønnen til hver ansatt etter turen.

Hvis du sammenligner det med forrige øyeblikksbilde, kan du enkelt forstå bonusprosenten som er lagt til lønnen.
Alle ansatte må heie!
Tabell øyeblikksbilde før:
empNum fornavn etternavn e-post avd Lønn 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 lese Peter pl@gmail.com to 13000 1006 Keith Jenny jk@gmail.com to 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 By Land Bonus 7 Roma Italia 18 1 New York forente stater 3 to Charlotte forente stater 5 3 Chicago forente stater 8 4 London England 10 5 Berlin Tyskland 1. 3 6 Mumbai India femten
Spørsmål:
UPDATE employees INNER JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * bonus)/100) ;
Tabell øyeblikksbilde etter:
empNum fornavn etternavn e-post avd Lønn 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 lese 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 Kopp Harry hb@gmail.com 5 30645.6 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670
# 7) MySQL UPDATE ved å bruke LEFT JOIN Keyword
Som forklart i forrige avsnitt er det to typer JOIN som er tillatt i MySQL UPDATE. Vi har allerede sett UPDATE ved å bruke INNER JOIN.
La oss starte med UPDATE ved å bruke LEFT JOIN.
Eksempel:
Vi har en ny ansatt som ennå ikke er tildelt noen avdeling. Men vi må gi alle nyansatte en bonus på 1%. Nå som den nye ansettelsen ikke er tildelt noen avdeling, vil vi ikke kunne få noen bonusprosentinformasjon fra den tabellen. I et slikt tilfelle vil vi OPPDATERE lønnen for de nyansatte ved hjelp av VENSTRE JOIN.
For å oppnå dette, la oss legge til en ny ansatt i medarbeiderdatabasen.
INSERT INTO employees(empNum, firstName, lastName, email, deptNum, Salary) VALUES (1011, “Tom”, “Hanks”, th@gmail.com, NULL, 10000.00);
Følgende er den nye platen vi har lagt til:

Ansatte Tabell:
empNum fornavn etternavn e-post avd Lønn 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 lese Peter pl@gmail.com to 14333 1006 Keith Jenny jk@gmail.com to 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
Deretter vil vi gi Tom en bonus på 1% på lønnen ved hjelp av UPDATE-uttalelsen med LEFT JOIN-klausul:

Nedenfor er lønnen for TOM etter fottur.

Hvis du sammenligner det med forrige øyeblikksbilde, kan du enkelt forstå bonus% lagt til lønnen.
Tabell øyeblikksbilde før:
empNum fornavn etternavn e-post avd Lønn 1011 Tom Hanks th@gmail.com NULL 10.000
Spørsmål:
UPDATE employees LEFT JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * 1)/100) WHERE employees.deptNum IS NULL ;
Tabell øyeblikksbilde etter:
empNum fornavn etternavn e-post avd Lønn 1011 Tom Hanks th@gmail.com NULL 10100
Anbefalt lesing = >> MySQL blir med
Ofte stilte spørsmål og svar
Sp # 1) Hvordan oppdaterer jeg attributter i MySQL?
Svar: Vi kan oppdatere attributter ved hjelp av MySQL UPDATE-setningen, med utsagnet som begynner med UPDATE-nøkkelordet etterfulgt av tabellnavnet. Deretter er SET-setningen etterfulgt av et kolonnenavn og en WHERE-ledd.
Spørsmål 2) Hvordan oppdaterer du flere poster i MySQL?
Svar: Som vist ovenfor, under “Oppdater flere rader” seksjon, kan vi oppdatere flere rader for en eller flere kolonner med samme eller forskjellige verdier ved bruk av CASE-setningen.
Q # 3) Kan vi bruke JOIN i Update-spørring i MySQL?
Svar: Ja, MySQL tillater bruk av JOIN i UPDATE-setninger. Det er imidlertid bare begrenset til INNER og LEFT JOIN.
Q # 4) Hvor laster du ned MySQL fra?
Svar: Du kan laste ned MySQL versjon 8.0 herfra: MySQL .
Spørsmål nr. 5) Hva er betydningen av WHERE-klausulen i oppdateringserklæringen?
Svar: WHERE klausul begrenser antall rader som skal passe inn i UPDATE klausulens kriterier.
Foreslått lesing = >> Hvordan bruke MySQL If-uttalelse
Konklusjon
Dermed har vi i denne opplæringen lært om 7 forskjellige måter å utføre MySQL UPDATE-uttalelser på.
- Oppdater en enkelt kolonne
- Oppdater flere kolonner
- Oppdater ved hjelp av REPLACE
- Oppdater ved hjelp av SELECT
- Oppdater flere rader
- Oppdater ved hjelp av INNER JOIN
- Oppdater ved hjelp av LEFT JOIN
Vi kan bruke en av disse, basert på våre krav.
Glad lesning !!
Anbefalt lesing
- Forskjellen mellom SQL Vs MySQL Vs SQL Server (med eksempler)
- Topp 40 beste MySQL intervjuspørsmål og svar (2021 spørsmål)
- MongoDB oppdater og slett dokument med eksempler
- C # Bruk av uttalelse og C # Virtuell metodeopplæring 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