mysql update statement tutorial update query syntax examples
Aquest tutorial explica la sentència UPDATE de MySQL juntament amb la sintaxi i exemples de consulta. També aprendreu diferents variacions de l'ordre MySQL Update Table:
Com passa amb qualsevol altra base de dades, sempre hem d’actualitzar, modificar o canviar les dades existents a les taules. A MySQL, tenim la sentència UPDATE que es podria utilitzar per actualitzar o modificar les dades de la taula.
Mitjançant aquesta ordre, podem actualitzar un o diversos camps. Podem actualitzar els valors d’una taula concreta alhora. Mitjançant l’ús de la clàusula WHERE podem especificar les condicions que s’utilitzen especialment quan cal actualitzar files específiques d’una taula.
Abans de continuar endavant, tingueu en compte que estem utilitzant la versió 8.0 de MySQL. Podeu descarregar-lo des de aquí.
Què aprendreu:
- Sintaxi de la taula d’actualització de MySQL
- Ordre de la taula MySQL UPDATE
- # 1) MySQL Actualitzant una sola columna
- # 2) Actualització de MySQL diverses columnes
- # 3) Actualització de MySQL amb funció REPLACE
- # 4) ACTUALITZACIÓ MySQL mitjançant instrucció SELECT
- # 5) Actualització de MySQL diverses files
- # 6) ACTUALITZACIÓ DE MySQL mitjançant la paraula clau INNER JOIN
- # 7) ACTUALITZACIÓ DE MySQL Utilitzant la paraula clau LEFT JOIN
- Preguntes i respostes freqüents
- Conclusió
Sintaxi de la taula d’actualització de MySQL
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition;
Sintaxi Explicació:
- La sintaxi comença amb la paraula clau 'ACTUALITZACIÓ', informant així el servidor MySQL sobre el tipus d'activitat que s'ha de realitzar. Aquesta és una paraula clau obligatòria i no es pot ometre.
- A continuació ve el nom de la taula en què s'ha de realitzar l'acció d'actualització. Això és obligatori i no es pot ometre.
- En tercer lloc, torna a ser una paraula clau: SET. Aquesta paraula clau informa al servidor MySQL sobre els valors que s’han d’actualitzar per als noms de les columnes. Aquesta és una paraula clau obligatòria i no es pot ometre.
- A continuació, es mostraran els noms de columna que s’actualitzaran juntament amb els valors corresponents. Això també és obligatori i no es pot ometre.
- Després ve la condició WHERE, que restringeix o filtra el nombre de files de destinació en què s'ha d'aplicar l'acció ACTUALITZA. WHERE també és una paraula clau, però opcional.
La clàusula WHERE és, però, significativa. Si no s’esmenta o si la condició no està configurada correctament, ni la taula ni les files no obligatòries s’actualitzaran.
Modificadors en una declaració de la taula ACTUALITZACIÓ
A continuació, es mostren els modificadors d’una instrucció UPDATE.
BAIX_PRIORITAT: Aquest modificador informa al motor MySQL de retardar l’actualització fins que no hi hagi cap lectura de connexió a la taula.
Ignora: Aquest modificador informa a MySQL Engine de continuar amb l'operació ACTUALITZAR encara que hi hagi errors. No es realitza cap acció d'actualització a les files que han provocat errors.
Exemple d’actualització de MySQL
A continuació es mostra una taula de mostra creada a MySQL.
Nom de l'esquema: pacífic
Nom de la taula: empleats
Noms de columna:
- empNum: manté valors enters per al número d'empleat.
- lastName: manté valors varchar per al cognom de l’empleat.
- firstName: manté els valors varchar per al nom de l’empleat.
- correu electrònic: manté valors varchar per a l’identificador de correu electrònic de l’empleat.
- deptNum: manté el nom de departament al qual pertany un empleat.
- salari: manté els valors decimals del salari per a cada empleat.
Nom de l'esquema: pacífic
Nom de la taula: departaments
Noms de columna:
- deptNum: manté varchar per a la identificació del departament dins d'una organització.
- ciutat: manté el nom de la ciutat des de la qual treballen els departaments.
- país: manté el nom del país corresponent a la ciutat.
- bonificació: manté el valor percentual de la bonificació.
Ordre de la taula MySQL UPDATE
# 1) MySQL Actualitzant una sola columna
Ara, esbrinem un registre que voldríem actualitzar. En primer lloc, veurem un escenari en què hem d’actualitzar una sola columna mitjançant la paraula clau UPDATE.
Aquí hi ha un empleat amb el número d’empleat com a 1008.
La consulta i els seus resultats corresponents són els següents:
Actualitzem l’identificador de correu electrònic d’aquest empleat des de ob@gmail.com a oliver.bailey@gmail.com mitjançant la paraula clau UPDATE.
ACTUALITZACIÓ: La paraula clau informa el motor MySQL que la declaració tracta sobre l’actualització d’una taula.
CONJUNT: Aquesta clàusula estableix el valor del nom de columna esmentat després d'aquesta paraula clau en un valor nou.
ON: Aquesta clàusula especifica la fila particular que cal actualitzar.
Després d'executar la sentència UPDATE, la sortida mostrarà les estadístiques relacionades amb l'execució de la sentència.
A continuació es detallen els detalls:
- Una declaració que es va executar.
- Missatges que mostren el nombre de files actualitzades i si hi ha hagut advertiments.
Per tal de verificar la sortida de la sentència UPDATE, tornem a executar la sentència SELECT per veure el canvi de l’identificador de correu electrònic.
Instantània de la taula abans:
empNum | nom | cognom | correu electrònic | deptNum |
---|---|---|---|---|
7 | Roma | Itàlia | ||
1008 | Oliver | Bailey | ob@gmail.com | 3 |
Consulta:
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;
Instantània de la taula després de:
empNum | nom | cognom | correu electrònic | deptNum |
---|---|---|---|---|
1008 | Oliver | Bailey | oliver.bailey@gmail.com | 3 |
# 2) Actualització de MySQL diverses columnes
La sintaxi per actualitzar més d'una columna mitjançant la instrucció UPDATE és la mateixa que per actualitzar una sola columna. Una sentència SET única tindrà diversos noms de columna juntament amb el seu nou valor que s'ha d'establir, separats per una coma.
Vegem la fila que hem d’actualitzar. Fila amb el número d'empleat com a 1003.
Aquí intentarem actualitzar el cognom de 'Mary' a 'Margaret' i, a continuació, l'identificador de correu electrònic de ml@gmail.com a margaret.langaley@gmail.com.
La següent és la consulta ACTUALITZACIÓ. Observeu els noms de columna separats per una coma.
La sortida de l'execució anterior mostra les mateixes estadístiques que en el cas anterior.
A continuació es mostra la sortida del mateix registre després de l’execució de la sentència UPDATE.
Instantània de la taula abans:
empNum | nom | cognom | correu electrònic | deptNum |
---|---|---|---|---|
1003 | Maria | Langley | ml@gmail.com | 2 |
Consulta:
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ;
Instantània de la taula després de:
empNum | nom | cognom | correu electrònic | deptNum |
---|---|---|---|---|
1003 | Margaret | Langley | margaret.langley@gmail.com | 3 |
# 3) Actualització de MySQL amb funció REPLACE
Vegem més informació sobre l’ús de la funció REPLACE per ACTUALITZAR una fila de la taula. Aquí teniu el nostre registre objectiu que volem actualitzar.
El registre següent és per al número d'empleat 1010. Ens orientarem a actualitzar l'identificador de correu electrònic de ja@gmail.com a jacob.armstrong@gmail.com.
Utilitzem la següent consulta UPDATE amb la funció REPLACE que actualitzarà l'identificador de correu electrònic.
Els següents són els paràmetres que es passen a la funció REPLACE. Els 3 paràmetres tenen una naturalesa posicional, és a dir, no es pot alterar l'ordre dels paràmetres.
1cParàmetre: conté el nom de l'identificador de correu electrònic.
2ndParàmetre: conté l'identificador de correu electrònic FROM que s'ha de canviar.
3rdParàmetre: conté l'identificador de correu electrònic TO, que és el valor nou.
A continuació es mostra la instantània de la taula després de l’execució de la sentència UPDATE:
Instantània de la taula abans:
empNum | nom | cognom | correu electrònic | deptNum |
---|---|---|---|---|
1010 | Jacob | Armstrong | ja@gmail.com | 4 |
Consulta:
UPDATE employees SET email = REPLACE(email, “ja@gmail.com”, jacob.armstrong@gmail.com) WHERE empNum = 1010 ;
Instantània de la taula després de:
empNum | nom | cognom | correu electrònic | deptNum |
---|---|---|---|---|
1010 | Jacob | Armstrong | jacob.armstrong@gmail.com | 4 |
# 4) ACTUALITZACIÓ MySQL mitjançant instrucció SELECT
En aquest tipus d’actualització, el nou valor de la columna que s’ha d’actualitzar l’obté una sentència SELECT en una subconsulta. Per tant, prenem un exemple aquí de la taula dels 'empleats'. Aquí teniu el nostre registre objectiu que volem actualitzar.
En aquest cas, actualitzarem el número de departament, és a dir, la columna deptNum, mitjançant les taules de departaments. Si mirem la taula de departaments, el deptNum = 5 correspon a Berlín. Traslladem aquest empleat a Charlotte a deptNum = 2.
Per aconseguir aquesta tasca, s'utilitza la següent instrucció UPDATE:
Per tal de verificar la sortida de la nostra instrucció UPDATE, executem el fitxer SELECCIONA declaració.
Com es mostra més amunt, el valor de la columna deptNum s'ha actualitzat a '2'.
Instantània de la taula abans:
empNum | nom | cognom | correu electrònic | deptNum |
---|---|---|---|---|
1005 | Pere | llegeix | pl@gmail.com | 5 |
deptNum | ciutat | País |
---|---|---|
1 | Nova York | Estats Units |
2 | Charlotte | Estats Units |
3 | Chicago | Estats Units |
4 | Londres | Anglaterra |
5 | Berlín | Alemanya |
6 | Bombai | Índia |
Consulta:
Instantània de la taula després de:
empNum nom cognom correu electrònic deptNum 7 Roma Itàlia NUL 1005 Pere llegeix pl@gmail.com 2
# 5) Actualització de MySQL diverses files
De vegades, és possible que ens enfrontem a un requisit en què hem d’actualitzar una o més columnes per a diverses files amb valors diferents.
Per exemple, volem donar una quantitat particular de bonificació del departament, és a dir, tots els empleats d'un departament haurien d'obtenir una quantitat particular de bonificació.
descàrrega gratuïta del convertidor de youtube a wav
La sintaxi general és la següent:
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END;
Per explicar-ho amb un exemple, podeu afegir una columna més a les taules de departaments. Afegirem la columna 'bonificació' a la taula de departaments. La idea és assignar un percentatge de bonificació a cada departament i augmentar el salari dels empleats en aquest percentatge corresponent a cada departament.
Per aconseguir-ho, executarem les instruccions ALTER següents per afegir una columna:
ALTER TABLE departments ADD COLUMN bonus decimal(5,2);
El següent seria l'estructura de la taula que publica els canvis anteriors. Les noves columnes s'afegiran amb NUL com a valor.

A continuació, escrivim la consulta UPDATE que actualitzarà el percentatge de bonificació de cada departament.

Després de l'execució de la sentència anterior, el següent és la instantània amb els valors actualitzats per a la columna Bonus.

Instantània de la taula abans:
deptNum ciutat País Bonificació 1 Nova York Estats Units NUL 2 Charlotte Estats Units NUL 3 Chicago Estats Units NUL 4 Londres Anglaterra NUL 5 Berlín Alemanya NUL 6 Bombai Índia NUL
Consulta:
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;
Instantània de la taula després de:
deptNum ciutat País Bonificació 7 Roma Itàlia 18 1 Nova York Estats Units 3 2 Charlotte Estats Units 5 3 Chicago Estats Units 8 4 Londres Anglaterra 10 5 Berlín Alemanya 13 6 Bombai Índia 15
# 6) ACTUALITZACIÓ DE MySQL mitjançant la paraula clau INNER JOIN
UNEIX-TE és una de les paraules clau més importants de les sentències SQL. Normalment, és possible que l’hagueu utilitzat a la sentència SELECT
Bàsicament hi ha quatre tipus d’instruccions JOIN:
- COMBINACIÓ INTERNA: Obté els registres que són habituals a les dues taules.
- UNIÓ ESQUERRA: Recupera tots els registres de la taula de la part esquerra de la paraula clau i els registres coincidents de la taula de la part dreta de la paraula clau.
- UNEIX DRET: Recupera tots els registres de la taula de la part dreta de la paraula clau i els registres coincidents de la taula de la part esquerra de la paraula clau.
- UNEIX-TE A L’EXTERIOR Recupera tots els registres de les dues taules, amb els corresponents registres no coincidents representats com a NULS.
MySQL ofereix una oportunitat única d’utilitzar JOIN fins i tot en sentències UPDATE per realitzar actualitzacions de taules creuades. Tot i això, només es limita a INNER JOIN i LEFT JOIN.
La sintaxi genèrica de la sentència UPDATE que utilitza la paraula clau JOIN és la següent:
UPDATE TAB1, TAB2, (INNER JOIN | LEFT JOIN) TAB1 ON TAB1.COL1 = TAB2.COL1 SET TAB1.COL2 = TAB2.COL2, TAB2.COL3 = expr WHERE condition
- Aquí, la sentència UPDATE espera tres dades.
- Noms de taules, TAB1 i TAB2, en els quals s'està realitzant la unió.
- Tipus de JOIN que pretenem realitzar, INTERIOR o ESQUERRA.
- A continuació, segueix l'ordre SET mitjançant el qual podem actualitzar els valors de les columnes a / o TAB1 i TAB2.
- Finalment, una clàusula WHERE per actualitzar només aquelles files que s’ajusten als nostres criteris.
Per explicar-ho amb un exemple, podeu afegir una columna més a la taula Empleats. Afegirem la columna 'salari' a la taula Empleats. La idea és augmentar el salari dels empleats amb un valor percentual de bonificació present a la columna de bonificació de la taula de departaments.
Per aconseguir-ho, executarem les instruccions ALTER següents per afegir una columna:
ALTER TABLE employees ADD COLUMN salarydecimal(7,2);
A continuació, omplirem els dos camps nous que hem afegit. En publicar els valors, a continuació es mostra el contingut de la taula.
Taula d'empleats:
empNum nom cognom correu electrònic deptNum Sou 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 2 8000 1004 Harera Sandra sh@gmail.com 1 10000 1005 llegeix Pere pl@gmail.com 2 13000 1006 Keith Jenny jk@gmail.com 2 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 Copa Harry hb@gmail.com 5 24000 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 27000
Ara, fem servir la paraula clau JOIN i actualitzem el salari de tots els empleats amb un percentatge de bonificació a la taula dels departaments. Aquí, deptNum és la clau en què coincidiran les dues taules.
F a continuació es mostra la instantània dels salaris dels empleats fins ara:

