PostgreSQL Junte tipos com exemplos: interno, externo, esquerdo, direito

O que são junções PostgreSQL?

PostgreSQL Junta são usados ​​para recuperar dados de mais de uma tabela. Com Joins, é possível combinar as instruções SELECT e JOIN em uma única instrução. Uma condição JOIN é adicionada à instrução e todas as linhas que atendem às condições são retornadas. Os valores de diferentes tabelas são combinados com base em colunas comuns. A coluna comum é principalmente uma chave primária na primeira tabela e uma chave estrangeira na segunda tabela.

PostgreSQL Tipos de junção

Existem dois tipos de junções em PostgreSQL:

  • Junções internas
  • Junções Externas

PostgreSQL Junção interna

Existem 3 tipos de junções internas em PostgreSQL:

  • Theta junta-se
  • Junção natural
  • Junte-se à EQUI

União Theta

Uma junção theta permite unir duas tabelas com base na condição representada por theta. As junções Theta podem funcionar com todos os operadores de comparação. Na maioria dos casos, a junção teta é chamada de junção interna.

O theta join é o tipo mais básico de JOIN. Ele retornará todas as linhas das tabelas onde a condição JOIN for satisfeita.

Sintaxe:

SELECT columns
FROM table-1 
INNER JOIN table-2
ON table-1.column = table-2.column;

Considere as seguintes tabelas do banco de dados Demo:

Livro:

PostgreSQL União Theta

Preço:

PostgreSQL União Theta

Queremos ver o nome de cada livro e o preço correspondente. Podemos executar o seguinte comando:

SELECT Book.name, Price.price 
FROM Book 
INNER JOIN Price 
ON Book.id = Price.id;   

Isso retornará o seguinte:

PostgreSQL União Theta

Apenas 3 linhas satisfizeram a condição de junção.

Junte-se à EQUI

A junção EQUI nos fornece uma maneira de unir duas tabelas com base no relacionamento chave primária/chave estrangeira. Por exemplo:

SELECT *
FROM Book 
JOIN Price ON Book.id = Price.id;

Isso retornará o seguinte:

PostgreSQL Junte-se à EQUI

Os registros foram retornados de ambas as tabelas com base nas colunas comuns, ou seja, a coluna id.

União Natural

Este tipo de junção nos fornece outra maneira de escrever uma junção EQUI. Podemos melhorar nosso exemplo anterior adicionando a palavra-chave NATURAL conforme mostrado abaixo:

SELECT *
FROM Book
NATURAL JOIN Price;

Isso retornará o seguinte:

PostgreSQL União Natural

Apenas uma coluna de id foi retornada. O NATURAL JOIN conseguiu notar que a coluna id é comum nas duas tabelas. Apenas um foi devolvido.

Junção externa do Postgres

Existem 3 tipos de junções externas em PostgreSQL:

  • União Externa Esquerda
  • Junção Externa Direita
  • Junção Externa Completa

Junção externa esquerda do Postgres

O LEFT OUTER JOIN retornará todas as linhas da tabela do lado esquerdo e apenas as linhas da tabela do lado direito onde a condição de junção foi satisfeita.

Sintaxe:

SELECT columns
FROM table-1
LEFT OUTER JOIN table-2
ON table-1.column = table-2.column;

Precisamos ver o nome de cada livro e o preço correspondente. Podemos executar o seguinte comando:

SELECT Book.name, Price.price 
FROM Book   
LEFT JOIN Price 
ON Book.id = Price.id;   

Isso retorna o seguinte:

Junção externa esquerda do Postgres

Todas as 4 linhas da tabela Book foram retornadas. Apenas 3 linhas da tabela Preço atenderam à condição de junção. Portanto, eles foram devolvidos. O último livro não tem valor de preço correspondente.

Junção externa direita do Postgres

O RIGHT OUTER JOIN retorna todas as linhas da tabela no lado direito e as linhas da tabela no lado esquerdo onde a condição de junção foi satisfeita.

Sintaxe:

SELECT columns
FROM table-1
RIGHT OUTER JOIN table-2
ON table-1.column = table-2.column;

Por exemplo:

SELECT Book.name, Price.price 
FROM Book
RIGHT JOIN Price 
ON Book.id = Price.id;

Isso retorna o seguinte:

Junção externa direita do Postgres

Todas as linhas da tabela Preço foram retornadas. Somente as linhas da tabela Book que atenderam à condição de junção foram retornadas. O 3rd row não tem valor para nome, pois nenhuma correspondência foi encontrada.

Junção externa completa PostgreSQL

