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

Resuma esta postagem com: