A consulta UPDATE no MySQL é uma instrução DML usada para modificar os dados de uma tabela. A consulta UPDATE deve exigir as cláusulas SET e WHERE. A cláusula SET é usada para alterar os valores da coluna especificada na cláusula WHERE.
A cláusula JOIN no MySQL é usada na instrução para recuperar dados juntando várias tabelas em uma única consulta.
O UPDATE JOIN é uma instrução MySQL usada para realizar atualizações entre tabelas, o que significa que podemos atualizar uma tabela usando outra tabela com a condição da cláusula JOIN . Esta consulta atualiza e altera os dados onde mais de uma tabela é unida com base em PRIMÁRIO Chave e ESTRANGEIRO Chave e uma condição de junção especificada. Podemos atualizar uma ou várias colunas de cada vez usando o Consulta ATUALIZAR .
NOTA: A instrução MySQL UPDATE JOIN é suportada na versão 4.0 ou superior.
Sintaxe
A seguir está uma sintaxe básica da instrução UPDATE JOIN para modificar o registro na tabela MySQL:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
Na sintaxe UPDATE JOIN do MySQL acima:
Primeiro, especificamos as duas tabelas: a tabela principal (Tab1) e outra tabela (tab2) após a cláusula UPDATE. Após a cláusula UPDATE, é necessário especificar pelo menos uma tabela. A seguir, especificamos os tipos de Cláusulas JOIN , ou seja, INNER JOIN ou ASSOCIAÇÃO À ESQUERDA , que aparece logo após a cláusula UPDATE e, em seguida, um predicado de junção especificado após a palavra-chave ON. Em seguida, temos que atribuir os novos valores às colunas da Tab1 e/ou Tab2 para modificação na tabela. Finalmente, a condição da cláusula WHERE é usada para limitar linhas para atualização.
Como funciona UPDATE JOIN no MySQL?
O processo de trabalho UPDATE JOIN em MySQL é o mesmo descrito na sintaxe acima. Mas, às vezes, descobriríamos que essa consulta sozinha executava a atualização entre tabelas, sem envolver nenhuma junção. A sintaxe a seguir é outra maneira de atualizar uma tabela usando outra tabela :
chave exclusiva do mysql
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
A instrução UPDATE acima produz o mesmo resultado que UPDATE JOIN com cláusulas INNER JOIN ou LEFT JOIN. Isso significa que podemos reescrever a sintaxe acima como a sintaxe UPDATE JOIN exibida acima:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Vamos dar alguns exemplos para entender como funciona a instrução UPDATE JOIN na tabela MySQL.
Exemplos de UPDATE JOIN
Primeiro, criaremos duas tabelas chamadas Desempenho e Funcionário , e ambas as tabelas estão relacionadas por meio de uma chave estrangeira. Aqui, a 'Performance' é uma tabela pai , e 'Funcionários' é o criança mesa . Os scripts a seguir criam ambas as tabelas junto com seus registros.
Tabela: Desempenho
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
A seguir, preencha os registros da tabela usando a instrução INSERT.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Em seguida, execute a consulta SELECT para verificar os dados conforme mostrado na imagem abaixo:
Tabela: Funcionários
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 seguir, preencha os registros da tabela usando a instrução 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);
Em seguida, execute a consulta SELECT para verificar os dados conforme mostrado na imagem abaixo:
Exemplo de UPDATE JOIN com INNER JOIN
Suponha que queiramos atualizar o salário do funcionário com base no seu desempenho . Podemos atualizar o salário de um funcionário na tabela Employees usando a instrução UPDATE INNER JOIN porque o desempenho percentagem é armazenado na tabela de desempenho.
Nas tabelas acima, temos que usar o desempenho campo para ingressar na tabela Funcionários e Desempenho. Veja a consulta abaixo:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Após executar a instrução acima, obteremos a saída abaixo, onde podemos ver que a coluna salarial do funcionário foi atualizada com sucesso.
Vamos entender como essa consulta funciona no MySQL. Na consulta, especificamos apenas a tabela Employees após a cláusula UPDATE. É porque queremos alterar o registro apenas na tabela Funcionários, e não nas duas tabelas.
A consulta verifica os valores da coluna de desempenho para cada linha na tabela 'Funcionários' em relação à coluna de desempenho da tabela 'Desempenho'. Se obtiver a coluna de desempenho correspondente, ele pegará a porcentagem na tabela Desempenho e atualizará a coluna salário da tabela Funcionários. Esta consulta atualiza todos os registros na tabela Employees porque não especificamos a cláusula WHERE na consulta UPDATE JOIN.
Exemplo de UPDATE JOIN com LEFT JOIN
Para entender UPDATE JOIN com LEFT JOIN, primeiro precisamos inserir duas novas linhas na tabela Employees:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Como esses funcionários são novos contratados, seu histórico de desempenho não está disponível. Veja a saída abaixo:
Se quisermos atualizar o salário dos funcionários recém-contratados , não podemos usar a consulta UPDATE INNER JOIN. Isso se deve à indisponibilidade de seus dados de desempenho na tabela Desempenho. Assim, usaremos a instrução UPDATE LEFT JOIN para atender a essa necessidade.
A instrução UPDATE LEFT JOIN no MySQL é usada para atualizar uma linha em uma tabela quando não há registros encontrados na linha correspondente de outra tabela.
Por exemplo , se quisermos aumentar o salário de um funcionário recém-contratado em 2,5%, podemos fazer isso com a ajuda da seguinte afirmação:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Após executar a consulta acima, obteremos o resultado conforme imagem abaixo onde podemos observar que o salário dos funcionários recém-contratados foi atualizado com sucesso.
Neste artigo, aprendemos a instrução MySQL Update Join que nos permite alterar os dados existentes em uma tabela com os novos dados de outra tabela com a condição da cláusula JOIN. Esta consulta é vantajosa quando precisamos modificar certas colunas especificadas na cláusula WHERE junto com o uso das cláusulas INNER JOIN ou LEFT JOIN.