DELETE

Name

DELETE  --  exclui linhas de uma tabela

Synopsis

DELETE FROM [ ONLY ] tabela [ WHERE condição ]
  

Entradas

tabela

O nome de uma tabela existente.

condição

Uma condição de consulta do SQL que retorna as linhas a serem excluídas.

Consulte o comando SELECT para obter mais informações sobre a cláusula WHERE.

Saídas

DELETE contador

Mensagem retornada se as linhas foram excluídas com sucesso. O contador representa o número de linhas excluídas.

Se contador for 0, então nenhuma linha foi excluída.

Descrição

O comando DELETE exclui as linhas que satisfazem a cláusula WHERE na tabela especificada.

Se a condição (cláusula WHERE) estiver ausente, o efeito é a exclusão de todas as linhas da tabela. O resultado vai ser uma tabela válida, porém vazia.

Tip: O comando TRUNCATE é uma extensão do PostgreSQL que fornece um mecanismo rápido para excluir todas as linhas de uma tabela.

Por padrão o DELETE exclui as linhas da tabela especificada e de todas as suas filhas. Para atualizar somente a tabela especificada deve ser utilizada a cláusula ONLY.

É necessário possuir acesso de escrita a uma tabela para poder modificá-la, assim como acesso de leitura em todas as tabelas cujos valores são lidos na condição da cláusula WHERE.

Utilização

Remover todos os filmes, exceto os musicais:

DELETE FROM filmes WHERE tipo <> 'Musical';
SELECT * FROM filmes;

 cod   |           titulo          | did | data_prod  |  tipo   | duracao
-------+---------------------------+-----+------------+---------+---------
 UA501 | West Side Story           | 105 | 1961-01-03 | Musical | 02:32
 TC901 | The King and I            | 109 | 1956-08-11 | Musical | 02:13
 WD101 | Bed Knobs and Broomsticks | 111 |            | Musical | 01:57
(3 rows)

Esvaziar a tabela filmes:

DELETE FROM filmes;
SELECT * FROM filmes;

 cod  | titulo | did | data_prod | tipo | duracao
------+--------+-----+-----------+------+---------
(0 rows)

Compatibilidade

SQL92

O SQL92 permite um comando DELETE posicionado:

DELETE FROM tabela WHERE
    CURRENT OF cursor
    

onde cursor identifica um cursor aberto. Cursores interativos no PostgreSQL são apenas para leitura.