PostgreSQL EXCLUIR linhas da seleção

⚡ Resumo Inteligente

PostgreSQL O comando DELETE remove uma ou mais linhas de uma tabela, e combiná-lo com uma cláusula WHERE seleciona apenas os registros que correspondem a uma determinada condição, enquanto omitir a cláusula WHERE apaga todas as linhas da tabela.

  • 📋 Sintaxe: A condição DELETE FROM tabela WHERE remove as linhas correspondentes e RETURNING pode exibir os dados excluídos.
  • 🎯 Uma condição: Uma única cláusula WHERE exclui apenas as linhas que satisfazem um dos critérios.
  • ➕ Duas condições: A combinação de dois testes com o operador AND restringe a exclusão a linhas específicas.
  • 🔗 Cláusula EXISTS: EXISTS exclui linhas de uma tabela com base em registros correspondentes em outra tabela.
  • 🖥️ pgAdmin: As mesmas consultas de exclusão são executadas visualmente através do editor de consultas do pgAdmin.
  • 🤖 Segurança da IA: Os assistentes de IA adicionam a cláusula WHERE correta e emitem avisos antes de exclusões completas de tabelas.

PostgreSQL Excluir linhas da seleção

Excluir consulta em PostgreSQL

O instrução DELETE in PostgreSQL é usado para excluir um ou mais registros de uma tabela. Para excluir apenas as linhas selecionadas de uma tabela, PostgreSQL Permite combinar a instrução DELETE com a cláusula WHERE; caso contrário, exclui todos os registros da tabela.

PostgreSQL Sintaxe de consulta de exclusão

A instrução DELETE pode ser definida usando a sintaxe abaixo:

[ WITH [ RECURSIVE ] with-query [, ...] ]
DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ]
    [ USING using-list ]
    [ WHERE condition(s) | WHERE CURRENT OF cursor-name]
    [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]

Parâmetros Técnicos

Os seguintes parâmetros estão disponíveis:

  • com consultaA cláusula WITH permite referenciar uma ou mais subconsultas pelo nome dentro da consulta DELETE.
  • table-name: o nome da tabela da qual os registros serão excluídos.
  • aliás: um substituto para o nome da tabela de destino.
  • lista de usoExpressões de tabela que permitem que colunas de outras tabelas sejam usadas na cláusula WHERE.
  • condição(ões): opcional. Estas são as condições que devem ser satisfeitas para que os registros sejam excluídos. Se esta seção não for fornecida, todos os registros com o nome da tabela serão excluídos.
  • nome do cursor: o cursor a ser usado na condição WHERE CURRENT OF. A última linha retornada por este cursor será excluída.
  • expressão de saída: a expressão a ser processada e retornada pela instrução DELETE após cada linha ser excluída.
  • nome de saída: o nome a ser usado para a coluna retornada.

Observe que, como a instrução DELETE exclui a linha inteira, não é necessário especificar os nomes das colunas.

PostgreSQL Excluir consulta com uma condição

A instrução DELETE pode ser usada com uma única condição, definida pela cláusula WHERE. Considere a tabela de preços com os seguintes dados:

Preço:

PostgreSQL Excluir consulta com uma condição

Vamos deletar o registro com um id 4:

DELETE FROM Price
WHERE id = 4;

O comando acima exclui os registros cujo ID é 4. Vamos confirmar se a exclusão foi bem-sucedida:

PostgreSQL Excluir consulta com uma condição

A linha com ID 4 foi excluída.

Excluir consulta com duas condições

O PostgreSQL A instrução DELETE também pode receber duas condições. As duas condições devem ser unidas usando o operador AND. Usaremos a seguinte tabela:

Preço:

PostgreSQL Excluir consulta com duas condições

Considere o exemplo abaixo:

DELETE FROM Price
WHERE id = 3
AND price = 300;

No comando acima, estamos excluindo a linha em que o ID é 3 e o preço é 300. Agora podemos consultar a tabela:

SELECT * FROM Price;

Isso retorna o seguinte:

PostgreSQL Excluir consulta com duas condições

O registro com id 3 e preço 300 foi excluído.

PostgreSQL Consulta de exclusão usando condição EXISTS

Com o EXISTE Em determinadas condições, você pode tornar o comando DELETE mais complexo. Às vezes, pode ser necessário excluir registros de uma tabela com base em registros de outra tabela.

Como a cláusula FROM não permite listar registros de mais de uma tabela ao executar uma exclusão, a cláusula EXISTS torna-se muito útil. Temos as seguintes duas tabelas:

Livro:

