Voltar para a lista de artigos Artigos
10 minutos de leitura

SQL INSERT, SQL UPDATE, SQL DELETE - O quê?!

Quer aprender SQL INSERT, UPDATE ou DELETE? Ensinaremos tudo o que você precisa saber com exemplos úteis!

SQL INSERT, UPDATE, ou DELETE

O que são e o que fazem as instruções do SQL INSERT, UPDATE e DELETE? Se você é um engenheiro de dados, um administrador de banco de dados ou apenas um entusiasta da área, um dia você encontrará um banco de dados que se tornará o seu "bebê". Ao cuidar desse pacotinho, você precisará alimentá-lo e limpá-lo. Sim, ainda estamos falando sobre um banco de dados! INSERT, UPDATE e DELETE são funções do SQL que ajudam a garantir que seus dados se mantenham atualizados e livres de informações desnecessárias ou desatualizadas.

Assim como SELECT e MERGE, INSERT, UPDATE e DELETE são conhecidas como instruções da Data Manipulation Language (DML), que permitem aos usuários SQL visualizar e gerenciar dados. Embora os dados sejam frequentemente atualizados pela própria aplicação, eles podem requerer uma entrada ou manutenção manuais, o que exige não apenas que você saiba os principais conceitos Básicos de SQL (este artigo pressupõe que você já tem este conhecimento básico - confira o nosso curso SQL para Iniciantes e os vários artigos SQL, caso ainda não o tenha feito), como também saiba como utilizar INSERT, UPDATE e DELETE em SQL.

Este artigo fornece noções básicas sobre as funções SQL INSERT, SQL UPDATE e SQL DELETE, mas se você quiser um tutorial mais abrangente, confira nosso curso Como Utilizar os Comandos INSERT, UPDATE e DELETE em SQL . Ele tem tudo o que você precisa para fazer declarações DML sem passar sufoco.

Hospital Infantil Mickey Mouse - Um estudo de caso de banco de dados

Vamos examinar este trio SQL um por um e entender como cada um deles funciona.

Usaremos um banco de dados fictício para demonstrar cada um deles. Continuando com o tema de bebês, imagine que você é o administrador de dados de um hospital infantil, o "Hospital Infantil Mickey Mouse". O hospital mantém registros de todos os seus mini-pacientes, incluindo informações como idade, peso, resultados de exames de sangue, e tudo mais.

Normalmente, os médicos inserem e atualizam estas informações no sistema do hospital cada vez que encontram seus pacientes, e grande parte da entrada, atualização e exclusão de registros no banco de dados é realizada pelo sistema. No entanto, muitas vezes as informações precisam ser corrigidas manualmente e, como administrador do banco de dados do hospital, é aí que você entra!

No artigo abaixo, usamos três tabelas diferentes para demonstrar os três comandos.

A primeira tabela mostra os registros de pacientes e suas informações básicas:

Tabela de pacientes

ID_PacienteSobrenomeNomeDataNascimentoSexoPesoAlturaVacinado
15223SilvaDenis31/12/2018F21.429.2S
15224AgarwalArjun29/08/2017M28.134.2S
15225AdamsPoppy14/02/2015F34.039.2N
15226JohnsonTierra15/08/2019F14.624.5S
15227KhouriMohammed30/03/2014M41.544.1S
15228JonesBen04/04/2011M70.152.2S
15229KowalczykAlexandra27/08/2019F15.223.9S

A segunda tabela contém os diferentes departamentos do hospital e os grupos e categorias em que esses departamentos se enquadram:

Tabela de departamentos

IdDepartamentoNomeDepartamentoNomeGrupoNomeCategoria
1CardiologiaCentro do CoraçãoClínica
2UTI CentralEmergênciaClínica
3EmergênciaEmergênciaClínica
4ComunicaçãoAdministraçãoOperacional
5OncologiaMedicina InternaClínica
6NeurologiaMedicina InternaClínica
7Recursos HumanosAdministraçãoOperacional
8PatologiaServiçosTécnico
9RadiologiaServiçosTécnico
10FarmáciaServiçosTécnico
11Comitê ExecutivoAdministraçãoOperacional
12UrologiaCirurgiaClínica
13HematologiaMedicina InternaClínica
14Ala MontanaAlaOperacional
15Ala ChicagoAlaOperacional
16Ala LincolnAlaOperacional
17Ala YellowstoneAlaOperacional
18Ala BrooklynAlaOperacional

