O comando DELETE no SQL permite que uma ou mais linhas sejam excluídas de uma tabela do banco de dados.


Guia do artigo:

Visão geral

Considere a tabela produtos da Tabela 1, onde precisamos excluir o produto com id igual a 3.


id descricao preco categoria
1 Papel oficio (c/100 folhas) 4.50 2
2 Lápis preto (unid) 0.50 1
3 Xerox (1 folha PB) 0.25 4
Tabela 1. Tabela produtos

Para executar este comando SQL podemos utilizar uma query como no exemplo abaixo:

DELETE FROM
        produtos
        WHERE
        id = 3

Na linha 2 estamos informando a tabela onde será executado a query e em seguida, nas linhas 3 e 4 informamos a condição para que uma linha específica seja removida, ou seja, ter o id = 3. Lembrando que o DELETE também permite o uso de operadores condicionais da mesma forma como vimos com o UPDATE, visto anteriormente.

Sintaxe

DELETE FROM
        [ tabela ]
        WHERE
        [ condicao_de_busca ];

Na prática

Exemplo 1

Para o exemplo a seguir, considere a estrutura de tabelas abaixo, onde temos a tabela projeto (Tabela 2), responsável por manter todos os projetos da empresa, e a tabela comentario (Tabela 3), responsável por manter todos os comentários referentes aos projetos cadastrados no banco de dados.

ID Titulo Data
7 Criando uma aplicação com React 2018-04-10
8 API RestFUL com Lumen 2018-05-10
9 Consumindo uma API RestFUL com Laravel 2018-05-20
10 Documentação SQL 2018-05-21
Tabela 2. Estrutura da tabela projeto

ID Comentario Data id_projeto
1 Muito legal essa aplicação! Adorei usar o React 2018-04-10 7
2 React é muito simples! Curti o projeto! parabéns! 2018-05-10 7
3 Muito top! 2018-05-20 9
4 Parabéns aos envolvidos! 2018-05-20 9
5 Muito legal, sempre gostei do Laravel. 2018-05-20 9
6 Interessante a forma de recueprar as informações. Não sabia. Gostei! 2018-05-21 9
7 Consigo fazer o mesmo com CodeIgniter? 2018-05-22 9
8 React é apenas JavaScript, há uma API bem pequena para aprender, apenas algumas funções e como usá-las. Depois disso, suas habilidades em JavaScript serão o que te farão um melhor desenvolvedor React 2018-05-23 7
Tabela 3. Estrutura da tabela comentario

Suponhamos que seja necessário deletar o comentario de ID 8. Para isso podemos utilizar a query abaixo:

DELETE
        FROM
        comentario
        WHERE
        id = 8

A query acima é responsável por remover da tabela comentario o ID 8, pois na Linha 4 e 5 utilizamos o WHERE para frizar essa condição.

Exemplo 2

Como outro exemplo, podemos utilizar a mesma estrutura de tabelas do exemplo anterior, porém, dessa vez queremos remover todos os projetos que não possuam comentários, dessa forma, utilizaremos uma subconsulta dentro do comando DELETE. Para isso podemos utilizar a query abaixo:

DELETE
        FROM
        projetos P
        WHERE
        P.id NOT IN
        (
        SELECT
        C.id_projeto
        FROM
        comentario C
        WHERE
        C.id_projeto = P.id
        )

No trecho de código acima, colocamos como condição para a remoção dos dados, o ID do projeto não estar presente no resultado da subquery (Linhas 7 a 12), que é responsável por listar todos projetos com comentários.

É importante lembrar que como o WHERE é opcional, ou seja, caso ele seja removido da query no momento da exclusão, todos os dados da tabela serão apagados.

Confira também