PostgreSQL Consulta de exclusão usando condição EXISTS

Preço:

PostgreSQL Consulta de exclusão usando condição EXISTS

Podemos então executar a seguinte consulta:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

O comando exclui da tabela Book as linhas que possuem um ID correspondente na tabela Price com um preço inferior a 250.

A tabela Book agora é a seguinte:

PostgreSQL Consulta de exclusão usando condição EXISTS

O registro com id 1 foi excluído.

Como excluir uma linha em PostgreSQL usando pgAdmin

As mesmas consultas de exclusão também podem ser executadas visualmente através da interface do pgAdmin, seguindo os passos abaixo:

Com uma condição

Passo 1) Faça login na sua conta pgAdmin. Abra o pgAdmin e faça login na sua conta usando suas credenciais.

Passo 2) Criar um banco de dados de demonstração.

  1. Na barra de navegação à esquerda, clique em Bancos de dados.
  2. Clique em Demonstração.

Excluir linha em PostgreSQL usando pgAdmin

Passo 3) Digite a consulta abaixo no editor de consultas:

DELETE FROM Price
WHERE id = 4;

Passo 4) Clique no botão Executar.

Excluir linha em PostgreSQL usando pgAdmin

Passo 5) Vamos verificar se a linha foi excluída:

Excluir linha em PostgreSQL usando pgAdmin

Com duas condições

Passo 1) Faça login em sua conta pgAdmin.

Passo 2)

  1. Na barra de navegação à esquerda, clique em Bancos de dados.
  2. Clique em Demonstração.

Excluir linha em PostgreSQL usando pgAdmin

Passo 3) Digite a consulta no editor de consultas:

DELETE FROM Price
WHERE id = 3
AND price = 300;

Passo 4) Clique no botão Executar.

Excluir linha em PostgreSQL usando pgAdmin

Passo 5) Vamos verificar se a exclusão foi bem-sucedida:

Excluir linha em PostgreSQL usando pgAdmin

Usando a condição EXISTS

Passo 1) Faça login em sua conta pgAdmin.

Passo 2)

  1. Na barra de navegação à esquerda, clique em Bancos de dados.
  2. Clique em Demonstração.

Excluir linha usando a condição EXISTS no pgAdmin

Passo 3) Digite a consulta no editor de consultas:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

Passo 4) Clique no botão Executar.

Excluir linha usando a condição EXISTS no pgAdmin

Passo 5) Vamos verificar se a exclusão foi bem-sucedida:

Excluir linha usando a condição EXISTS no pgAdmin

Baixe o banco de dados usado neste tutorial

Perguntas Frequentes

TRUNCATE remove instantaneamente todas as linhas e reinicia o armazenamento, mas ignora a cláusula WHERE e os gatilhos por linha. DELETE remove as linhas selecionadas usando uma cláusula WHERE, aciona os gatilhos de linha e pode ser revertido dentro de uma transação.

Adicione uma cláusula USING: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. Ela une a segunda tabela e exclui as linhas correspondentes, produzindo o mesmo resultado que EXISTS, porém com uma sintaxe de junção mais clara.

RETURNING retorna as colunas das linhas que acabaram de ser excluídas na mesma instrução. Escreva DELETE FROM Price WHERE id = 4 RETURNING *, e PostgreSQL Retorna os dados removidos para que os aplicativos possam registrar ou confirmar a alteração.

Sim. Envolva o comando DELETE em uma transação com BEGIN e, em seguida, execute ROLLBACK para desfazer a operação ou COMMIT para mantê-la. Até que você confirme a operação, as linhas removidas podem ser restauradas, o que protege contra exclusões acidentais.

Mantenha uma cópia por grupo usando a coluna oculta ctid: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id. Isso remove linhas duplicadas, mantendo um único registro.

Execute o mesmo filtro como um SELECT primeiro, ou abra uma transação com BEGIN e use RETURNING para inspecionar as linhas afetadas. RevVisualizar o resultado da cláusula WHERE antes do COMMIT impede a exclusão de mais linhas do que o pretendido.

Os assistentes de IA traduzem regras em linguagem natural para um comando DELETE com a cláusula WHERE correta, sugerem o uso de EXISTS ou USING para exclusões entre tabelas e sinalizam instruções que não possuem uma condição que limparia toda a tabela.

Sim. Um copiloto de IA revisa cada DELETE, avisa quando nenhuma cláusula WHERE está presente e recomenda uma transação ou uma pré-visualização RETURNING, reduzindo o risco de uma exclusão acidental de toda a tabela.

Resuma esta postagem com: