Declaração MySQL UPDATE
A instrução `UPDATE` no MySQL é usada para modificar os registros existentes em uma tabela. Ele permite que você altere um ou mais valores de coluna para linhas que atendam a condições específicas.
Uso
O comando `UPDATE` é usado quando você precisa modificar dados em uma tabela. Normalmente, ela é seguida por uma cláusula `SET` para especificar novos valores e uma cláusula `WHERE` opcional para filtrar quais linhas devem ser atualizadas. Embora a cláusula `WHERE` seja opcional, ela é essencial para atualizar linhas específicas a fim de evitar alterações não intencionais em todas as linhas da tabela.
sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
[WHERE condition];
Nessa sintaxe, `UPDATE table_name` identifica a tabela a ser atualizada, `SET` atribui novos valores às colunas e a cláusula `WHERE` especifica quais linhas devem ser afetadas.
Exemplos
1. Atualização básica
sql
UPDATE employees
SET salary = 50000
WHERE employee_id = 1234;
Este exemplo atualiza a coluna `salary` para 50.000 para o funcionário com um `employee_id` de 1234. Considere o possível impacto no desempenho ao atualizar uma coluna em um grande conjunto de dados.
2. Atualização de várias colunas
sql
UPDATE products
SET price = 19.99, stock = stock - 1
WHERE product_id = 5678;
Essa consulta atualiza as colunas `price` e `stock` do produto com `product_id` 5678, reduzindo o estoque em 1. Certifique-se de que a coluna `product_id` esteja indexada para otimizar o desempenho.
3. Atualizar com uma união
sql
UPDATE orders
JOIN customers ON orders.customer_id = customers.customer_id
SET orders.status = 'shipped'
WHERE customers.country = 'USA';
Nesse exemplo, o comando `UPDATE` modifica a coluna `status` na tabela `orders` para 'shipped' para todos os pedidos associados a clientes dos EUA usando uma união. Observe que o uso de uniões em atualizações pode consumir muitos recursos. Otimize, garantindo que os índices relevantes estejam em vigor.
Dicas e práticas recomendadas
- Sempre use uma cláusula `WHERE`. Sem uma cláusula `WHERE`, todas as linhas da tabela serão atualizadas, o que pode levar a alterações não intencionais.
- Faça backup dos dados antes de grandes atualizações. Sempre faça backup de seus dados antes de executar atualizações grandes ou críticas para evitar a perda de dados.
- Teste as atualizações com uma transação. Use as transações para testar as atualizações em um ambiente controlado antes de aplicá-las aos dados de produção. Por exemplo:
sql START TRANSACTION; UPDATE employees SET salary = 55000 WHERE employee_id = 1234; -- Check the results ROLLBACK; -- or COMMIT; based on your assessment
- Analise os impactos no desempenho. Considere a indexação de colunas usadas na cláusula `WHERE` para melhorar o desempenho das instruções `UPDATE`.
- Seja cauteloso com as junções. Ao usar uniões em uma atualização, verifique novamente as condições para garantir que os dados corretos sejam modificados.
- Use `LIMIT` com `ORDER BY`. Para atualizações em lote, use `LIMIT` em conjunto com `ORDER BY` para gerenciar grandes alterações de dados com mais segurança.
- Teste em um ambiente que não seja de produção. Especialmente quando envolver junções ou condições complexas, teste primeiro as atualizações em um ambiente que não seja de produção.
- Minimize o travamento. Por questões de desempenho, especialmente em tabelas grandes, considere dividir as atualizações grandes em lotes menores e mais gerenciáveis ou usar subconsultas para minimizar o bloqueio.