mysql update statement tutorial update query syntax examples
Acest tutorial explică declarația MySQL UPDATE împreună cu sintaxa interogărilor și exemple. De asemenea, veți afla diferite variații ale comenzii MySQL Update Table:
Ca și în cazul oricărei alte baze de date, avem întotdeauna nevoie să actualizăm, să modificăm sau să modificăm datele existente în tabele. În MySQL, avem declarația UPDATE care ar putea fi utilizată pentru actualizarea sau modificarea datelor din tabel.
Folosind această comandă, putem actualiza unul sau mai multe câmpuri. Putem actualiza valorile unui anumit tabel la un moment dat. Prin utilizarea clauzei WHERE putem specifica condițiile utilizate mai ales atunci când este necesar să se actualizeze anumite rânduri dintr-un tabel.
Înainte de a continua, vă rugăm să rețineți că folosim MySQL versiunea 8.0. O puteți descărca de la Aici.
Ce veți învăța:
- MySQL UPDATE Sintaxa tabelului
- Comandă MySQL UPDATE Table
- # 1) MySQL Actualizarea unei singure coloane
- # 2) MySQL Update Coloane multiple
- # 3) Actualizare MySQL cu funcția REPLACE
- # 4) Actualizare MySQL folosind declarația SELECT
- # 5) Actualizare MySQL Mai multe rânduri
- # 6) ACTUALIZARE MySQL Utilizând cuvântul cheie INNER JOIN
- # 7) ACTUALIZARE MySQL Utilizând cuvântul cheie LEFT JOIN
- Întrebări și răspunsuri frecvente
- Concluzie
MySQL UPDATE Sintaxa tabelului
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition;
Sintaxă Explicație:
- Sintaxa începe cu cuvântul cheie „UPDATE”, informând astfel serverul MySQL despre tipul de activitate care trebuie efectuată. Acesta este un cuvânt cheie obligatoriu și nu poate fi omis.
- Urmează numele tabelului pe care trebuie efectuată acțiunea de actualizare. Acest lucru este obligatoriu și nu poate fi omis.
- În al treilea rând, este din nou un cuvânt cheie - SET. Acest cuvânt cheie informează MySQL Server despre valorile care trebuie actualizate pentru numele coloanelor. Acesta este un cuvânt cheie obligatoriu și nu poate fi omis.
- Apoi, vor fi numele coloanelor care trebuie actualizate împreună cu valorile lor corespunzătoare. Acest lucru este, de asemenea, obligatoriu și nu poate fi omis.
- Apoi vine condiția WHERE, care restricționează sau filtrează numărul de rânduri țintă pe care trebuie aplicată acțiunea UPDATE. WHERE este, de asemenea, un cuvânt cheie, dar unul opțional.
Clauza WHERE este totuși semnificativă. Dacă nu este menționat sau dacă condiția nu este setată corect, nici tabelul, nici rândurile neobligatorii nu vor fi actualizate.
Modificatori într-o declarație de tabel UPDATE
Înscriși mai jos sunt modificatorii dintr-o declarație UPDATE.
PRIORITATE REDUSA: Acest modificator informează MySQL Engine să întârzie actualizarea până când nu există citirea conexiunii din tabel.
IGNORA: Acest modificator informează MySQL Engine să continue cu operația UPDATE chiar dacă există erori. Nu se efectuează nicio acțiune de actualizare pe rândurile care au provocat erori.
MySQL UPDATE Exemplu
Mai jos este prezentat un exemplu de tabel creat în MySQL.
Nume schemă: Pacific
Nume tabel: angajați
Numele coloanelor:
- empNum - Deține valori întregi pentru numărul de angajat.
- lastName - Deține valori varchar pentru numele de familie al angajatului.
- firstName - Deține valori varchar pentru prenumele angajatului.
- e-mail - Deține valori varchar pentru ID-ul de e-mail al angajatului.
- deptNum - Deține varchar pentru ID-ul departamentului de care aparține un angajat.
- salariu - Deține valori zecimale ale salariului pentru fiecare angajat.
Nume schemă: Pacific
Nume tabel: departamente
Numele coloanelor:
- deptNum - Deține varchar pentru ID-ul departamentului într-o organizație.
- oraș - Deține numele orașului din care lucrează departamentele.
- country - Deține numele țării corespunzătoare orașului.
- bonus - Deține valoarea procentuală a bonusului.
Comandă MySQL UPDATE Table
# 1) MySQL Actualizarea unei singure coloane
Acum, să aflăm o înregistrare pe care am vrea să o actualizăm. În primul rând, vom arunca o privire la un scenariu în care trebuie să actualizăm o singură coloană folosind cuvântul cheie UPDATE.
Iată un angajat cu numărul de angajat 1008.
Interogarea și rezultatele corespunzătoare sunt următoarele:
Să actualizăm ID-ul de e-mail al acestui angajat de la ob@gmail.com la oliver.bailey@gmail.com, utilizând cuvântul cheie UPDATE.
ACTUALIZAȚI: Cuvântul cheie informează motorul MySQL că afirmația este despre Actualizarea unui tabel.
A STABILIT: Această clauză stabilește valoarea numelui coloanei menționat după acest cuvânt cheie la o nouă valoare.
UNDE: Această clauză specifică rândul special care trebuie actualizat.
După executarea instrucțiunii UPDATE, rezultatul va afișa statisticile legate de executarea instrucțiunii.
Următoarele sunt detaliile care sunt afișate:
- O declarație care a fost executată.
- Mesaje care arată numărul de rânduri care au fost actualizate și dacă au existat avertismente.
Pentru a verifica ieșirea instrucțiunii UPDATE, să executăm din nou instrucțiunea SELECT pentru a vedea modificarea ID-ului de e-mail.
Instantaneu de tabel înainte:
empNum | Nume | numele de familie | deptNum | |
---|---|---|---|---|
7 | Roma | Italia | ||
1008 | Oliver | Bailey | ob@gmail.com | 3 |
Interogare:
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;
Instantaneu de masă după:
empNum | Nume | numele de familie | deptNum | |
---|---|---|---|---|
1008 | Oliver | Bailey | oliver.bailey@gmail.com | 3 |
# 2) MySQL Update Coloane multiple
Sintaxa pentru actualizarea mai multor coloane utilizând instrucțiunea UPDATE este aceeași cu cea a actualizării unei singure coloane. O singură instrucțiune SET va avea mai multe nume de coloane împreună cu noua sa valoare care trebuie setată, separate printr-o virgulă.
Să aruncăm o privire la rândul pe care trebuie să îl actualizăm. Rând cu numărul de angajat 1003.
Aici vom încerca să actualizăm prenumele de la „Mary” la „Margaret” și apoi ID-ul de e-mail de la ml@gmail.com la margaret.langaley@gmail.com.
Următoarea este interogarea UPDATE. Observați numele coloanelor separate printr-o virgulă.
Rezultatul execuției de mai sus prezintă aceleași statistici ca în cazul anterior.
Urmează ieșirea pentru aceeași înregistrare după executarea declarației UPDATE.
Instantaneu de tabel înainte:
empNum | Nume | numele de familie | deptNum | |
---|---|---|---|---|
1003 | Maria | Langley | ml@gmail.com | Două |
Interogare:
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ;
Instantaneu de masă după:
empNum | Nume | numele de familie | deptNum | |
---|---|---|---|---|
1003 | Margaret | Langley | margaret.langley@gmail.com | 3 |
# 3) Actualizare MySQL cu funcția REPLACE
Să vedem mai multe despre utilizarea funcției REPLACE pentru a ACTUALIZA un rând din tabel. Iată înregistrarea noastră țintă pe care dorim să o actualizăm.
Înregistrarea de mai jos este pentru numărul de angajat 1010. Vom viza să actualizăm ID-ul de e-mail de la ja@gmail.com la jacob.armstrong@gmail.com.
Să folosim următoarea interogare UPDATE cu funcția REPLACE care va actualiza ID-ul de e-mail.
Următorii sunt parametrii trecuți în funcția REPLACE. Toți cei 3 parametri sunt de natură pozițională, adică ordinea parametrilor nu poate fi modificată.
unuSfParametru - Conține numele ID-ului de e-mail.
DouăndParametru - Conține ID-ul de e-mail FROM care urmează să fie modificat.
3rdParametru - Conține ID-ul de e-mail TO, care este noua valoare.
Urmează instantaneul post-executării tabelului declarației UPDATE:
Instantaneu de tabel înainte:
empNum | Nume | numele de familie | deptNum | |
---|---|---|---|---|
1010 | Iacov | Armstrong | ja@gmail.com | 4 |
Interogare:
UPDATE employees SET email = REPLACE(email, “ja@gmail.com”, jacob.armstrong@gmail.com) WHERE empNum = 1010 ;
Instantaneu de masă după:
empNum | Nume | numele de familie | deptNum | |
---|---|---|---|---|
1010 | Iacov | Armstrong | jacob.armstrong@gmail.com | 4 |
# 4) Actualizare MySQL folosind declarația SELECT
În acest tip de ACTUALIZARE, noua valoare pentru coloana care urmează să fie actualizată este preluată de o instrucțiune SELECT într-o subinterogare. Deci, să luăm un exemplu aici din tabelul „angajaților” noștri. Iată înregistrarea noastră țintă pe care dorim să o actualizăm.
În acest caz, vom actualiza numărul departamentului, adică coloana deptNum, folosind tabelele departamentelor. Dacă ne uităm la tabelul departamentelor, deptNum = 5 corespunde Berlinului. Să mutăm acest angajat la Charlotte la deptNum = 2.
Pentru a realiza această sarcină, se folosește următoarea declarație UPDATE:
Pentru a verifica rezultatul declarației noastre UPDATE, să executăm SELECTAȚI afirmație.
După cum se arată mai sus, valoarea pentru coloana deptNum a fost actualizată la „2”.
Instantaneu de tabel înainte:
empNum | Nume | numele de familie | deptNum | |
---|---|---|---|---|
1005 | Petru | citit | pl@gmail.com | 5 |
deptNum | Oraș | Țară |
---|---|---|
unu | New York | Statele Unite |
Două | Charlotte | Statele Unite |
3 | Chicago | Statele Unite |
4 | Londra | Anglia |
5 | Berlin | Germania |
6 | Mumbai | India |
Interogare:
Instantaneu de masă după:
empNum Nume numele de familie e-mail deptNum 7 Roma Italia NUL 1005 Petru citit pl@gmail.com Două
# 5) Actualizare MySQL Mai multe rânduri
Uneori, s-ar putea să ne confruntăm cu o cerință în care trebuie să actualizăm una sau mai multe coloane pentru mai multe rânduri cu valori diferite.
De exemplu, vrem să oferim o anumită cantitate de bonus în funcție de departament, adică toți angajații dintr-un departament ar trebui să primească o anumită sumă de bonus.
unde pot transmite gratuit anime
Sintaxa generală este următoarea:
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END;
Pentru a explica acest lucru cu un exemplu, permiteți să adăugați încă o coloană la tabelele departamentului. Vom adăuga coloana „bonus” în tabelul departamentului. Ideea este de a atribui un procent bonus pentru fiecare departament și de a crește salariul angajaților cu acel procent corespunzător fiecărui departament.
Pentru a realiza acest lucru, vom executa următoarele instrucțiuni ALTER pentru a adăuga o coloană:
ALTER TABLE departments ADD COLUMN bonus decimal(5,2);
Următoarea ar fi structura tabelului după modificările de mai sus. Noile coloane vor fi adăugate cu NUL ca valoare.

