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.
Conteúdo
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:
UPDATE
: Faz parte do comando que indica que desejamos atualizar informações em uma tabela.- [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.
SET
: Utilizamos esse comando para definir as colunas que desejamos atualizar, juntamente com seus respectivos valores.- [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.
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.- [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ódigoWHERE
para especificar qual bloco deseja atualizar.
Este exemplo atualiza as colunas name
, price
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ódigoWHERE
para especificar quais registros deseja atualizar.
No exemplo atualizamos as colunas name
, price
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:
- Utilize o código
WHERE
: UtilizamosWHERE
para especificar quais registros serão atualizados. Assim, ao utilizar o códigoWHERE
, a quantidade de registros afetados é minimizada, o que pode melhorar o desempenho do query. - 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çõesUPDATE
separadas. - 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.
- 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.
- 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
eLIMIT
em conjunto com o códigoWHERE
. - 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.