La instantània de la taula de departaments és la següent:

A continuació es mostra la consulta UPDATE que actualitzarà el salari dels empleats en funció del percentatge de bonificació de les taules dels departaments en funció de la columna deptNum key.

Ara, comprovem el salari de cada empleat després de la pujada.

Si el compareu amb la instantània anterior, podreu entendre fàcilment el percentatge de bonificació afegit al salari.
Tots els empleats s’han d’animar!
Instantània de la taula abans:
empNum nom cognom correu electrònic deptNum Sou 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 2 8000 1004 Harera Sandra sh@gmail.com 1 10000 1005 llegeix Pere pl@gmail.com 2 13000 1006 Keith Jenny jk@gmail.com 2 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 Copa Harry hb@gmail.com 5 24000 1010 armstrong Jacob jacob.armstrong@gmail.com 4 27000
deptNum ciutat País Bonificació 7 Roma Itàlia 18 1 Nova York Estats Units 3 2 Charlotte Estats Units 5 3 Chicago Estats Units 8 4 Londres Anglaterra 10 5 Berlín Alemanya 13 6 Bombai Índia 15
Consulta:
UPDATE employees INNER JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * bonus)/100) ;
Instantània de la taula després de:
empNum nom cognom correu electrònic deptNum Sou 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 2 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 llegeix Pere pl@gmail.com 2 14332.5 1006 Keith Jenny jk@gmail.com 2 16537.5 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494.4 1009 Copa Harry hb@gmail.com 5 30645.6 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670
# 7) ACTUALITZACIÓ DE MySQL Utilitzant la paraula clau LEFT JOIN
Com es va explicar a la secció anterior, hi ha dos tipus de JOIN que es permeten a MySQL UPDATE. Ja hem vist ACTUALITZAR amb INNER JOIN.
Comencem per ACTUALITZAR amb LEFT JOIN.
Exemple:
Tenim una nova contractació que encara no s’ha assignat a cap departament. Però hem de donar a tots els nous contractats una bonificació de l’1%. Ara, com que la nova contractació no està assignada a cap departament, no podrem obtenir informació percentual de bonificació d’aquesta taula. En aquest cas, ACTUALITZAREM el sou dels nous contractats mitjançant LEFT JOIN.
Per aconseguir-ho, afegim un nou empleat a la base de dades d’empleats.
INSERT INTO employees(empNum, firstName, lastName, email, deptNum, Salary) VALUES (1011, “Tom”, “Hanks”, th@gmail.com, NULL, 10000.00);
A continuació es mostra el nou registre que hem afegit:

