SQL UPDATE: atualizando os registros já existentes!

No SQL, o comando SQL UPDATE tem uma das funções mais importantes da linguagem: manter os dados da base atualizados. 

No entanto, por manipular diretamente as informações salvas no banco, usar esse comando pode ser mais complicado. Afinal, se houver um pequeno erro na lógica do comando, podemos acabar inserindo dados errados em nossa tabela.

Por isso, é preciso aprender com cuidado a formular um UPDATE de forma correta, tendo atenção especial sobre a forma que filtramos os dados que queremos atualizar.  Para ajudar nessa questão, neste post vamos explicar:

Aproveite a leitura!

O que é o comando SQL UPDATE?

O comando UPDATE é o comando SQL responsável por atualizar os dados já armazenados em uma tabela do banco. Ele pode ser usado tanto para atualizar um único registro quanto para alterar múltiplas informações de uma vez.

Além disso, ele faz parte do subconjunto SQL denominado como DML (Data Manipulation Language), que agrupa os comandos utilizados para manipular as informações registradas na base de dados.

Qual a sintaxe do comando SQL UPDATE?

A sintaxe do comando UPDATE é bastante simples, observe:

 UPDATE nome_da_tabela
 SET nome_da_coluna1 = valor_da_coluna1, nome_da_coluna2 = valor_da_coluna2
 WHERE condição; 

A princípio, pode parecer um pouco confuso, mas vamos explicar detalhadamente para quê servem cada uma dessas instruções presentes no comando.

Primeiro, é preciso entender o argumento SET. Ele é o responsável por especificar as colunas da tabela que queremos alterar, assim como os novos valores que vamos inserir nas colunas indicadas. É importante lembrar que, ao listar o nome das colunas, devemos sempre separá-los com vírgula.

Após o argumento SET, usamos a cláusula WHERE. Essa cláusula é muito importante para que os dados sejam atualizados sem nenhum erro, pois é com ela que vamos indicar exatamente a linha da tabela que queremos alterar.

Além deles, também podemos utilizar os operadores OR e AND junto com a cláusula WHERE para combinar várias condições e realizar uma filtragem mais apurada na tabela. Nesse caso, a sintaxe do comando seria, por exemplo:

UPDATE nome_da_tabela
SET nome_da_coluna1 = valor_da_coluna1, nome_da_coluna2 = valor_da_coluna2
WHERE condição AND condição;

Como atualizar colunas text, ntext e image?

No Transact-SQL (uma extensão da linguagem SQL implementada pela Microsoft e que é utilizada no SQL Server) existem os tipos de dados text, ntext e image. Para atualizar dados desse tipo, é preciso uma operação um pouco diferente.

Primeiro, precisamos inicializar a coluna e atribuir um ponteiro de texto a ela. Em seguida, é necessário alocar ao menos uma página (que é a unidade fundamental de armazenamento de dados no SQL Server) para guardar os dados. Já para alterar grandes blocos de dados ntext, text e image, devemos usar os comandos UPDATETEXT e WRITETEXT no lugar do comando UPDATE convencional.

No entanto, é importante ressaltar que esse tipos de dados estão obsoletos, portanto é recomendado evitar usá-los e substituí-los pelos tipos varchar (max), nvarchar (max), e varbinary (max).

Como atualizar tipos de dados de valores grandes?

Também no SQL Server usamos a cláusula .WRITE (expression , @Offset , @Length) para fazer uma atualização completa ou parcial para tipos de dados de valores grandes, como varchar (max), nvarchar (max), e varbinary (max).

A sintaxe básica nesse caso seria:

 UPDATE nome_da_tabela 
 SET nome_da_coluna.WRITE (expression, @offset, @length)
 WHERE condição; 

Exemplo de uso do comando SQL UPDATE

Agora que já explicamos como o comando UPDATE funciona, vamos analisar alguns exemplos práticos de código para fixar o conhecimento.

1. Atualizando uma linha da tabela

Para o nosso primeiro exemplo, considere a tabela “estudantes” que mostramos logo abaixo:

idnomematrículacurso
1Marcos Antônio21045Programação
2Maria Gabriela19856Técnico em Informática
3Eduardo Mendes23634Banco de Dados
4Clarisse Nunes22579Programa
5Pedro Alves20025Banco de Dados
6Joaquim Ferreira18154Técnico em Informática
7Marcos Antônio18649Banco de Dados

Imagine que precisamos atualizar o curso da aluna Clarisse Nunes para “Programação”, pois ele foi cadastrado errado e consta na tabela como “Programa”. Para isso, usamos o seguinte comando:

 UPDATE estudantes 
 SET curso = 'Programação' 
 WHERE id = 4;  

Observe que aqui especificamos o nome da tabela que será alterada, no caso “estudantes”. Depois indicamos a coluna “curso” para receber novas informações e, em seguida, definimos o novo valor. Por fim, usando a cláusula WHERE atualizamos apenas uma linha da coluna, pois usamos como filtro a instrução “id = 4”.

Depois da atualização, nossa tabela vai estar assim:

idnomematrículacurso
1Marcos Antônio21045Programação
2Maria Gabriela19856Técnico em Informática
3Eduardo Mendes23634Banco de Dados
4Clarisse Nunes22579Programação
5Pedro Alves20025Banco de Dados
6Joaquim Ferreira18154Técnico em Informática
7Marcos Antônio18649Banco de Dados

2. Atualizando várias linhas da tabela

Agora pense em uma situação em que precisamos alterar o nome do curso “Programação” para “Programação Orientada a Objetos”. No entanto, existem várias linhas da tabela em que esse dado foi cadastrado e seria muito trabalhoso atualizar linha por linha, certo?

Então, na cláusula WHERE dessa vez iremos utilizar um filtro que nos permitirá mudar mais de uma linha com um único comando. Observe:

 UPDATE estudantes 
 SET curso = 'Programação Orientada a Objetos'
 WHERE curso = 'Programação'; 

Após rodar o comando, nossa tabela agora terá os seguintes dados:

idnomematrículacurso
1Marcos Antônio21045Programação Orientada a Objetos
2Maria Gabriela19856Técnico em Informática
3Eduardo Mendes23634Banco de Dados
4Clarisse Nunes22579Programação Orientada a Objetos
5Pedro Alves20025Banco de Dados
6Joaquim Ferreira18154Técnico em Informática
7Marcos Antônio18649Banco de Dados

3. Combinando condições com AND e OR

Como você deve ter reparado, em nossa tabela existem dois estudantes cadastrados com o nome “Marcos Antônio”. Então, imagine que queremos atualizar o nome de um deles, mais precisamente do estudantes que está no curso “Banco de Dados”. Para isso, poderíamos usar o operador AND na cláusula WHERE para fazer a filtragem na tabela. Veja:

 UPDATE estudantes
 SET nome = 'Marcos Antônio Souza'
 WHERE nome = 'Marcos Antônio' AND curso = 'Banco de Dados'; 

Agora nossa tabela está assim:

idnomematrículacurso
1Marcos Antônio21045Programação Orientada a Objetos
2Maria Gabriela19856Técnico em Informática
3Eduardo Mendes23634Banco de Dados
4Clarisse Nunes22579Programação Orientada a Objetos
5Pedro Alves20025Banco de Dados
6Joaquim Ferreira18154Técnico em Informática
7Marcos Antônio Souza18649Banco de Dados

Pensando em outro exemplo fictício, vamos atualizar agora o nome do estudante “Eduardo Mendes”, mas dessa vez faremos a filtragem da busca usando o id ou a matrícula. Nesse caso, o comando SQL ficaria assim:

 UPDATE estudantes
 SET nome = 'Eduardo Mendes Ferreira'
 WHERE matricula = 23634 OR id = 3; 

Como resultado, temos a seguinte tabela de dados:

idnomematrículacurso
1Marcos Antônio21045Programação Orientada a Objetos
2Maria Gabriela19856Técnico em Informática
3Eduardo Mendes Ferreira23634Banco de Dados
4Clarisse Nunes22579Programação Orientada a Objetos
5Pedro Alves20025Banco de Dados
6Joaquim Ferreira18154Técnico em Informática
7Marcos Antônio Souza18649Banco de Dados

Boas práticas com o comando SQL UPDATE

O principal cuidado que precisamos tomar ao utilizar o comando UPDATE é na especificação da cláusula WHERE. Apesar desta cláusula ser opcional e poder ser omitida no código, é recomendado sempre utilizá-la, a não ser em casos específicos em que você realmente precise atualizar todas as linhas da coluna de uma tabela.

Pense no último exemplo em que atualizamos o nome do estudante “Eduardo Mendes” para “Eduardo Mendes Ferreira”. Se naquele comando não tivéssemos usado a cláusula WHERE, agora nossa tabela estaria assim:

idnomematrículacurso
1Eduardo Mendes Ferreira21045Programação Orientada a Objetos
2Eduardo Mendes Ferreira19856Técnico em Informática
3Eduardo Mendes Ferreira23634Banco de Dados
4Eduardo Mendes Ferreira22579Programação Orientada a Objetos
5Eduardo Mendes Ferreira20025Banco de Dados
6Eduardo Mendes Ferreira18154Técnico em Informática
7Eduardo Mendes Ferreira18649Banco de Dados

Certamente, esse não é um resultado desejado, pois o nome de todos os estudantes da tabela foi perdido. Imagine isso acontecendo em um banco de dados gigantesco com milhares de dados armazenados? Seria problemático, não é mesmo?

Por isso, sempre que utilizar o comando UPDATE, é importante pensar cuidadosamente em qual será o filtro usado na cláusula WHERE para evitar inserir erros no banco.

Como foi possível notar, o comando SQL UPDATE é essencial para manter os dados cadastrados no banco atualizados e sem erros. Afinal, ele nos permite alterar informações que foram cadastradas de forma errada ou simplesmente modificá-las para dados mais apropriados. No entanto, é preciso ter cautela ao usar esse comando, para evitar perder dados por modificações indevidas.

Gostou do nosso post? Então, aproveite a visita e descubra o que é MongoDB e como usar um banco de dados NoSQL!