A terceira tabela registra quando os pacientes deram entrada no hospital ao longo dos anos:

Tabela de Entradas

ID_PacienteUltimaEntradaUltimaAlta
3329/12/195205/01/1953
34--
3501/08/200404/08/2004
3628/07/201130/07/2011
3727/05/195030/05/1950
38--
3911/10/197020/10/1970

Com estas tabelas, vamos nos aprofundar sobre o uso de INSERT, UPDATE e DELETE.

Inserir (INSERT) dados usando SQL

Assim como os bebês, novos dados nascem a cada minuto. Com tantos sistemas inteligentes disponíveis, muitas vezes esses dados são adicionados sem problemas aos seus respectivos bancos de dados. Em muitos casos, porém, é necessário adicioná-los manualmente, e é aí que entra a declaração INSERT em SQL.

INSERT é utilizado para adicionar uma ou várias linhas a uma tabela, além de também servir para adicionar linhas de uma tabela em outra tabela.

Vejamos a estrutura básica de uma declaração INSERT em SQL:

INSERT INTO NomeTabela
(coluna1, coluna2, ...)
VALUES (valor1, valor2, ...)

Primeiro, precisamos identificar a tabela na qual queremos inserir as linhas. Em seguida, especificamos as colunas que desejamos preencher. Finalmente, estipulamos os valores que precisamos acrescentar. Esta é a forma básica do recurso INSERT, e ela é bastante intuitiva.

Para dar a esta estrutura alguma aplicação da vida real, vamos conferir um exemplo do estudo de caso.

Um dos médicos do Hospital Infantil Mickey Mouse tem um paciente recém-nascido que ainda não recebeu um nome. O médico precisa inserir o bebê no banco de dados imediatamente para que ele tenha acesso a um teste clínico de um medicamento, mas o sistema não permitirá que o registro do bebê seja submetido sem um nome. O médico quer incluir o paciente usando seu número de paciente (ID), deixando o nome em branco até uma data posterior. Como administrador, você precisará inserir o paciente manualmente no banco de dados.

Veja como ficaria a declaração INSERT:

INSERT INTO dbo.Paciente
            (Sobrenome, Nome, DataNascimento, Sexo, [Peso], Altura, Vacinado)
VALUES      (NULL, NULL,'2019-11-19', 'F', 14.0, 23.1, 'Não')

Como você pode ver, não estamos apenas dando o nome da tabela que precisamos inserir, mas também os nomes das colunas e valores que queremos adicionar. Não especificamos o ID_Paciente na lista de colunas porque, sendo uma coluna de identificação, ela é preenchida automaticamente.

Como queremos manter o nome do paciente em branco por enquanto, escrevemos NULL nas colunas de nome.

Uma vez executado este comando, ele fará a seguinte adição ao banco de dados:

Inserir dados usando SQL

Adicionando mais de uma linha

Para inserir mais de uma linha de dados com apenas uma declaração, use parênteses e vírgulas para especificar as novas linhas distintas.

INSERT INTO dbo.Paciente
            (Sobrenome, Nome, DataNascimento, Sexo, [Peso], Altura, Vacinado)
VALUES      ('Hitson', 'Jorge','2019-11-19', 'M', 13.9, 22.5, 'Não'),
VALUES      ('Hitson', 'Jennifer','2019-11-19', 'F', 13.7, 22.3, 'Não')

Dica! Use uma transação para testar a sua adição sem comprometer ou alterar permanentemente a sua tabela. Para isso, comece com BEGIN TRANSACTION e termine a transação com COMMIT, se quiser manter as mudanças, ou ROLLBACK, se quiser reverter o que você fez. Abaixo está a maneira como adicionaríamos uma transação ao exemplo acima:

BEGIN TRANSACTION

BEGIN TRANSACTION
INSERT INTO dbo.Paciente
            (Sobrenome, Nome, DataNascimento, Sexo, [Peso], Altura, Vacinado)
VALUES      ('Hitson', 'Jorge','2019-11-19', 'M', 13.9, 22.5, 'Não'),
	        ('Hitson', 'Jennifer','2019-11-19', 'F', 13.7, 22.3, 'Não')

ROLLBACK
--COMMIT

Adicionando de uma tabela para outra