Apoi, să scriem interogarea UPDATE care va actualiza procentul bonus pentru fiecare departament.

După executarea declarației de mai sus, următorul este instantaneul cu valorile actualizate pentru coloana Bonus.

Instantaneu de tabel înainte:
deptNum Oraș Țară Primă unu New York Statele Unite NUL Două Charlotte Statele Unite NUL 3 Chicago Statele Unite NUL 4 Londra Anglia NUL 5 Berlin Germania NUL 6 Mumbai India NUL
Interogare:
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;
Instantaneu de masă după:
deptNum Oraș Țară Primă 7 Roma Italia 18 unu New York Statele Unite 3 Două Charlotte Statele Unite 5 3 Chicago Statele Unite 8 4 Londra Anglia 10 5 Berlin Germania 13 6 Mumbai India cincisprezece
# 6) ACTUALIZARE MySQL Utilizând cuvântul cheie INNER JOIN
A TE ALATURA este unul dintre cele mai importante cuvinte cheie din instrucțiunile SQL. De obicei, s-ar putea să-l fi folosit în instrucțiunea SELECT.
În principiu, există patru tipuri de declarații JOIN:
- ÎNREGISTRARE INTERIORĂ: Preluează înregistrările care sunt comune în ambele tabele.
- ÎNREGISTRARE STÂNGA Preluează toate înregistrările din tabelul din partea stângă a cuvântului cheie și înregistrările care se potrivesc din tabelul din partea dreaptă a cuvântului cheie.
- ÎNREGISTRARE DREPTĂ: Preluează toate înregistrările din tabelul din partea dreaptă a cuvântului cheie și înregistrările potrivite din tabelul din partea stângă a cuvântului cheie.
- ÎNSCRIEȚI-VĂ PE EXTERIOR: Preluează toate înregistrările din ambele tabele, cu înregistrările necorespunzătoare corespunzătoare reprezentate ca NULL.
MySQL oferă o ocazie unică de a utiliza JOIN chiar și în instrucțiunile UPDATE pentru a efectua actualizări pe mai multe mese. Cu toate acestea, este limitat doar la INNER JOIN și LEFT JOIN.
Sintaxa generică a instrucțiunii UPDATE folosind cuvântul cheie JOIN este după cum urmează:
UPDATE TAB1, TAB2, (INNER JOIN | LEFT JOIN) TAB1 ON TAB1.COL1 = TAB2.COL1 SET TAB1.COL2 = TAB2.COL2, TAB2.COL3 = expr WHERE condition
- Aici, declarația UPDATE așteaptă trei elemente de date.
- Numele tabelelor, TAB1 și TAB2, pe care se efectuează unirea.
- Tipul de JOIN pe care intenționăm să îl realizăm, INTERIOR sau STÂNGA.
- Apoi urmează comanda SET folosind care putem actualiza valorile coloanei în / sau TAB1 și TAB2.
- În sfârșit, o clauză WHERE pentru a actualiza numai acele rânduri care se potrivesc criteriilor noastre.
Pentru a explica acest lucru cu un exemplu, permiteți să adăugați încă o coloană la tabelul Angajați. Vom adăuga coloana „salariu” în tabelul Angajaților. Ideea este de a crește salariul angajaților cu o valoare procentuală bonus prezentă în coloana bonus din tabelul departamentului.
Pentru a realiza acest lucru, vom executa următoarele instrucțiuni ALTER pentru a adăuga o coloană:
ALTER TABLE employees ADD COLUMN salarydecimal(7,2);
În continuare, vom completa cele două câmpuri noi pe care le-am adăugat. Postați popularea valorilor, următorul este conținutul tabelului.
Tabelul angajaților:
empNum Nume numele de familie e-mail deptNum Salariu 1007 Schmitt James js@gmail.com 4 18000 1001 Andrews Jack ja@gmail.com unu 3000 1002 Schwatz Mike ms@gmail.com unu 5000 1003 Langley Margaret margaret.langley@gmail.com Două 8000 1004 Harera Sandra sh@gmail.com unu 10.000 1005 citit Petru pl@gmail.com Două 13000 1006 Keith Jenny jk@gmail.com Două 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 ceașcă Harry hb@gmail.com 5 24000 1010 Armstrong Iacov jacob.armstrong@gmail.com 4 27000
Acum, să folosim cuvântul cheie JOIN și să actualizăm salariul tuturor angajaților cu un procent bonus în tabelul departamentelor. Aici, deptNum este cheia pe care se vor potrivi cele două tabele.
F Urmărirea este instantaneul salariilor angajaților de acum:

