O que é o PostgreSQL existente?
O operador EXISTS testa se uma (s) linha (s) existe (m) em uma subconsulta. Isso significa que o operador é usado junto com uma subconsulta. Diz-se que o operador Exists foi encontrado quando pelo menos uma linha é encontrada na subconsulta. Você pode usar essa operação junto com as instruções SELECT, UPDATE, INSERT e DELETE.
Neste Tutorial do PostgreSQL, você aprenderá o seguinte:
- Sintaxe
- Com instrução SELECT
- Com instrução INSERT
- Com declaração UPDATE
- Com declaração DELETE
- Com pgAdmin
Sintaxe
Esta é a sintaxe para a instrução PostgreSQL EXISTS:
WHERE EXISTS (subquery);
A sintaxe acima mostra que o operador EXISTS aceita um argumento, que é uma subconsulta. A subconsulta é simplesmente uma instrução SELECT que deve começar com SELECT * em vez de uma lista de nomes de colunas ou expressões.
Com instrução SELECT
Vamos ver como usar uma instrução SELECT com o operador EXISTS. Temos as seguintes tabelas:
Livro:
Preço:
Execute a seguinte declaração:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Isso retorna o seguinte:
O comando acima deve retornar todos os registros na tabela Book cujo id corresponde ao id de todos os registros da subconsulta. Apenas um id foi correspondido. Portanto, apenas um registro foi retornado.
Com instrução INSERT
Podemos usar o operador EXISTS em uma instrução INSERT. Temos as seguintes 3 tabelas:
Livro:
Preço:
Preço 2:
Podemos então executar a seguinte instrução:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
A tabela de preços agora é a seguinte:
A linha com um id de 5 na tabela chamada Price2 foi correspondida. Este registro foi então inserido na tabela Price.
Com declaração UPDATE
Podemos usar o operador EXISTS em uma instrução UPDATE.
Execute a seguinte consulta:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Estamos atualizando a coluna de preços da tabela de preços. Nosso objetivo é fazer com que os preços dos itens que compartilham uma id sejam os mesmos. Apenas uma linha foi correspondida, ou seja, 5.
Porém, como os preços são iguais, ou seja, 205, nenhuma atualização foi feita. Se houvesse alguma diferença, uma atualização teria sido feita.
Com declaração DELETE
Uma instrução DELETE do PostgreSQL pode usar o operador EXISTS. Aqui está um exemplo:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
A tabela de preços agora é a seguinte:
A linha com id 5 foi excluída.
Com pgAdmin
Agora vamos ver como essas ações podem ser realizadas usando o pgAdmin.
Com instrução SELECT
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Etapa 4) Clique no botão Executar.
Ele deve retornar o seguinte:
Com instrução INSERT
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Etapa 4) Clique no botão Executar.
A tabela de preços agora deve ser a seguinte:
Com declaração UPDATE
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Etapa 4) Clique no botão Executar.
A tabela de preços agora deve ser a seguinte:
Com declaração DELETE
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Etapa 4) Clique no botão Executar.
A tabela de preços agora deve ser a seguinte:
Resumo
- O operador EXISTS testa se uma (s) linha (s) existe (m) em uma subconsulta.
- É usado com uma subconsulta e é considerado atendido quando a subconsulta retorna pelo menos uma linha.
- É usado junto com as instruções SELECT, UPDATE, INSERT e DELETE.
Baixe o banco de dados usado neste tutorial