Precisa inserir uma ou várias linhas de dados de uma tabela em outra tabela? Você pode usar a declaração INSERT INTO SELECT.

Imagine que muitos dos nossos pequenos pacientes estão participando de um novo teste clínico de medicamentos e você está criando uma nova tabela para registrar a participação deles. A estrutura básica desta declaração é:

INSERT INTO tabelaAlvo (coluna1, coluna2, ...)
SELECT      (coluna1, coluna2, ...)
FROM        tabelaFonte

A declaração para o nosso exemplo de teste clínico seria assim:

INSERT INTO [dbo].[TesteClinicoAlfa]
           (Sobrenome, Nome, DataNascimento, Sexo, MedicamentoOuPlacebo, Observacoes)
SELECT 
	p.Sobrenome, p.Nome, p.DataNascimento, p.Sexo, 'Medicamento', NULL 
FROM dbo.Paciente AS p
WHERE 
	p.ID_Paciente IN (15226, 15229, 15230)
UNION
SELECT 
	p.Sobrenome, p.Nome, p.DataNascimento, p.Sexo, 'Placebo', NULL 
FROM dbo.Paciente AS p
WHERE 
	p.ID_Paciente IN (15231)

Você também poderia escrever o exemplo como uma Expressão de Tabela Comum (CTE). Entre outras coisas, a CTE pode ser usada para criar um conjunto de resultados temporários que podem ser reutilizados durante a consulta. Eis como ficaria o mesmo comando escrito como uma CTE:

WITH pacientesTesteClinico (Sobrenome, Nome, DataNascimento, Sexo, MedicamentoOuPlacebo, Observacoes)
AS (
	SELECT 
		p.Sobrenome, p.Nome, p.DataNascimento, p.Sexo, 'Medicamento', NULL 
	FROM dbo.Paciente AS p
	WHERE 
		p.ID_Paciente IN (15226, 15229, 15230)
	UNION
	SELECT 
		p.Sobrenome, p.Nome, p.DataNascimento, p.Sexo, 'Placebo', NULL 
	FROM dbo.Paciente AS p
	WHERE 
		p.ID_Paciente IN (15231)
	)
INSERT INTO [dbo].[TesteClinicoAlfa]
           (Sobrenome, Nome, DataNascimento, Sexo, MedicamentoOuPlacebo, Observacoes)
SELECT Sobrenome, Nome, DataNascimento, Sexo, MedicamentoOuPlacebo, Observacoes
FROM pacientesTesteClinico
Inserindo de uma tabela a outra

Dica! Se você estiver usando SELECT para adicionar dados de uma tabela a outra, é interessante primeiro executar a declaração SELECT sozinha - só para garantir que as linhas corretas sejam devolvidas e você esteja satisfeito com o resultado!

Atualizar (UPDATE) dados usando SQL

O comando UPDATE em SQL é outra expressão bastante utilizada por engenheiros de dados e administradores de banco de dados. Ela é utilizada para alterar um valor de coluna para uma ou mais linhas.

Aqui está a estrutura mais comum de uma instrução SQL UPDATE:

UPDATE NomeTabela
SET coluna1=valor1, coluna2=valor2,...
WHERE colunaFiltro=valorFiltro

Assim como fizemos com a instrução SQL INSERT, primeiro precisamos identificar a tabela que queremos atualizar. Em seguida, usamos a cláusula SET, que detalha as colunas que desejamos atualizar. Finalmente, utilizamos a cláusula WHERE para identificar quais linhas queremos incluir na atualização.

Dica! Como um novo valor de coluna pode afetar mais de uma linha, certifique-se de que você está satisfeito com a extensão da sua atualização antes de executá-la! Assim como INSERT, um SQL UPDATE pode ser escrito como uma transação, o que significa que você pode tanto COMMIT (manter) ou ROLLBACK (reverter) a atualização se estiver ou não satisfeito com as mudanças.

Aqui está um exemplo baseado no nosso estudo de caso. Nosso departamento de Emergência passará a se chamar departamento de "Trauma e Cirurgia de Emergência" e, por isso, precisamos alterar o nome deste departamento no banco de dados. Para isso, você poderia executar esta declaração:

UPDATE dbo.Departamento
   SET NomeDepartamento = 'Trauma e Cirurgia de Emergência'
