O comando DELETE é utilizado para remover registros armazenados em uma tabela do banco de dados.
Ele faz parte da linguagem DML (Data Manipulation Language) e atua diretamente sobre os dados existentes.
DELETE FROM nome_tabela
WHERE condição;
CREATE TABLE clientes (
id INT PRIMARY KEY,
nome VARCHAR(100),
cidade VARCHAR(100)
);
+----+--------+-----------+
| ID | Nome | Cidade |
+----+--------+-----------+
| 1 | Carlos | Campinas |
| 2 | Ana | Rio |
| 3 | Pedro | São Paulo |
+----+--------+-----------+
Excluindo o cliente com ID igual a 2:
DELETE FROM clientes
WHERE id = 2;
+----+--------+-----------+
| ID | Nome | Cidade |
+----+--------+-----------+
| 1 | Carlos | Campinas |
| 3 | Pedro | São Paulo |
+----+--------+-----------+
Podemos excluir diversos registros utilizando uma condição.
DELETE FROM clientes
WHERE cidade = 'Campinas';
Se a cláusula WHERE for omitida, todos os registros da tabela serão removidos.
DELETE FROM clientes;
| DELETE | DROP |
|---|---|
| Remove registros | Remove tabela inteira |
| Mantém estrutura | Remove estrutura e dados |
| Faz parte do DML | Faz parte do DDL |
| DELETE | TRUNCATE |
|---|---|
| Pode usar WHERE | Não usa WHERE |
| Remove registros específicos | Remove todos os registros |
| Mais flexível | Mais rápido para limpeza total |
Em tabelas relacionadas, a exclusão pode ser bloqueada por chaves estrangeiras.
DELETE FROM clientes
WHERE id = 1;
Se existirem registros dependentes, o banco poderá impedir a exclusão.
| Erro | Causa |
|---|---|
| Excluir tudo sem querer | Esquecer o WHERE |
| Registro não encontrado | Condição incorreta |
| Violação de relacionamento | Chave estrangeira existente |
| Perda de dados | Ausência de backup |
| Sistema | Exemplo de Exclusão |
|---|---|
| E-commerce | Remover produtos descontinuados |
| Escola | Excluir matrículas canceladas |
| Hospital | Remover registros de testes |
| Empresa | Excluir dados temporários |