logo

ACTUALITZACIÓ MySQL ÚNETE

La consulta UPDATE a MySQL és una instrucció DML que s'utilitza per modificar les dades d'una taula. La consulta UPDATE ha de requerir les clàusules SET i WHERE. La clàusula SET s'utilitza per canviar els valors de la columna especificada a la clàusula WHERE.

La clàusula JOIN a MySQL s'utilitza a la instrucció per recuperar dades unint diverses taules dins d'una sola consulta.

L'UPDATE JOIN és una instrucció de MySQL que s'utilitza per realitzar actualitzacions entre taules que significa que podem actualitzar una taula utilitzant una altra taula amb la condició de la clàusula JOIN . Aquesta consulta actualitza i altera les dades en què s'uneixen més d'una taules en funció de PRIMÀRIA clau i ESTRANGER Clau i condició d'unió especificada. Podem actualitzar columnes individuals o múltiples alhora mitjançant el Consulta d'ACTUALITZACIÓ .

NOTA: La instrucció MySQL UPDATE JOIN és compatible amb la versió 4.0 o superior.

Sintaxi

A continuació es mostra una sintaxi bàsica de la instrucció UPDATE JOIN per modificar el registre a la taula MySQL:

 UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition; 

A la sintaxi anterior de MySQL UPDATE JOIN:

En primer lloc, hem especificat les dues taules: la taula principal (Tab1) i una altra taula (tab2) després de la clàusula UPDATE. Després de la clàusula UPDATE, cal especificar almenys una taula. A continuació, hem especificat els tipus de clàusules JOIN , és a dir, INNER JOIN o bé UNIR-SE A L'ESQUERRA , que apareixen just després de la clàusula UPDATE i després un predicat d'unió especificat després de la paraula clau ON. Aleshores, hem d'assignar els nous valors a les columnes de Tab1 i/o Tab2 per modificar-los a la taula. Finalment, la condició de la clàusula WHERE s'utilitza per limitar les files per a l'actualització.

Com funciona UPDATE JOIN a MySQL?

El procés de treball UPDATE JOIN a MySQL és el mateix que es descriu a la sintaxi anterior. Però de vegades, ens trobaríem que aquesta consulta sola realitzava l'actualització de taules creuades sense implicar cap unió. La sintaxi següent és una altra manera d'actualitzar una taula utilitzant una altra taula :

comandament superior unix
 UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition; 

La instrucció UPDATE anterior produeix el mateix resultat que l'UPDATE JOIN amb una clàusula INNER JOIN o LEFT JOIN. Significa que podem tornar a escriure la sintaxi anterior com a sintaxi UPDATE JOIN que es mostra a dalt:

 UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition 

Prenguem alguns exemples per entendre com funciona la instrucció UPDATE JOIN a la taula MySQL.

Exemples d'ACTUALITZACIÓ JOIN

Primer, crearem dues taules anomenades Rendiment i Empleat , i ambdues taules estan relacionades mitjançant una clau estrangera. Aquí, el 'Rendiment' és a taula dels pares , i 'Empleats' és el nen taula . Els scripts següents creen ambdues taules juntament amb els seus registres.

Taula: Rendiment

 CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) ); 

A continuació, ompliu els registres de la taula amb la instrucció INSERT.

 INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08); 

A continuació, executeu la consulta SELECT per verificar les dades tal com es mostra a la imatge següent:

Unir-se a l'actualització de MySQL

Taula: Empleats

 CREATE TABLE Employees ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, performance INT(11) DEFAULT NULL, salary FLOAT DEFAULT NULL, CONSTRAINT fk_performance FOREIGN KEY (performance) REFERENCES Performance (performance) ); 

A continuació, ompliu els registres de la taula amb la instrucció INSERT.

 INSERT INTO Employees (name, performance, salary) VALUES('Mary', 101, 55000), ('John', 103, 65000), ('Suzi', 104, 85000), ('Gracia', 105, 110000), ('Nancy Johnson', 103, 95000), ('Joseph', 102, 45000), ('Donald', 103, 50000); 

A continuació, executeu la consulta SELECT per verificar les dades tal com es mostra a la imatge següent:

Unir-se a l'actualització de MySQL

ACTUALITZA JOIN amb INNER JOIN Exemple

Suposem que volem actualitzar el salari dels treballadors en funció del seu rendiment . Podem actualitzar el sou d'un empleat a la taula Empleats mitjançant la instrucció UPDATE INNER JOIN perquè el rendiment percentatge s'emmagatzema a la taula de rendiment.

A les taules anteriors, hem d'utilitzar rendiment camp per unir-se a la taula Empleats i rendiment. Vegeu la consulta següent:

 UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage; 

Després d'executar la declaració anterior, obtindrem la sortida següent, on podem veure que la columna salarial de l'empleat s'ha actualitzat correctament.

Unir-se a l'actualització de MySQL

Entendrem com funciona aquesta consulta a MySQL. A la consulta, només hem especificat la taula Empleats després de la clàusula UPDATE. És perquè volem canviar el registre només a la taula Empleats, no a les dues taules.

La consulta comprova els valors de la columna de rendiment per a cada fila de la taula 'Empleats' amb la columna de rendiment de la taula 'Rendiment'. Si obtindrà la columna de rendiment coincident, agafarà el percentatge de la taula de rendiment i actualitzarà la columna de salaris de la taula d'empleats. Aquesta consulta actualitza tots els registres de la taula Empleats perquè no hem especificat la clàusula WHERE a la consulta UPDATE JOIN.

ACTUALITZA LA UNIR-SE amb LEFT JOIN Exemple

Per entendre l'UPDATE JOIN amb LEFT JOIN, primer hem d'inserir dues files noves a la taula Empleats:

 INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000); 

Com que aquests empleats són nous contractats, el seu registre de rendiment no està disponible. Vegeu la sortida següent:

Unir-se a l'actualització de MySQL

Si volem actualitzar el sou dels treballadors de nova contractació , no podem utilitzar la consulta UPDATE INNER JOIN. Es deu a la indisponibilitat de les seves dades de rendiment a la taula de rendiment. Per tant, utilitzarem la instrucció UPDATE LEFT JOIN per satisfer aquesta necessitat.

La instrucció UPDATE LEFT JOIN a MySQL s'utilitza per actualitzar una fila d'una taula quan no es troben registres a la fila corresponent d'una altra taula.

Per exemple , si volem augmentar el sou d'un nou treballador contractat en un 2,5%, ho podem fer amb l'ajuda de la següent declaració:

 UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL; 

Després d'executar la consulta anterior, obtindrem la sortida com a imatge següent on podem veure que el sou dels empleats recentment contractats s'ha actualitzat correctament.

Unir-se a l'actualització de MySQL

En aquest article, hem après la instrucció MySQL Update Join que ens permet alterar les dades existents en una taula amb les dades noves d'una altra taula amb la condició de la clàusula JOIN. Aquesta consulta és avantatjosa quan necessitem modificar determinades columnes especificades a la clàusula WHERE juntament amb l'ús de les clàusules INNER JOIN o LEFT JOIN.