Update SQL: Um guia completo

Update SQL

O Update no SQL é uma operação que modifica informações existentes em tabelas de bancos de dados. Dessa forma, permitindo atualizar, criar ou excluir registros de acordo com as necessidades do uso, garantindo a atualidade e confiabilidade dos dados.

Neste artigo, vamos explorar os conceitos básicos de Update e apresentar a sua sintaxe para diferentes utilizações. Além disso, discutiremos os tipos de Update, como Update simples e múltiplas, e apresentaremos técnicas e melhores práticas para otimizar consultas e garantir efetividade e eficiência em suas operações no SQL com Update.

Sintaxe Update no SQL

A sintaxe do comando UPDATE em SQL é usada para atualizar registros em uma tabela ou conjunto de dados. O comando tem a seguinte estrutura básica:

UPDATE [tabela_nome]
SET [coluna1] = [valor1], [coluna2] = [valor2], ...
WHERE [condição];

Os elementos do comando UPDATE são:

  1. UPDATE: Faz parte do comando que indica que desejamos atualizar informações em uma tabela.
  2. [tabela_nome]: Este é o nome da tabela que desejamos atualizar. Dessa forma, se estivermos atualizando uma tabela sem especificar um nome, podemos deixar esse espaço em branco.
  3. SET: Utilizamos esse comando para definir as colunas que desejamos atualizar, juntamente com seus respectivos valores.
  4. [coluna1] = [valor1], [coluna2] = [valor2], …: Aqui definimos as colunas que desejamos atualizar, junto com os novos valores que desejamos atribuir a essas colunas. Os valores podem ser expressos como uma string, uma constante, uma variável ou um resultado de uma função.
  5. WHERE: Utilizamos esse comando para especificar uma condição que deve ser verdadeira para que a atualização ocorra. Dessa forma, se formos atualizar todos os registros da tabela, podemos deixar esse espaço em branco.
  6. [condição]: Esta é a condição que deve ser verdadeira para que a atualização ocorra. A condição pode ser uma combinação de colunas e operadores (por exemplo, ‘=’ para igualdade, ‘<>’ para desigualdade, ‘>’, ‘<‘, ‘>=’, ‘<=’ para comparações etc.).

Aqui está um exemplo de comando UPDATE que atualiza o nome de um aluno em uma tabela chamada “alunos”:

UPDATE alunos
SET nome = 'Novo Nome'
WHERE id_aluno = 1;

Neste exemplo, estamos atualizando a coluna “nome” do aluno com o ID “1” para o valor “Novo Nome”. A condição WHERE id_aluno = 1 garante que apenas o aluno com ID 1 será atualizado. Dessa forma, Se estivermos atualizando todos os registros da tabela, podemos deixar a condição em branco.

Tipos Update no SQL

Existem diferentes tipos de Update no SQL, cada uma com sua própria finalidade e uso. Aqui estão alguns dos tipos de atualizações comuns:

Update simples e múltiplas

  • Update simples: Utilizamos o update simples para atualizar um ou mais valores de uma tabela. Dessa forma, usamos a instrução UPDATE seguida do nome da tabela e os campos que deseja atualizar, e depois especificando o valor atualizado para cada campo.

No exemplo, estamos atualizando o primeiro nome e o último nome de todos os clientes da tabela “clients” para “John” e “Doe”, respectivamente. Além disso, estamos atualizando apenas o registro com o ID de cliente 1. Veja:

UPDATE clients
SET first_name = 'John', last_name = 'Doe'
WHERE client_id = 1;
  • Update múltiplo: Utilizamos o update múltiplo para atualizar vários valores de uma tabela ao mesmo tempo. É feita usando a instrução UPDATE seguida do nome da tabela e os campos que deseja atualizar, e depois especificando o valor atualizado para cada campo.

Neste exemplo a baixo, estamos atualizando o nome, endereço e cidade de todos os clientes da tabela “customers” com ID de cliente entre 1 e 5.

UPDATE customers
SET name = 'John Doe', address = '123 Main St', city = 'Anytown'
WHERE customer_id BETWEEN 1 AND 5;

Update afiliadas e independentes

Utilizamos o update de afiliados e independentes para atualizar os dados de um grupo específico de afiliados ou independentes. Dessa forma, utilizamos a instrução UPDATE seguida do nome da tabela e os campos que deseja atualizar, e depois especificando o valor atualizado para cada campo, e depois usando o código WHERE para especificar quais registros deseja atualizar.

No exemplo, estamos atualizando a comissão de todos os afiliados da tabela “affiliates” com ID entre 1 e 5 para 20%. Veja:

UPDATE affiliates
SET commission = 20
WHERE affiliate_id BETWEEN 1 AND 5;

Update de bloco e de grafo

  • Update de bloco: Utilizamos o update de bloco para atualizar um bloco específico de células em uma tabela. Dessa forma, usamos a instrução UPDATE seguida do nome da tabela e os campos que deseja atualizar, e depois especificando o valor atualizado para cada campo e o código WHERE para especificar qual bloco deseja atualizar.

Este exemplo atualiza as colunas nameprice e inventory do registro com id 1 na tabela products. Veja:

UPDATE products
SET name = 'New Product Name', price = 19.99, inventory = 100
WHERE id = 1;
  • Update de grafo: Utilizamos o update de grafo para atualizar um grafo de dados. Assim, usamos a instrução UPDATE seguida do nome da tabela e os campos que deseja atualizar, e depois especificando o valor atualizado para cada campo e o código WHERE para especificar quais registros deseja atualizar.

No exemplo atualizamos as colunas nameprice e inventory para três registros diferentes na tabela products, usando o código WHERE para especificar os registros que devem ser atualizados:

UPDATE products
SET name = 'New Product Name', price = 19.99, inventory = 100
WHERE id = 1;

UPDATE products
SET name = 'New Product Name', price = 19.99, inventory = 100
WHERE id = 2;

UPDATE products
SET name = 'New Product Name', price = 19.99, inventory = 100
WHERE id = 3;

Técnicas e melhores práticas para Update SQL

O UPDATE é uma instrução SQL, utilizamos para atualizar registros em uma tabela. Dessa forma, existem várias técnicas e melhores práticas para utilizar o UPDATE no SQL, que visam garantir a eficiência, a consistência e a segurança dos dados. Aqui estão algumas delas:

  1. Utilize o código WHERE: Utilizamos WHERE para especificar quais registros serão atualizados. Assim, ao utilizar o código WHERE, a quantidade de registros afetados é minimizada, o que pode melhorar o desempenho do query.
  2. Atualize múltiplos campos de uma só vez: Quando precisamos atualizar vários campos de uma tabela, faça um UPDATE com uma única instrução, em vez de executar múltiplas instruções UPDATE separadas.
  3. Use consultas preparadas: Consultas preparadas são uma forma de prevenir ataques de injeção SQL. Dessa forma, também podem melhorar o desempenho do query, pois o IDE do SQL pode otimizar a consulta uma única vez e reutilizar a planilha de execução.
  4. Atualize apenas as colunas necessárias: Evite atualizar colunas que não precisam de Update. Assim, ajudando a reduzir o tempo de execução do query e minimizar a quantidade de dados transferidos.
  5. Utilize o código ORDER BY e LIMIT: Quando precisamos atualizar apenas alguns registros ou os registros em ordem específica, utilize o código ORDER BY e LIMIT em conjunto com o código WHERE.
  6. Teste e avalie o desempenho do query: Teste diferentes combinações do código e parâmetros para encontrar o melhor desempenho para sua atualização. Considere o uso de índices e otimização do motor de SQL para melhorar ainda mais o desempenho.

Recursos avançados de Update SQL

O SQL oferece vários recursos para gerenciar o acesso concorrente  e a atualização de dados em um banco de dados. Alguns desses recursos incluem:

Update com transações

Podemos fazer o Update como parte de uma transação. Assim, garantindo que todas as atualizações estejam consistente e que o banco de dados esteja em um estado consistente após concluirmos a transação.

BEGIN TRANSACTION;
UPDATE customers SET name = 'John Doe' WHERE id = 1;
COMMIT;

Neste exemplo, as atualizações são feitas como parte de uma transação BEGIN TRANSACTION e COMMIT. Portanto, realizando o comando da forma que mostramos, o Update garante que o banco de dados esteja consistente após a transação está concluída.

Locks

Utilizamos os locks para proteger a integridade dos dados e garantir que apenas uma transação possa acessar e atualizar um determinado conjunto de dados a um momento.

SELECT * FROM customers WHERE id = 1 FOR UPDATE;
UPDATE customers SET name = 'John Doe' WHERE id = 1;

Nesse sentido, no exemplo utilizamos o SELECT com a cláusula FOR UPDATE para bloquear o acesso ao registro com id = 1, garantindo que apenas uma transação possa acessar e atualizar esse conjunto de dados a um momento.