WHERE IdDepartamento = 3
SELECT * FROM dbo.Departamento WHERE NomeDepartamento = 'Emergência'
Atualização de dados usando SQL

Aqui está a tabela com o nome do departamento atualizado:

Atualização de dados usando SQL

Ao usar a declaração SQL UPDATE, certifique-se de que sua cláusula WHERE especifica exatamente quais linhas você deseja atualizar. Em caso de dúvida, escreva a declaração como uma transação, para que você possa reverter se não estiver satisfeito com a mudança - sem prejuízos!

Para garantir que você está selecionando os dados corretos para a atualização, você pode fazer um teste usando SELECT para ter certeza de que está selecionando as linhas certas.

Atualizar mais de uma linha

Para atualizar várias linhas de dados de maneira fácil, é possível utilizar a declaração UPDATE. A cláusula WHERE também será sua amiga neste caso.

Imagine que você queira mudar as categorias de todas as alas de internação de "Ala" para "Quarto" sob a coluna de grupo.

UPDATE dbo.Departamento
   SET NomeGrupo = 'Quarto'
WHERE NomeGrupo = 'Ala' 

Com isso, a tabela ficaria assim:

Atualização de várias linhas Atualização de várias linhas

Deletar (DELETE) dados usando SQL

Romper

O SQL DELETE é a troca de fraldas do mundo SQL. Existe alguma coisa ali que você não quer? Jogue fora!

DELETE remove uma ou várias linhas de uma tabela, mas tenha cuidado! Você precisa ter certeza de que sabe o que está apagando antes de seguir em frente e finalizar a declaração!

Aqui está a estrutura mais comum da declaração SQL DELETE:

DELETE NomeTabela
WHERE  colunaFiltro=valorFiltro;

São apenas duas partes: especificar a tabela e especificar WHERE - quais linhas você quer excluir.

Se você conhece a chave primária de uma linha que deseja excluir, a tarefa será simples. Quer excluir o Ala Lincoln da sua tabela? Sem problemas:

DELETE FROM dbo.Departamento
WHERE IdDepartamento = 16
Excluir dados usando SQL

Excluindo várias linhas

Vamos voltar mais uma vez ao nosso estudo de caso do Hospital Infantil Mickey Mouse. Digamos que o gerente de dados do hospital quer deletar todos os registros de pacientes que não dão entrada no hospital desde 1969. Eis como você poderia escrever essa declaração usando DELETE:

DELETE FROM dbo.EntradaPaciente 
WHERE UltimaAlta < '1969-01-01' 

O resultado? Esta é a tabela anterior...

Eliminação de várias linhas

... e é assim que ela fica depois de executarmos o script:

Eliminação de várias linhas

No entanto, a melhor coisa a se fazer antes de executar a declaração DELETE é testar o resultado usando SELECT. Isto retornará todas as linhas que você estava prestes a apagar, para que você possa ter certeza de que está removendo as linhas certas!

Para fazer este teste, você poderia digitar:

SELECT * FROM dbo.EntradaPaciente 
WHERE UltimaAlta < '1969-01-01'

Atenção! Se você usar DELETE sem adicionar uma cláusula WHERE, todas as linhas da sua tabela serão excluídas!

Conclusão

Se você já domina os Conceitos Básicos de SQL, as declarações SQL INSERT, UPDATE e DELETE são o próximo passo para dominar o assunto de bancos de dados! Se este artigo lhe deixou com vontade de aprender mais, confira nosso curso para iniciantes "Usando Comandos INSERT, UPDATE e DELETE em SQL". Com ele, você não só se aprofundará nestes conceitos fundamentais, como também aprenderá:

  • Como lidar com valores de preenchimento automático e como combinar comandos de manipulação de dados em SQL com IDENTITY, SEQUENCE e NEWID().
  • Como combinar os comandos SQL DML com NULLS.
  • Como combinar os comandos SQL DML com JOINS.
  • Como alterar dados usando os valores padrão das colunas.
  • Como realizar operações CRUD - a mais importante das operações DML.

Com 52 exercícios interativos, acesso vitalício, um certificado de conclusão e uma garantia de 30 dias de satisfação, não custa nada experimentar!

O que você está esperando? INSIRA alguns conhecimentos novos na sua caixa de ferramentas, ATUALIZE seus estudos em SQL e DELETE todas as desculpas! Vejo você por aí no mundo dos bancos de dados.