Voltar para a lista de artigos Artigos
7 minutos de leitura

O que é a Declaração UPDATE em SQL?

A instrução SQL UPDATE é usada para atualizar os dados existentes em seu banco de dados. Este artigo explicará sua sintaxe e lhe mostrará exemplos claros da declaração UPDATE em ação.

A atualização efetiva dos dados existentes em um banco de dados é necessária para qualquer pessoa que utilize SQL; os dados só são úteis se forem mantidos atualizados e relevantes.

Neste artigo, examinaremos a sintaxe da declaração UPDATE em grande detalhe. Em seguida, mergulharemos em exemplos detalhados passo a passo que levarão as regras, usos potenciais e limitações associadas com a declaração SQL UPDATE.

O que é a declaração UPDATE?

Em SQL, a instrução UPDATE é usada para modificar ou atualizar registros existentes em uma tabela. Você pode usá-la para atualizar tudo de uma só vez, ou pode especificar um subconjunto de registros para modificar usando a cláusula WHERE.

A declaração UPDATE é considerada um comando de manipulação de dados SQL. Os outros comandos são INSERT e DELETE, que você pode aprender no curso Como INSERT, UPDATE, ou DELETE Dados em SQL a partir de LearnSQL.com.br.

Vamos dar uma olhada na sintaxe do SQL UPDATE.

Sintaxe de SQL UPDATE

A sintaxe da declaração UPDATE é a seguinte:

UPDATE <table>
SET <column1> = <value1>,
        <column2> = <value2>,
        …
[WHERE <conditions>]

Vamos quebrar esta sintaxe.

O nome da tabela segue diretamente após a própria declaração UPDATE: UPDATE <table>.

Você pode especificar as colunas que gostaria de atualizar usando a palavra-chave SET. Observe que ao definir os valores de suas colunas, você deve usar o tipo de dados correto. Vejamos um exemplo de consulta SQL que demonstra isto.

UPDATE employee
SET 	id = 1,
   	first_name = 'John'

Ao definir o valor da coluna id, não são necessárias aspas. Entretanto, ao definir a coluna first_name, você deve passar em um valor de string, ou seja, anexando o texto entre aspas simples.

A última parte da sintaxe é a inclusão opcional da cláusula WHERE. Embora opcional, eu normalmente incluo sempre WHERE em minhas declarações em UPDATE. A não inclusão de uma cláusula WHERE para especificar o registro exato a ser modificado resultará na atualização de cada um dos valores dessa coluna.

Vejamos um exemplo que demonstra isto. Temos duas consultas que são quase idênticas; a diferença é que uma usa WHERE e a outra não:

Query 1 - Without WHEREQuery 2 - With WHERE
UPDATE employee
	SET first_name = 'John'
UPDATE employee
	SET first_name = 'John'
	WHERE id = 1

A consulta 1 atualizará o primeiro nome de cada funcionário para John - você provavelmente não quer que isso aconteça!

A Query 2 atualiza o nome de um funcionário para John: aquela em que o id desse funcionário é igual a 1. É provavelmente o que você espera conseguir.

É uma boa prática usar SELECT para visualizar os registros antes de prosseguir e atualizá-los. Por exemplo, você poderia escrever esta pergunta:

SELECT *
FROM employee
WHERE id = 1

Se o registro devolvido for de fato o registro que você gostaria de modificar, você pode usar a mesma cláusula WHERE para sua declaração em UPDATE. Isto assegura que você não modifique acidentalmente nenhum outro registro.

E isto conclui nosso olhar sobre a sintaxe do SQL UPDATE. Agora é hora de olhar para alguns exemplos práticos que demonstrarão alguns usos diferentes da declaração UPDATE. Também abordaremos algumas questões de permissão que você poderá enfrentar.

Permissões SQL UPDATE

Antes de nosso próximo exemplo, vamos falar sobre as permissões. É importante notar que, dependendo do dialeto SQL que você estiver usando, você pode ter que mudar as permissões para que você possa modificar os registros diretamente com a declaração UPDATE.

Por exemplo, no MySQL você encontrará a mensagem: "Você está usando o modo de atualização segura e tentou atualizar uma tabela sem um ONDE usa uma coluna KEY. Para desativar o modo seguro, alterne a opção em Preferências -> Editor SQL e reconecte".

Para resolver isto, você tem duas opções.

  1. Altere suas configurações:
    1. Vá para Edit →
    2. Clique na aba Editor SQL e desmarque a caixa de seleção Safe Updates
    3. Clique em Query → Reconectar ao Servidor.
    4. Execute sua consulta SQL.
  2. Execute a seguinte consulta:
    SET SQL_SAFE_UPDATES = 0;

Após completar qualquer uma destas opções, você deverá ser capaz de usar a opção UPDATE para modificar os dados da tabela.

Usando a opção UPDATE nas colunas

