1. Introdução
O MySQL é usado em muitas aplicações web e na gestão de bancos de dados, e atualizar dados é extremamente importante para as operações diárias e a manutenção de aplicações. Em particular, para sistemas que lidam com grandes volumes de dados ou quando múltiplos registros precisam ser atualizados de uma só vez, é necessário aproveitar a instrução UPDATE do MySQL para operar de forma eficiente.
Este artigo explica detalhadamente como atualizar múltiplos registros e colunas em massa usando a instrução UPDATE do MySQL. Desde o uso simples até atualizações condicionais mais complexas, apresentamos tudo em ordem, tornando‑o um recurso útil para quem deseja executar operações de atualização complexas com o MySQL.
2. Sintaxe Básica das Instruções UPDATE
A instrução UPDATE do MySQL é uma sintaxe para atualizar dados em uma tabela com base em condições específicas. Primeiro, vamos ver a sintaxe básica da instrução UPDATE e como atualizar um único registro ou coluna.
Sintaxe Básica
A sintaxe básica da instrução UPDATE do MySQL é a seguinte.
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
- table_name : Especifica o nome da tabela a ser atualizada.
- SET clause : Especifica as colunas a serem atualizadas e seus novos valores. Ao atualizar várias colunas de uma vez, separe os pares coluna‑valor com vírgulas.
- WHERE clause : Especifica a condição para os registros que serão atualizados. Se você omitir a condição, todos os registros da tabela serão atualizados, portanto tenha cuidado.
Exemplo de Atualização de um Único Registro ou Coluna
Como exemplo de uso básico, veja como atualizar um único registro ou coluna.
UPDATE users
SET name = 'Tanaka'
WHERE id = 1;
Esta instrução SQL atualiza a coluna name do registro com id 1 na tabela users para “Tanaka”. Ao especificar uma cláusula WHERE, você pode atualizar apenas o registro específico.

3. Atualização em Massa de Múltiplos Registros
Ao atualizar múltiplos registros em massa, você pode especificar várias condições na cláusula WHERE. Por exemplo, pode usar cláusulas IN ou OR para definir várias condições e atualizar múltiplos registros de forma eficiente.
Atualizando Múltiplos Registros com a Cláusula IN
Usar a cláusula IN permite atualizar registros que correspondem a uma lista específica de valores.
UPDATE users
SET status = 'active'
WHERE id IN (1, 3, 5, 7);
Nesta instrução SQL, dentro da tabela users, os registros onde id é 1, 3, 5 ou 7 têm sua coluna status atualizada para ‘active’. Utilizar a cláusula IN permite atualizar em massa vários registros que atendem à condição.
Especificando Múltiplas Condições com a Cláusula OR
A cláusula OR permite combinar e especificar várias condições.
UPDATE users
SET status = 'inactive'
WHERE id = 2 OR id = 4 OR id = 6;
Nesta instrução SQL, a coluna status dos registros onde id é 2, 4 ou 6 é atualizada para ‘inactive’. Usar a cláusula OR possibilita atualizar registros que correspondem a múltiplas condições simultaneamente.
4. Atualizando Múltiplas Colunas Simultaneamente
Nas instruções UPDATE do MySQL, você pode atualizar várias colunas ao mesmo tempo. Isso é útil quando é necessário alterar várias informações de uma só vez, mantendo a consistência dos dados.
Exemplo de Atualização de Múltiplas Colunas
Ao atualizar múltiplas colunas simultaneamente, especifique os nomes das colunas e seus valores na cláusula SET, separados por vírgulas.
UPDATE products
SET price = price * 1.1, stock = stock - 1
WHERE id = 10;
Nesta instrução SQL, para o registro na tabela products onde id é 10, a coluna price é aumentada em 10 % e a coluna stock é diminuída em 1. Ao especificar várias colunas na cláusula SET, você pode atualizar eficientemente várias informações.
5. Atualização Condicional Usando Instruções CASE
Nas instruções UPDATE do MySQL, você pode usar expressões CASE para definir valores diferentes com base em condições. Isso permite modificar o conteúdo da atualização de forma flexível de acordo com múltiplas condições, tornando operações de atualização complexas simples de executar.
Sintaxe Básica Usando Expressões CASE
A sintaxe básica para uma instrução UPDATE usando uma expressão CASE é a seguinte.
UPDATE table_name
SET column_name = CASE
WHEN condition1 THEN value1
WHEN condition2 THEN value2
...
ELSE default_value
END
WHERE condition;
- Nome da coluna : Especifica a coluna que você deseja atualizar.
- Condição : Especifique a condição na cláusula WHEN e defina o valor a ser aplicado na cláusula THEN quando houver correspondência.
- Valor padrão : O valor definido quando nenhuma das condições corresponde (opcional).
Exemplo Prático Usando CASE
Aqui, vamos ver um exemplo que atualiza salários na tabela employees com base no cargo.
UPDATE employees
SET salary = CASE
WHEN position = 'Manager' THEN salary * 1.1
WHEN position = 'Developer' THEN salary * 1.05
WHEN position = 'Intern' THEN salary * 1.02
ELSE salary
END;
Nesta instrução SQL, para cada registro na tabela employees, a coluna salary é atualizada de acordo com o valor da coluna position.
Atualização Condicional de Múltiplas Colunas
Expressões CASE também podem ser aplicadas a múltiplas colunas. No exemplo abaixo, as colunas salary e bonus na tabela employees são atualizadas com valores diferentes com base no cargo e nos anos de serviço.
UPDATE employees
SET
salary = CASE
WHEN position = 'Manager' AND years_of_service >= 5 THEN salary * 1.15
WHEN position = 'Developer' AND years_of_service >= 3 THEN salary * 1.1
ELSE salary
END,
bonus = CASE
WHEN position = 'Manager' THEN bonus + 1000
WHEN position = 'Developer' THEN bonus + 500
ELSE bonus
END;
Nesta instrução SQL, salários e bônus são atualizados condicionalmente de uma só vez com base no cargo e nos anos de serviço. Usar expressões CASE permite atualizações flexíveis baseadas em múltiplas condições. 
6. Atualizando Múltiplas Tabelas Usando JOIN
No MySQL, você pode usar uma cláusula JOIN para combinar várias tabelas e atualizar registros com base em condições específicas. Isso permite referenciar dados de diferentes tabelas ao atualizar uma tabela, possibilitando manipulação de dados complexa.
Sintaxe Básica para Instruções UPDATE Usando JOIN
Ao atualizar múltiplas tabelas com JOIN, a sintaxe básica é a seguinte.
UPDATE tableA
JOIN tableB ON tableA.column = tableB.column
SET tableA.updated_column = new_value
WHERE condition;
- Tabela A e Tabela B : Especifique a tabela alvo para a atualização (Tabela A) e a tabela de referência (Tabela B).
- Cláusula ON : Especifique a condição do JOIN e defina em qual coluna as tabelas serão unidas.
- Cláusula SET : Especifique a coluna a ser atualizada e seu novo valor.
- Cláusula WHERE : Especifique a condição de atualização, atualizando apenas os registros correspondentes.
Exemplo Prático Usando JOIN
Por exemplo, vamos ver um exemplo que une a tabela orders com a tabela customers para atualizar o status dos pedidos relacionados a um cliente específico.
UPDATE orders
JOIN customers ON orders.customer_id = customers.id
SET orders.status = 'Shipped'
WHERE customers.vip_status = 'Yes';
Nesta instrução SQL, a coluna status dos registros da tabela orders relacionados a clientes cujo vip_status na tabela customers é “Yes” é atualizada para “Shipped”. Ao usar uma cláusula JOIN, você pode atualizar com base em informações de outras tabelas.
Atualização com JOIN e Múltiplas Condições
Você pode combinar múltiplas condições para especificar critérios mais granulares. No exemplo abaixo, o status dos pedidos relacionados a um cliente específico é alterado em massa com base nas condições.
UPDATE orders
JOIN customers ON orders.customer_id = customers.id
SET orders.status = CASE
WHEN customers.vip_status = 'Yes' THEN 'Priority'
WHEN customers.vip_status = 'No' AND orders.amount > 10000 THEN 'Review'
ELSE orders.status
END
WHERE orders.date >= '2024-01-01';
Aproveitando o JOIN, você pode realizar atualizações de dados flexíveis que se adaptam às condições.
7. Desempenho e Considerações
Ao usar instruções UPDATE do MySQL para modificar várias linhas ou colunas em massa, especialmente com grandes conjuntos de dados, o desempenho deve ser considerado. A seguir, estão os pontos principais e precauções que você deve saber para melhorar o desempenho de atualização e manter a integridade dos dados.
Dicas de Otimização de Desempenho
Aproveitando Índices
Ao atualizar registros com base em condições específicas usando uma cláusula WHERE, adicionar um índice às colunas relevantes melhora a velocidade de pesquisa. Os índices aprimoram o desempenho da consulta, permitindo processamento eficiente mesmo quando a atualização visa um grande volume de dados.
CREATE INDEX idx_customer_id ON orders(customer_id);
No entanto, ter muitos índices pode realmente degradar o desempenho, por isso é recomendado indexar apenas as colunas essenciais.
Reduzindo a Carga com Processamento em Lotes
Atualizar um grande número de linhas de uma vez pode colocar uma carga pesada no servidor de banco de dados e desacelerar os tempos de resposta. Para atualizações massivas, usar processamento em lotes (executando a operação em múltiplas passadas) pode reduzir a carga no servidor.
UPDATE orders
SET status = 'Processed'
WHERE status = 'Pending'
LIMIT 1000;
Ao combinar isso com um script, você pode executar atualizações em lotes repetidamente para modificação de dados eficiente.
Usando Transações
Quando várias instruções UPDATE estão relacionadas ou a integridade dos dados é crítica, usar uma transação garante consistência. Com uma transação, qualquer erro que ocorra durante a atualização pode reverter todas as alterações.
START TRANSACTION;
UPDATE accounts SET balance = balance - 500 WHERE id = 1;
UPDATE accounts SET balance = balance + 500 WHERE id = 2;
COMMIT;
Gerenciamento de Bloqueios
Executar um UPDATE pode causar bloqueios de tabela. Isso é especialmente importante quando múltiplos usuários acessam a mesma tabela simultaneamente. Por exemplo, usar bloqueios em nível de linha permite que outros usuários trabalhem em diferentes linhas simultaneamente, permitindo processamento paralelo. Evitar bloqueios de tabela completa melhora a responsividade do banco de dados. 
8. Resumo
Neste artigo, fornecemos uma explicação detalhada de métodos eficientes para atualizar múltiplos registros e colunas usando a instrução UPDATE do MySQL, cobrindo tudo desde o uso básico até técnicas avançadas. Ao atualizar múltiplos dados no MySQL, você precisa considerar o volume de dados, a velocidade de processamento e a integridade dos dados.
Revisão dos Pontos Principais
- Fundamentos das Instruções UPDATE
- Compreender a sintaxe básica da instrução UPDATE permite que você atualize com segurança colunas ou registros individuais.
- Atualização em Massa de Múltiplos Registros
- Mostramos como atualizar eficientemente múltiplos registros que atendem a condições específicas usando cláusulas WHERE, IN e OR.
- Atualização Simultânea de Múltiplas Colunas
- Ao usar a cláusula SET, você pode atualizar várias colunas dentro do mesmo registro de uma vez, permitindo atualizações eficientes enquanto mantém a consistência dos dados.
- Atualizações Condicionais Usando Instruções CASE
- Aproveitar instruções CASE permite que você execute diferentes atualizações em uma única operação com base em condições, simplificando a lógica de atualização complexa.
- Atualizando Múltiplas Tabelas Usando JOIN
- Ao referenciar dados de outras tabelas enquanto atualiza registros específicos, você pode melhorar a integridade geral do banco de dados.
- Desempenho e Considerações
- Aprendemos como realizar atualizações de dados eficientes e seguras aproveitando índices, processamento em lotes e transações. Além disso, esteja atento ao gerenciamento de bloqueios para otimizar o desempenho do banco de dados.
Conclusão
Atualizar dados eficientemente no MySQL é uma habilidade particularmente importante na administração de bancos de dados. Dominar a instrução UPDATE pode aumentar a eficiência operacional e otimizar o desempenho geral do sistema. Certifique-se de aplicar as técnicas apresentadas neste artigo às suas tarefas e projetos do mundo real.


