Na lição anterior, aprendemos a modificar registros com UPDATE. Agora vamos ver como remover linhas desnecessárias ou desatualizadas com a instrução DELETE. Esta é uma importante operação DML que deve ser usada com bastante cuidado, porque nem sempre é fácil recuperar dados excluídos.
DELETE FROM nome_da_tabela
WHERE condição;
DELETE FROM nome_da_tabela — especifica a tabela da qual as linhas serão removidas.WHERE condição — determina quais linhas serão excluídas.Se WHERE for omitido, todas as linhas da tabela serão removidas.
WHERE: um erro na condição pode excluir os dados errados ou linhas demais.SELECT primeiro: antes de usar DELETE, é uma boa prática executar um SELECT com a mesma condição para confirmar que o resultado está correto.DELETE remove apenas os dados, não a tabela nem suas colunas.Vamos remover um cliente pelo seu identificador:
DELETE FROM customer
WHERE customer_id = 1;
Observação: graças a WHERE customer_id = 1, apenas uma linha específica será excluída.
Vamos excluir registros de pagamento feitos antes de uma determinada data:
DELETE FROM payment
WHERE payment_date < '2005-05-25';
Resultado: todas as linhas em payment cuja data de pagamento seja anterior à data especificada serão removidas.
Às vezes, é necessário excluir linhas com base em uma condição de outra tabela. Por exemplo, vamos remover os pagamentos de clientes inativos:
DELETE FROM payment
WHERE customer_id IN (
SELECT customer_id
FROM customer
WHERE active = 0
);
Resultado: todos os pagamentos dos clientes marcados como inativos serão excluídos.
Se você precisar limpar completamente uma tabela, DELETE também pode ser usado sem WHERE:
DELETE FROM temp_import;
Observação: a tabela temp_import continuará existindo, mas todas as suas linhas serão removidas.
Uma boa prática é primeiro verificar quais linhas serão afetadas:
-- Primeiro verificamos as linhas
SELECT customer_id, first_name, last_name, active
FROM customer
WHERE active = 0;
-- Só depois da verificação executamos o DELETE
DELETE FROM customer
WHERE active = 0;
Essa abordagem ajuda a evitar a exclusão acidental de dados extras.
DELETE é especialmente útilPrincipais conclusões desta lição:
DELETE remove linhas existentes de uma tabela.WHERE, todas as linhas da tabela serão excluídas.SELECT com a mesma condição.DELETE preserva a estrutura da tabela — apenas os dados são removidos.