Imagine que temos uma tabela contendo o nome e a idade dos funcionários de uma empresa. A tabela do banco de dados deve ser atualizada automaticamente pelo sistema de RH conectado - mas ao rever a tabela, você pode ver que algumas das idades estão desatualizadas. Você decide que o melhor curso de ação é usar a instrução SQL UPDATE para atualizar manualmente as idades dos funcionários afetados.

Antes de mais nada, vamos olhar para o employees mesa:

employee_idfirst_namelast_nameage
1JohnSmith23
2MaryConway54
3PaulJohnson33
4SandraCruz28
5JacobWard40
6StaceyTuite65
7ThomasRice43

Você pode ver que cada linha contém um identificador único para o funcionário, juntamente com seus first_name, last_name, e age.

Os funcionários que precisamos atualizar são Paul Johnson e Jacob Ward.

Vamos começar com a atualização da idade desses funcionários:

UPDATE employees
SET age = 34
WHERE employee_id = 3;

Ok, esta consulta deve ser feita. O valor employee_id de 3 corresponde a Paul Johnson. Há apenas uma ocorrência de 3 na coluna employee_id, portanto, esta consulta não atualizará nenhum outro registro. Execute a consulta e use a seguinte consulta SELECT para visualizar os resultados:

SELECT employee_id, first_name, last_name, age
FROM employees
WHERE employee_id = 3;
employee_idfirst_namelast_nameage
3PaulJohnson34

A idade foi atualizada com sucesso!

Para nosso próximo funcionário, vamos atualizar sua idade usando seus first_name e last_name na cláusula WHERE. Desde que não haja dois funcionários com o mesmo nome e sobrenome, isto funcionará como desejamos:

UPDATE employees
SET age = 41
WHERE first_name = 'Jacob' AND last_name = 'Ward'

Isso deve ser suficiente! Execute a consulta e use esta declaração SELECT para visualizar o resultado:

SELECT employee_id, first_name, last_name, age
FROM employees
WHERE first_name = 'Jacob' AND last_name = 'Ward'
employee_idfirst_namelast_nameage
5JacobWard41

É exatamente isso que queríamos! Para mais exemplos como este, veja este artigo sobre como usar as subconsultas com INSERT, UPDATE, e DELETE.

A seguir, vejamos um exemplo mais avançado; atualizaremos uma tabela usando dados de outra tabela.

Atualização de uma tabela com dados de outra tabela

Imagine um cenário em que alguém estava atualizando registros no employees mesa e cometeu um erro! Eles acidentalmente definiram as 5 primeiras fileiras para ter o primeiro nome 'John'. O employees mesa agora se parece com esta:

employee_idfirst_namelast_nameage
1JohnSmith23
2JohnConway54
3JohnJohnson33
4JohnCruz28
5JohnWard40
6StaceyTuite65
7ThomasRice43

Como consertar isso? Felizmente, temos uma tabela de reserva que não foi afetada pelo erro do desenvolvedor. Esta tabela é chamada de employees_backup e assim se parece:

employee_idfirst_namelast_nameage
1JohnSmith23
2MaryConway54
3PaulJohnson34
4SandraCruz28
5JacobWard41
6StaceyTuite65
7ThomasRice43

Vamos escrever uma consulta que atualize os valores incorretos nos funcionários com os valores corretos da tabela de reserva. Quando se atualiza várias linhas, geralmente envolve muito trabalho manual. Esta consulta é projetada para reduzir esse trabalho repetitivo:

SET first_name = (SELECT first_name
                  FROM employees_backup
                  WHERE employees_backup.last_name = employees.last_name)
WHERE employee_id < 6;

Vamos quebrar isso. Você pode ver que a única coluna que queremos modificar é first_name, mas somente onde o employee_id desse registro é inferior a 6. Isto porque o erro do desenvolvedor só afetou os 5 primeiros registros da tabela.

Em seguida, selecionamos os valores da coluna first_name do employees_backup tabela, combinando os funcionários em seu sobrenome. É assim que asseguramos que o primeiro nome correto seja dado a cada funcionário.

Este é um cenário útil a ter em mente; algo semelhante pode ocorrer quando você estiver trabalhando com bancos de dados. Ter uma compreensão sólida da instrução SQL UPDATE permite corrigir erros com facilidade.

Atinja o controle completo sobre seus dados com a atualização do SQL

Isto conclui nosso artigo sobre SQL UPDATE. Cobrimos a sintaxe e as permissões necessárias para usar a declaração UPDATE. Examinamos alguns exemplos práticos - casos simples, bem como cenários mais avançados, como o uso de dados de outra tabela.

Também mencionamos como INSERT é uma das formas de alterar os dados dentro de suas tabelas. Os outros comandos que alteram os dados são INSERT e DELETE. Saiba mais sobre eles neste post de blog sobre INSERT, UPDATE, e DELETE.