Instantaneul din tabelul Departamente este după cum urmează:

Urmează interogarea UPDATE care va actualiza salariul angajaților pe baza procentului de bonus din tabelele departamentelor pe baza coloanei cheie deptNum.

Acum, să verificăm salariul fiecărui angajat după plimbare.

Dacă îl comparați cu instantaneul anterior, atunci puteți înțelege cu ușurință procentul bonus adăugat la salariu.
Toți angajații trebuie să fie înveseliți!
Instantaneu de tabel înainte:
empNum Nume numele de familie e-mail deptNum Salariu 1007 Schmitt James js@gmail.com 4 18000 1001 Andrews Jack ja@gmail.com unu 3000 1002 Schwatz Mike ms@gmail.com unu 5000 1003 Langley Margaret margaret.langley@gmail.com Două 8000 1004 Harera Sandra sh@gmail.com unu 10.000 1005 citit Petru pl@gmail.com Două 13000 1006 Keith Jenny jk@gmail.com Două 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 ceașcă Harry hb@gmail.com 5 24000 1010 Armstrong Iacov jacob.armstrong@gmail.com 4 27000
deptNum Oraș Țară Primă 7 Roma Italia 18 unu New York Statele Unite 3 Două Charlotte Statele Unite 5 3 Chicago Statele Unite 8 4 Londra Anglia 10 5 Berlin Germania 13 6 Mumbai India cincisprezece
Interogare:
UPDATE employees INNER JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * bonus)/100) ;
Instantaneu de masă după:
empNum Nume numele de familie e-mail deptNum Salariu 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Jack ja@gmail.com unu 3182,7 1002 Schwatz Mike ms@gmail.com unu 5304,5 1003 Langley Margaret margaret.langley@gmail.com Două 8820 1004 Harera Sandra sh@gmail.com unu 10609 1005 citit Petru pl@gmail.com Două 14332,5 1006 Keith Jenny jk@gmail.com Două 16537,5 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494.4 1009 ceașcă Harry hb@gmail.com 5 30645.6 1010 Armstrong Iacov jacob.armstrong@gmail.com 4 32670
# 7) ACTUALIZARE MySQL Utilizând cuvântul cheie LEFT JOIN
După cum sa explicat în secțiunea anterioară, există două tipuri de JOIN care sunt permise în MySQL UPDATE. Am văzut deja UPDATE folosind INNER JOIN.
Să începem cu UPDATE folosind LEFT JOIN.
Exemplu:
Avem un nou angajat care nu a fost încă repartizat la niciun departament. Dar trebuie să acordăm tuturor angajaților noi un bonus de 1%. Acum, întrucât noua angajare nu este alocată niciunui departament, nu vom putea obține informații despre procentajul bonus din tabelul respectiv. Într-un astfel de caz, vom actualiza salariul pentru noii angajați folosind LEFT JOIN.
Pentru a realiza acest lucru, să adăugăm un nou angajat la baza de date a angajaților.
INSERT INTO employees(empNum, firstName, lastName, email, deptNum, Salary) VALUES (1011, “Tom”, “Hanks”, th@gmail.com, NULL, 10000.00);
Urmează noul record pe care l-am adăugat:

