Excluir (SQL) - Delete (SQL)

Na linguagem de consulta estruturada de banco de dados ( SQL ), a instrução DELETE remove um ou mais registros de uma tabela . Um subconjunto pode ser definido para exclusão usando uma condição, caso contrário, todos os registros são removidos. Alguns sistemas de gerenciamento de banco de dados (DBMSs), como o MySQL , permitem a exclusão de linhas de várias tabelas com uma instrução DELETE (às vezes, isso é chamado de DELETE de várias tabelas).

Exemplos

Exclua as linhas das tortas da mesa em que o sabor da coluna seja igual ao Merengue de Limão :

DELETE FROM pies
 WHERE flavor='Lemon Meringue';

Exclua linhas nas árvores , se o valor da altura for menor que 80.

DELETE FROM trees
 WHERE height < 80;

Exclua todas as linhas de mytable :

DELETE FROM mytable;

Exclua linhas de mytable usando uma subconsulta na condição where:

DELETE FROM mytable
 WHERE id IN (
       SELECT id
         FROM mytable2
      );

Exclua linhas de mytable usando uma lista de valores:

DELETE FROM mytable
 WHERE id IN (
       value1,
       value2,
       value3,
       value4,
       value5
      );

Exemplo com tabelas relacionadas

Suponha que haja um banco de dados simples que lista pessoas e endereços. Mais de uma pessoa pode morar em um determinado endereço e uma pessoa pode morar em mais de um endereço (este é um exemplo de relacionamento muitos para muitos ). O banco de dados possui apenas três tabelas, pessoa , endereço e pa , com os seguintes dados:

pessoa
pid nome
1 Joe
2 Prumo
3 Ann
Morada
ajuda Descrição
100 2001 Main St.
200 35 Pico Blvd.
pa
pid ajuda
1 100
2 100
3 100
1 200

A tabela pa relaciona as tabelas de pessoa e endereço, mostrando que Joe, Bob e Ann moram todos na Main Street de 2001, mas Joe também mora no Pico Boulevard.

Para remover joe do banco de dados, duas exclusões devem ser executadas:

 DELETE FROM person WHERE pid=1;
 DELETE FROM pa WHERE pid=1;

Para manter a integridade referencial, os registros de Joe devem ser removidos de pessoa e pa . Os meios pelos quais a integridade é mantida podem acontecer de forma diferente em vários sistemas de gerenciamento de banco de dados relacional. Pode ser que, além de ter apenas três tabelas, o banco de dados também tenha sido configurado com um gatilho para que, sempre que uma linha for excluída de pessoa, quaisquer linhas vinculadas sejam excluídas de pa . Então a primeira afirmação:

 DELETE FROM person WHERE pid=1;

seria automaticamente acionar o segundo:

 DELETE FROM pa WHERE pid=1;

Comandos relacionados

Excluir todas as linhas de uma tabela pode consumir muito tempo. Alguns SGBDs oferecem um comando TRUNCATE TABLE que funciona muito mais rápido, pois altera apenas os metadados e normalmente não perde tempo impondo restrições ou acionando gatilhos.

DELETE exclui apenas as linhas. Para excluir uma tabela inteiramente, o comando DROP pode ser usado.

Referências