Taula d'empleats:
empNum nom cognom correu electrònic deptNum Sou 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 2 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 llegeix Pere pl@gmail.com 2 14333 1006 Keith Jenny jk@gmail.com 2 16538 1008 Bailey Oliver oliver.bailey@gmail.com 3 24.494 1009 Copa Harry hb@gmail.com 5 30646 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670 1011 Hanks Tom th@gmail.com NUL 10000
A continuació, donarem a Tom una bonificació de l’1% sobre el seu salari mitjançant la declaració UPDATE amb la clàusula LEFT JOIN:

A continuació es mostra el salari de TOM després de la pujada.

Si el compareu amb la instantània anterior, podeu entendre fàcilment el percentatge de bonificació afegit al salari.
Instantània de la taula abans:
empNum nom cognom correu electrònic deptNum Sou 1011 Tom Hanks th@gmail.com NUL 10000
Consulta:
UPDATE employees LEFT JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * 1)/100) WHERE employees.deptNum IS NULL ;
Instantània de la taula després de:
empNum nom cognom correu electrònic deptNum Sou 1011 Tom Hanks th@gmail.com NUL 10100
Lectura recomanada = >> MySQL s'uneix
Preguntes i respostes freqüents
P # 1) Com puc actualitzar els atributs a MySQL?
Resposta: Podem actualitzar els atributs mitjançant la sentència MySQL UPDATE, amb la sentència que comença per la paraula clau UPDATE seguida del nom de la taula. El següent és la clàusula SET seguida d’un nom de columna i una clàusula WHERE.
Q # 2) Com s'actualitzen diversos registres a MySQL?
Resposta: Com es mostra més amunt, sota el fitxer 'Actualitza diverses files' secció, podem actualitzar diverses files per a una o més columnes amb valors iguals o diferents mitjançant la sentència CASE.
P # 3) Podem utilitzar JOIN a la consulta d'actualització a MySQL?
Resposta: Sí, MySQL permet utilitzar JOIN a les instruccions UPDATE. Tot i això, només es restringeix a INNER i LEFT JOIN.
Q # 4) Des d'on descarregar MySQL?
Resposta: Podeu descarregar la versió 8.0 de MySQL des d’aquí: MySQL .
P # 5) Quin és el significat de la clàusula WHERE a la declaració d'actualització?
Resposta: La clàusula WHERE restringeix el nombre de files que han d’adaptar-se als criteris de la clàusula UPDATE.
Lectura suggerida = >> Com utilitzar el fitxer Declaració MySQL If
Conclusió
Així, en aquest tutorial, hem après sobre 7 maneres diferents d’executar sentències MySQL UPDATE.
- Actualitzeu una sola columna
- Actualitzeu diverses columnes
- Actualitzeu mitjançant REPLACE
- Actualitzeu mitjançant SELECT
- Actualitzeu diverses files
- Actualització mitjançant INNER JOIN
- Actualització mitjançant LEFT JOIN
Podem utilitzar qualsevol d’aquestes opcions segons els nostres requisits.
Bona lectura !!
Lectura recomanada
- Diferència entre SQL vs MySQL vs SQL Server (amb exemples)
- Top 40 de les millors preguntes i respostes d’entrevistes de MySQL (preguntes del 2021)
- Actualitzeu i suprimiu el document amb exemples de MongoDB
- C # Ús de la declaració i C # Tutorial de mètode virtual amb exemples
- Tutorial sobre declaracions condicionals de C #
- Tutorial de reflexió de Java amb exemples
- Tutorial de Python DateTime amb exemples
- Tutorial Bugzilla: Tutorial pràctic de l'eina de gestió de defectes