Tabelul angajaților:
empNum Nume numele de familie e-mail deptNum Salariu 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Jack ja@gmail.com unu 3183 1002 Schwatz Mike ms@gmail.com unu 5305 1003 Langley Margaret margaret.langley@gmail.com Două 8820 1004 Harera Sandra sh@gmail.com unu 10609 1005 citit Petru pl@gmail.com Două 14333 1006 Keith Jenny jk@gmail.com Două 16538 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494 1009 ceașcă Harry hb@gmail.com 5 30646 1010 Armstrong Iacov jacob.armstrong@gmail.com 4 32670 1011 Hanks Tom th@gmail.com NUL 10.000
Apoi, îi vom oferi lui Tom un bonus de 1% peste salariul său folosind declarația UPDATE cu clauza LEFT JOIN:

Dat mai jos este salariul TOM după plimbare.

Dacă îl comparați cu instantaneul anterior, puteți înțelege cu ușurință% bonus adăugat la salariu.
Instantaneu de tabel înainte:
empNum Nume numele de familie e-mail deptNum Salariu 1011 Tom Hanks th@gmail.com NUL 10.000
Interogare:
UPDATE employees LEFT JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * 1)/100) WHERE employees.deptNum IS NULL ;
Instantaneu de masă după:
empNum Nume numele de familie e-mail deptNum Salariu 1011 Tom Hanks th@gmail.com NUL 10100
Lectură recomandată = >> MySQL se alătură
Întrebări și răspunsuri frecvente
Q # 1) Cum actualizez atributele în MySQL?
Răspuns: Putem actualiza atribute folosind instrucțiunea MySQL UPDATE, declarația începând cu cuvântul cheie UPDATE urmat de numele tabelului. Urmează clauza SET urmată de un nume de coloană și o clauză WHERE.
Q # 2) Cum actualizați mai multe înregistrări în MySQL?
Răspuns: După cum este descris mai sus, sub „Actualizați mai multe rânduri” secțiune, putem actualiza mai multe rânduri pentru una sau mai multe coloane cu aceleași valori sau diferite folosind instrucțiunea CASE.
Î # 3) Putem folosi JOIN în interogarea de actualizare în MySQL?
Răspuns: Da, MySQL permite utilizarea JOIN în instrucțiunile UPDATE. Cu toate acestea, este restricționat doar la INNER și LEFT JOIN.
Q # 4) De unde să descărcați MySQL?
Răspuns: Puteți descărca MySQL versiunea 8.0 de aici: MySQL .
Q # 5) Care este semnificația clauzei WHERE din declarația de actualizare?
Răspuns: Clauza WHERE restricționează numărul de rânduri care ar trebui să se încadreze în criteriile clauzei UPDATE.
Citire sugerată = >> Cum se folosește Declarație MySQL If
Concluzie
Astfel, în acest tutorial, am învățat despre 7 moduri diferite de a executa instrucțiunile MySQL UPDATE.
- Actualizați o singură coloană
- Actualizați mai multe coloane
- Actualizați utilizând REPLACE
- Actualizați utilizând SELECT
- Actualizați mai multe rânduri
- Actualizați utilizând INNER JOIN
- Actualizați utilizând LEFT JOIN
Putem folosi oricare dintre acestea, pe baza cerințelor noastre.
Lectura placuta!!
Lectură recomandată
- Diferența dintre SQL și MySQL împotriva SQL Server (cu exemple)
- Top 40 cele mai bune întrebări și răspunsuri la interviu MySQL (2021 întrebări)
- Actualizați MongoDB și ștergeți documentul cu exemple
- C # Utilizarea instrucțiunii și C # Tutorial de metodă virtuală cu exemple
- Tutorial privind declarațiile condiționate C #
- Tutorial de reflecție Java cu exemple
- Tutorial Python DateTime cu exemple
- Tutorial Bugzilla: Tutorial practic pentru instrumentul de gestionare a defectelor