Sessões para gerenciamento de acesso concorrente

Aplicamos as sessões nos códigos para garantir que uma transação tenha acesso exclusivo aos dados durante a sua execução, impedindo outras transações de acessar ou modificar os dados durante esse tempo.

BEGIN TRANSACTION;
DECLARE @customer_id INT = 1;
UPDATE customers SET name = 'John Doe' WHERE id = @customer_id;
COMMIT;

Dessa forma, no utilizamos uma sessão para garantir que a transação tenha acesso exclusivo aos dados durante a sua execução, impedindo outras transações de acessar ou modificar os dados durante esse tempo.

Update usando stored procedures e funções

Utilizamos para encapsular a lógica de atualização de dados e garantindo que a execução do comando Update seja consistente e segura. Dessa forma, garantindo a integridade dos dados e a proteger o banco de dados contra erros.

CREATE PROCEDURE UpdateCustomer
@customer_id INT,
@name NVARCHAR(50)
AS
BEGIN
UPDATE customers SET name = @name WHERE id = @customer_id;
END;

EXEC UpdateCustomer @customer_id = 1, @name = 'John Doe';

E por fim, no ultimo exemplo mostrado utilizamos uma stored procedure para encapsular a lógica de atualização de dados. Dessa forma, Isso garante a execução consistente e segura do comando Update e garantindo a integridade dos dados e do banco de dados contra erros.

Exemplos e uso prático de Update SQL

Aqui estão alguns exemplos práticos de instruções UPDATE no SQL, utilizando diferentes características e técnicas:

  • Exemplo 1: Atualizar todos os registros em uma tabela
UPDATE table_name
SET column1 = value1,
    column2 = value2,
    column3 = value3;
  • Exemplo 2: Atualizar registros com um ID específico
UPDATE table_name
SET column1 = value1,
    column2 = value2,
    column3 = value3
WHERE id = specific_id;
  • Exemplo 3: Atualizar múltiplos registros com uma única instrução
UPDATE table_name
SET column1 = value1,
    column2 = value2
WHERE condition1;

UPDATE table_name
SET column3 = value3
WHERE condition2;
  • Exemplo 4: Utilizando consultas preparadas em SQL Server
DECLARE @id INT = 1;
DECLARE @column1 INT = 2;
DECLARE @column2 INT = 3;

UPDATE table_name
SET column1 = column1 + @column1,
    column2 = column2 + @column2
WHERE id = @id;
  • Exemplo 5: Atualizar apenas alguns registros com LIMIT
UPDATE table_name
SET column1 = value1
WHERE condition1
ORDER BY id
LIMIT 5;
UPDATE table_name
SET column1 = value1
WHERE condition1
ORDER BY id
DELETE FROM table_name
WHERE condition2;
  • Exemplo 7: Atualizar múltiplas tabelas relacionadas
UPDATE table_name1
SET column1 = value1
WHERE condition1;

UPDATE table_name2
SET column2 = value2
WHERE table_name1.foreign_key = specific_id;
  • Exemplo 8: Utilizando triggers para garantir a consistência
CREATE TRIGGER trg_after_update_table1
ON table_name1
AFTER UPDATE
AS
BEGIN
  UPDATE table_name2
  SET column2 = updated_value
  WHERE table_name1.foreign_key = specific_id;
END;
  • Exemplo 9: Atualizar arquivos de saída conforme necessário
UPDATE table_name
SET column1 = value1,
    column2 = value2,
    column3 = value3
WHERE condition1
AND NOT EXISTS (SELECT 1 FROM output_table WHERE output_column = value1);
  • Exemplo 10: Atualizar apenas os registros que passam por um procedimento
UPDATE table_name
SET column1 = value1
WHERE condition1
AND EXISTS (SELECT 1 FROM another_table WHERE another_column = table_name.foreign_key);

Dessa forma, esses exemplos demonstram diferentes situações em que utilizamos o UPDATE incluindo atualizações de múltiplos registros, atualizações baseadas em condições e atualizações relacionadas a outras tabelas.

Este artigo foi útil?

Obrigado pela resposta!
Schênia T

Schênia T

Cientista de dados, apaixonada por ferramentas de tecnologia e games. Graduanda em Estatística pela UFPB. Seu hobby é maratonar séries, curtir uma boa música trabalhando ou cozinhando, ir ao cinema e aprender coisas novas!

Contato: schenia.blog@homehost.com.br

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!