SQL: cláusulas UPDATE e DELETE

SQL: cláusulas UPDATE e DELETE
Danielle Oliveira
Danielle Oliveira

Compartilhe

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, que nos permite realizar vários processos nos bancos de dados, como consultar, inserir, alterar e excluir dados das tabelas.

Para alterar e excluir dados de uma tabela, utilizamos duas cláusulas bem importantes da linguagem SQL: a cláusula UPDATE que é responsável por alterar os dados armazenados e a cláusula DELETE que é responsável por remover os dados.

Neste artigo, vamos conhecer a sintaxe básica de cada cláusula e entender quais os riscos e os cuidados necessários ao executar as cláusulas UPDATE e DELETE.

Cláusula UPDATE

Representação da palavra UPDATE disposta em 6 quadrados coloridos, organizados em sequência um ao lado do outro. O U está em um quadrado vermelho, o P no azul, o D no amarelo, o A no laranja, o T no vermelho e o E no verde.

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.

Cláusula DELETE

Ilustração de teclas de um teclado. Está presente na imagem na parte inferior a tecla shift, no centro da imagem a tecla Delete, que está em vermelho com letras brancas e com um pequeno lixeiro com a tampa ao lado esquerdo da palavra. Ao lado esquerdo, a tecla de aspas simples e duplas e na parte superior a tecla de barra e barra invertida.

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 é:

DELETE
FROM nome_da_tabela, 
WHERE condição;

Onde 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 para realizar a atualização ou exclusão de dados de uma tabela de um banco de dados, precisamos tomar alguns cuidados.

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.

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 observar o seguinte exemplo:

Em um banco de dados existe a tabela de clientes e a tabela de vendedores, com os seguintes campos e registros:

IDCPFNOMEENDEREÇOBAIRROCIDADEESTADOCEP
011471156710Érica CarvalhoR. IriquitiaJardinsSão PauloSP80012212
0219290992743Fernando CavalcanteR. Dois de FevereiroAgua SantaRio de JaneiroRJ22000000
032600586709César TeixeiraRua Conde de BonfimTijucaRio de JaneiroRJ22020001
04492472718Eduardo JorgeR. Volta GrandeTijucaRio de JaneiroRJ22012002
0550534475787Abel SilvaRua HumaitáHumaitáRio de JaneiroRJ22000212
065576228758Petra OliveiraR. Benício de AbreuLapaSão PauloSP88192029
075840119709Gabriel AraujoR. Manuel de OliveiraSanto AmaroSão PauloSP80010221

MATRÍCULANOMEBAIRROCOMISSÃODATA ADMISSÃO
235Márcio AlmeidaTijuca0.082014-08-15
236Cláudia MoraisJardins0.082013-09-17
237Roberta MartinsCopacabana0.112017-03-18
238Péricles AlvesSanto Amaro0.112016-08-21

Estas duas tabelas, serão utilizadas em todos os exemplos apresentados durante o artigo.

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:

IDCPFNOMEENDEREÇOBAIRROCIDADEESTADOCEP
011471156710Érica SilvaR. IriquitiaJardinsSão PauloSP80012212
0219290992743Fernando CavalcanteR. Dois de FevereiroAgua SantaRio de JaneiroRJ22000000
032600586709César TeixeiraRua Conde de BonfimTijucaRio de JaneiroRJ22020001
04492472718Eduardo JorgeR. Volta GrandeTijucaRio de JaneiroRJ22012002
0550534475787Abel SilvaRua HumaitáHumaitáRio de JaneiroRJ22000212
065576228758Petra OliveiraR. Benício de AbreuLapaSão PauloSP88192029
075840119709Gabriel AraujoR. Manuel de OliveiraSanto AmaroSão PauloSP80010221

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:

IDCPFNOMEENDEREÇOBAIRROCIDADEESTADOCEP
011471156710Érica SilvaR. IriquitiaJardinsSão PauloSP80012212
0219290992743Fernando SousaR. Dois de FevereiroAgua SantaRio de JaneiroRJ80012212
032600586709César TeixeiraRua Conde de BonfimTijucaRio de JaneiroRJ22020001
04492472718Eduardo JorgeR. Volta GrandeTijucaRio de JaneiroRJ22012002
0550534475787Abel SilvaRua HumaitáHumaitáRio de JaneiroRJ22000212
065576228758Petra OliveiraR. Benício de AbreuLapaSão PauloSP88192029
075840119709Gabriel AraujoR. Manuel de OliveiraSanto AmaroSão PauloSP80010221

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 campoESTADO de todos clientes foram alterados:

IDCPFNOMEENDEREÇOBAIRROCIDADEESTADOCEP
011471156710Érica SilvaR. IriquitiaJardinsSão PauloSP80012212
0219290992743Fernando SousaR. Dois de FevereiroAgua SantaRio de JaneiroSP80012212
032600586709César TeixeiraRua Conde de BonfimTijucaRio de JaneiroSP22020001
04492472718Eduardo JorgeR. Volta GrandeTijucaRio de JaneiroSP22012002
0550534475787Abel SilvaRua HumaitáHumaitáRio de JaneiroSP22000212
065576228758Petra OliveiraR. Benício de AbreuLapaSão PauloSP88192029
075840119709Gabriel AraujoR. Manuel de OliveiraSanto AmaroSão PauloSP80010221

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:

DELETE
FROM 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:

IDCPFNOMEENDEREÇOBAIRROCIDADEESTADOCEP
011471156710Érica SilvaR. IriquitiaJardinsSão PauloSP80012212
0219290992743Fernando SousaR. Dois de FevereiroAgua SantaRio de JaneiroSP80012212
032600586709César TeixeiraRua Conde de BonfimTijucaRio de JaneiroSP22020001
04492472718Eduardo JorgeR. Volta GrandeTijucaRio de JaneiroSP22012002
0550534475787Abel SilvaRua HumaitáHumaitáRio de JaneiroSP22000212
065576228758Petra OliveiraR. Benício de AbreuLapaSão PauloSP88192029

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:

DELETE
FROM Clientes;
CPFNOMEENDEREÇOBAIRROCIDADEESTADOCEP

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.03
WHERE COMISSÃO = (SELECT min(COMISSÃO) FROM VENDEDORES)

O SELECT passado 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ÍCULANOMEBAIRROCOMISSÃODATA ADMISSÃO
235Márcio AlmeidaTijuca0.112014-08-15
236Cláudia MoraisJardins0.112013-09-17
237Roberta MartinsCopacabana0.112017-03-18
238Péricles AlvesSanto Amaro0.112016-08-21

Chave primária

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:


Créditos:

Escrita:

Danielle Oliveira
Danielle Oliveira

Danielle é formada em Sistemas de Informação. Faz parte do Scuba Team e atua nas áreas de Banco de dados, Business Intelligence e NoSQL. É apaixonada por livros, música e tecnologia.

Veja outros artigos sobre Data Science