SQL: como usar as cláusulas UPDATE e DELETE para atualizar e deletar dados em tabelas
9 min9 minutos de leitura
9 min9 minutos de leitura
Autor(a)
Danielle Oliveira
Danielle é formada em Sistemas de Informação. Fez parte do Scuba Team. Atualmente é instrutora de Data Science, nas áreas de Banco de dados, Business Intelligence e NoSQL. É apaixonada por livros, música e tecnologia.
Inscreva-se em nossa Newsletter
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
Após a finalização de um projeto de modelagem de dados e a sua implementação, inicia-se o desenvolvimento para a manutenção do banco de dados. Essa manutenção se dá por meio do SGBD (Sistema de Gerenciamento de Banco de Dados), que nos permite realizar vários processos nos bancos de dados, como consultar, inserir, alterar e excluir dados das tabelas.
Para alterar ou excluir dados de uma tabela utilizamos duas cláusulas fundamentais do SQL: `UPDATE`, responsável por modificar informações existentes, e `DELETE`, responsável por remover registros.
Neste artigo, você vai aprender a sintaxe básica de cada cláusula UPDATE e DELETE, seus usos, exemplos práticos e os principais cuidados ao utilizá-las..
Como usar o UPDATE?
Utilizamos a cláusula `UPDATE` para realizar alterações nos dados armazenados em uma tabela do banco de dados. A sintaxe básica do comando utilizado por todos os bancos de dados relacionais é:
UPDATE nome_da_tabela
SET coluna = valor
WHERE condição;
Na cláusula `UPDATE`, informamos o nome da tabela que queremos atualizar, utilizamos o `SET` para indicar os campos da tabela que serão atualizados e no `WHERE` expressamos a condição para a atualização, ou seja, especificamos quais registros devem ser atualizados na tabela.
Como funciona o DELETE para remover registros?
Utilizamos a cláusula `DELETE` para realizar a exclusão de dados de uma ou mais tabelas de um banco de dados. A sintaxe básica do comando utilizado por todos os bancos de dados relacionais é:
DELETEFROM nome_da_tabela
WHERE condição;
Na cláusula `FROM`, informamos o nome da tabela que queremos excluir os dados, e no `WHERE` informamos a condição que especifica quais registros devem ser excluídos da tabela.
Riscos e cuidados ao executar os comandos
É importante ter cautela ao realizar comandos de atualização (UPDATE) ou exclusão (DELETE) em tabelas do banco de dados.
Nesse sentido, um ponto de atenção é sempre informar uma condição ao realizar uma atualização ou exclusão de dados de uma tabela. Quando não informamos essa condição, corremos o risco de que todos os dados da tabela sejam atualizados, ou até mesmo excluídos, ocorrendo assim a perda de dados importantes.
Por que usar a cláusula WHERE?
Para que essa perda de dados em massa não ocorra, utilizamos a cláusula ´WHERE´. Especificamos nesta cláusula os critérios que os dados armazenados em uma tabela devem cumprir para que os registros que contêm esses parâmetros sejam incluídos nos resultados da consulta.
Para aplicarmos na prática a utilização das cláusulas `DELETE` e 'UPDATE'. Vamos ver, na prática, o seguinte exemplo:
Em um banco de dados existe a tabela de clientes e a tabela de vendedores, com os seguintes campos e registros:
ID
CPF
NOME
ENDEREÇO
BAIRRO
CIDADE
ESTADO
CEP
01
1471156710
Érica Carvalho
R. Iriquitia
Jardins
São Paulo
SP
80012212
02
19290992743
Fernando Cavalcante
R. Dois de Fevereiro
Agua Santa
Rio de Janeiro
RJ
22000000
03
2600586709
César Teixeira
Rua Conde de Bonfim
Tijuca
Rio de Janeiro
RJ
22020001
04
492472718
Eduardo Jorge
R. Volta Grande
Tijuca
Rio de Janeiro
RJ
22012002
05
50534475787
Abel Silva
Rua Humaitá
Humaitá
Rio de Janeiro
RJ
22000212
06
5576228758
Petra Oliveira
R. Benício de Abreu
Lapa
São Paulo
SP
88192029
07
5840119709
Gabriel Araujo
R. Manuel de Oliveira
Santo Amaro
São Paulo
SP
80010221
MATRÍCULA
NOME
BAIRRO
COMISSÃO
DATA ADMISSÃO
235
Márcio Almeida
Tijuca
0.08
2014-08-15
236
Cláudia Morais
Jardins
0.08
2013-09-17
237
Roberta Martins
Copacabana
0.11
2017-03-18
238
Péricles Alves
Santo Amaro
0.11
2016-08-21
Exemplos de UPDATE Com WHERE
Tendo então a tabela de clientes acima como nosso exemplo, precisamos atualizar as informações da cliente que possui o CPF `147115670´ e está na primeira linha da nossa tabela, para isso vamos utilizar a seguinte consulta:
UPDATE CLIENTES
SET nome ='Érica Silvia'WHERE CPF ='1471156710';
Ao executar este comando apenas a cliente que possui o CPF `147115670´, terá os seus dados alterados:
ID
CPF
NOME
ENDEREÇO
BAIRRO
CIDADE
ESTADO
CEP
01
1471156710
Érica Silva
R. Iriquitia
Jardins
São Paulo
SP
80012212
02
19290992743
Fernando Cavalcante
R. Dois de Fevereiro
Agua Santa
Rio de Janeiro
RJ
22000000
03
2600586709
César Teixeira
Rua Conde de Bonfim
Tijuca
Rio de Janeiro
RJ
22020001
04
492472718
Eduardo Jorge
R. Volta Grande
Tijuca
Rio de Janeiro
RJ
22012002
05
50534475787
Abel Silva
Rua Humaitá
Humaitá
Rio de Janeiro
RJ
22000212
06
5576228758
Petra Oliveira
R. Benício de Abreu
Lapa
São Paulo
SP
88192029
07
5840119709
Gabriel Araujo
R. Manuel de Oliveira
Santo Amaro
São Paulo
SP
80010221
Para atualizar mais de um campo ao mesmo tempo, podemos utilizar a seguinte consulta:
UPDATE CLIENTES
SET NOME ='Fernando Sousa',CEP ='80012212'WHERE CPF ='19290992743';
Assim, apenas as informações de nome e CEP do segundo cliente que possui o CPF `19290992743` será atualizado:
ID
CPF
NOME
ENDEREÇO
BAIRRO
CIDADE
ESTADO
CEP
01
1471156710
Érica Silva
R. Iriquitia
Jardins
São Paulo
SP
80012212
02
19290992743
Fernando Sousa
R. Dois de Fevereiro
Agua Santa
Rio de Janeiro
RJ
80012212
03
2600586709
César Teixeira
Rua Conde de Bonfim
Tijuca
Rio de Janeiro
RJ
22020001
04
492472718
Eduardo Jorge
R. Volta Grande
Tijuca
Rio de Janeiro
RJ
22012002
05
50534475787
Abel Silva
Rua Humaitá
Humaitá
Rio de Janeiro
RJ
22000212
06
5576228758
Petra Oliveira
R. Benício de Abreu
Lapa
São Paulo
SP
88192029
07
5840119709
Gabriel Araujo
R. Manuel de Oliveira
Santo Amaro
São Paulo
SP
80010221
O que acontece ao executar o UPDATE sem WHERE?
Precisamos agora alterar os dados de um outro registro armazenado na nossa tabela de clientes:
UPDATE Clientes
SET ESTADO ='SP';
Como a cláusula `WHERE` não foi utilizada, informando o registro que deveria ser atualizado, o valor do campo ESTADO de todos clientes foram alterados:
ID
CPF
NOME
ENDEREÇO
BAIRRO
CIDADE
ESTADO
CEP
01
1471156710
Érica Silva
R. Iriquitia
Jardins
São Paulo
SP
80012212
02
19290992743
Fernando Sousa
R. Dois de Fevereiro
Agua Santa
Rio de Janeiro
SP
80012212
03
2600586709
César Teixeira
Rua Conde de Bonfim
Tijuca
Rio de Janeiro
SP
22020001
04
492472718
Eduardo Jorge
R. Volta Grande
Tijuca
Rio de Janeiro
SP
22012002
05
50534475787
Abel Silva
Rua Humaitá
Humaitá
Rio de Janeiro
SP
22000212
06
5576228758
Petra Oliveira
R. Benício de Abreu
Lapa
São Paulo
SP
88192029
07
5840119709
Gabriel Araujo
R. Manuel de Oliveira
Santo Amaro
São Paulo
SP
80010221
Usando o DELETE Com WHERE
Um dos clientes, solicitou que as suas informações fossem removidas do banco de dados. Para realizar esta exclusão, vamos utilizar a seguinte consulta:
DELETEFROM Clientes
WHERE CPF ='5840119709';
Ao executar este comando apenas o cliente Gabriel Araujo que estava localizado na ultima linha da tabela de clientes, foi excluído:
ID
CPF
NOME
ENDEREÇO
BAIRRO
CIDADE
ESTADO
CEP
01
1471156710
Érica Silva
R. Iriquitia
Jardins
São Paulo
SP
80012212
02
19290992743
Fernando Sousa
R. Dois de Fevereiro
Agua Santa
Rio de Janeiro
SP
80012212
03
2600586709
César Teixeira
Rua Conde de Bonfim
Tijuca
Rio de Janeiro
SP
22020001
04
492472718
Eduardo Jorge
R. Volta Grande
Tijuca
Rio de Janeiro
SP
22012002
05
50534475787
Abel Silva
Rua Humaitá
Humaitá
Rio de Janeiro
SP
22000212
06
5576228758
Petra Oliveira
R. Benício de Abreu
Lapa
São Paulo
SP
88192029
O que acontece ao executar o DELETE sem WHERE?
Pensando que se a cláusula `WHERE` não fosse utilizada ao executar um comando `DELETE` para remover algum registro, teríamos como resultado a exclusão de todos os dados armazenados na tabela, ou seja, perdendo os dados de todos os clientes:
DELETEFROM Clientes;
Atualizar utilizando como condição outras tabelas
Podemos informar na cláusula `WHERE ` como condição para realizar atualização ou exclusão dos dados, outra consulta, que pode ser utilizada para buscar informações armazenadas na própria tabela ou em outras tabelas:
Sendo assim, vamos analisar o exemplo abaixo:
UPDATE VENDEDORES
SET COMISSÃO = COMISSÃO +0.03WHERE COMISSÃO = (SELECTmin(COMISSÃO) FROM VENDEDORES)
O `SELECT` utilizado na cláusula `WHERE`, retornará apenas o valor da menor comissão armazenada na tabela. Dessa forma, apenas os vendedores que possuem o valor da comissão igual ao valor retornado neste `SELECT` terão os seus dados alterados e o valor da sua comissão aumentará:
MATRÍCULA
NOME
BAIRRO
COMISSÃO
DATA ADMISSÃO
235
Márcio Almeida
Tijuca
0.11
2014-08-15
236
Cláudia Morais
Jardins
0.11
2013-09-17
237
Roberta Martins
Copacabana
0.11
2017-03-18
238
Péricles Alves
Santo Amaro
0.11
2016-08-21
Como a chave primária garante segurança ao atualizar e deletar dados em SQL?
Uma outra forma de garantir que apenas os dados desejados sofram alterações é a criação de uma chave primária na tabela.
A chave primária, ou Primary key (PK) é o dado que pode ser utilizado como um identificador único de um registro em uma tabela no banco de dados.
Se definirmos que o campo `CPF` será a chave primária da tabela de clientes, estamos definindo que este campo receberá apenas valores únicos. Ao utilizarmos este campo como uma condição no momento de executar uma consulta com as cláusulas `DELETE` ou `UPDATE`, garantimos que apenas o registro que possui aquele dado será alterado.
Conclusão
Como estudamos neste artigo, as cláusulas `DELETE` e `UPDATE` são muito importantes na manipulação de um banco de dados, pois, através delas, conseguimos atualizar ou excluir dados de uma tabela.
Também entendemos os riscos que corremos ao utilizar estas cláusulas e como podemos evitar que, ao executar comandos de modo não recomendado, ocorram perdas de dados em massa em um banco de dados.
Portanto, podemos utilizar estas cláusulas em diversas consultas, assim como utilizar outros recursos disponibilizados pela linguagem SQL para garantir que não haja perda de dados.
Você gostaria de conhecer outros recursos da linguagem SQL?
Então, vem estudar com a gente nas nossas formações de SQL e bancos de dados: