Aprenda / SQL e banco de dados

FundamentosAula 5 de 1614 min0% da trilha

INSERT, UPDATE, DELETE

Os três comandos que mudam dado — e por que UPDATE/DELETE sem WHERE é o erro mais caro do SQL.

INSERT — criar uma linha nova

INSERT INTO usuarios (nome, email)
VALUES ('Carla', 'carla@exemplo.com');

UPDATE — alterar linhas existentes

UPDATE produtos
SET preco = 279.90
WHERE id = 1;

DELETE — remover linhas

DELETE FROM pedidos
WHERE status = 'cancelado';

O erro mais caro: esquecer o WHERE

isso apaga a tabela inteira
DELETE FROM pedidos;
-- sem WHERE, TODA linha da tabela é removida — não só uma

UPDATE produtos SET preco = 0;
-- sem WHERE, TODO produto vira preço 0

Sem WHERE, UPDATE/DELETE aplicam a toda a tabela — esse é literalmente o erro de produção mais contado em histórias de desastre de banco de dados. Em produção, times sérios rodam um SELECT com o mesmo WHERE primeiro, pra conferir quantas/quais linhas seriam afetadas, antes de trocar pra DELETE/UPDATE.

RETURNING — ver o que mudou, sem uma segunda consulta

SQL (PostgreSQL)
INSERT INTO usuarios (nome, email)
VALUES ('Carla', 'carla@exemplo.com')
RETURNING *;

Exercício

Escreva o comando que marca como "pago" só o pedido de id 42, sem afetar nenhum outro pedido.

Quiz rápido

O que UPDATE produtos SET preco = 0; (sem WHERE) faz?
Qual prática ajuda a evitar um DELETE/UPDATE destrutivo em produção?