Este tipo de JOIN retornará todas as linhas da tabela no lado esquerdo e todas as linhas da tabela no lado direito com nulos onde a condição de junção não for satisfeita.

Sintaxe:

SELECT columns
FROM table-1
FULL OUTER JOIN table-2
ON table-1.column = table-2.column;

Por exemplo:

SELECT Book.name, Price.price 
FROM Book
FULL OUTER JOIN Price 
ON Book.id = Price.id;

Isso retorna o seguinte:

Junção externa completa do Postgres

Todas as linhas de todas as tabelas foram retornadas, com valores nulos onde nenhuma correspondência foi encontrada.

Usando pgAdmin

As tarefas acima podem ser realizadas no pgAdmin da seguinte forma:

Associação interna do pgAdmin

Como usar o Theta Join PostgreSQL usando pgAdmin

Abaixo estão as etapas para usar Theta Join no Postgres usando pgAdmin:

Etapa 1) Faça login em sua conta pgAdmin

Abra o pgAdmin e faça login usando suas credenciais

Etapa 2) Criar banco de dados de demonstração

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

Associação interna do pgAdmin

Etapa 3) Digite a consulta

Digite a consulta abaixo no editor de consultas:

SELECT Book.name, Price.price 
FROM Book 
INNER JOIN Price 
ON Book.id = Price.id;   

Etapa 4) Execute a consulta

Clique no botão Executar

Associação interna do pgAdmin

Deve retornar o seguinte:

Associação interna do pgAdmin

Junte-se à EQUI

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.

pgAdmin EQUI Junte-se

Passo 3) Digite a consulta no editor de consultas:

SELECT *
FROM Book 
JOIN Price ON Book.id = Price.id;

Passo 4) Clique no botão Executar.

pgAdmin EQUI Junte-se

Deve retornar o seguinte:

pgAdmin EQUI Junte-se

União Natural

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.

Associação natural do pgAdmin

Passo 3) Digite a consulta no editor de consultas:

SELECT *
FROM Book 
NATURAL JOIN Price;

Passo 4) Clique no botão Executar.

Associação natural do pgAdmin

Deve retornar o seguinte:

Associação natural do pgAdmin

pgAdmin Junção interna simples

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.

pgAdmin Junção interna simples

Passo 3) Digite a consulta no editor de consultas:

SELECT Book.name, Price.price 
FROM Book 
INNER JOIN Price 
ON Book.id = Price.id;   

Passo 4) Clique no botão Executar.

pgAdmin Junção interna simples

Deve retornar o seguinte:

pgAdmin Junção interna simples

Associação externa do pgAdmin

União Externa Esquerda

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.

pgAdmin Esquerda Junção Externa

Passo 3) Digite a consulta no editor de consultas:

SELECT Book.name, Price.price 
FROM Book   
LEFT JOIN Price 
ON Book.id = Price.id;   

Passo 4) Clique no botão Executar.

pgAdmin Esquerda Junção Externa

Deve retornar o seguinte:

pgAdmin Esquerda Junção Externa

Junção Externa Direita

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.

Junção externa direita do pgAdmin

Passo 3) Digite a consulta no editor de consultas:

SELECT Book.name, Price.price 
FROM Book
RIGHT JOIN Price 
ON Book.id = Price.id;

Passo 4) Clique no botão Executar.

Junção externa direita do pgAdmin

Deve retornar o seguinte:

Junção externa direita do pgAdmin

Junção Externa Completa

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.

Junção externa completa do pgAdmin

Passo 3) Digite a consulta no editor de consultas:

SELECT Book.name, Price.price 
FROM Book
FULL OUTER JOIN Price 
ON Book.id = Price.id;

Passo 4) Clique no botão Executar.

Junção externa completa do pgAdmin

Deve retornar o seguinte:

Junção externa completa do pgAdmin

Resumo

  • In PostgreSQL, usamos JOINs quando precisamos recuperar valores de mais de uma tabela.
  • O INNER JOIN é o tipo mais básico de JOIN. Ele retorna todos os registros onde a condição JOIN especificada foi satisfeita.
  • O LEFT OUTER JOIN retorna todas as linhas da tabela à esquerda e apenas as linhas da outra tabela onde a condição de junção foi satisfeita.
  • O RIGHT OUTER JOIN retorna todas as linhas da tabela à direita e apenas as linhas da outra tabela onde a condição de junção foi satisfeita.
  • Este tipo de JOIN retorna todas as linhas da tabela à esquerda e todas as linhas da tabela à direita com nulos onde a condição de junção não é satisfeita.

Baixe o banco de dados usado neste tutorial