PostgreSQL Tipos de junção: Interna, Externa, Esquerda, Direita

⚡ Resumo Inteligente

PostgreSQL As junções recuperam e combinam linhas de duas ou mais tabelas usando uma chave compartilhada e incluem junções internas, como theta, EQUI e natural, além de junções externas que abrangem resultados à esquerda, à direita e completos.

  • 🔗 Combinar: A operação de junção mescla colunas de várias tabelas com base em uma chave comum.
  • 🎯 Junção interna: As junções internas retornam apenas as linhas em que a condição de junção é satisfeita.
  • ⬅️ Associação à esquerda: LEFT OUTER JOIN mantém todas as linhas da tabela à esquerda, adicionando valores NULL para as linhas da tabela à direita que não correspondem.
  • ➡️ Junção certa: A junção externa à direita (RIGHT OUTER JOIN) mantém todas as linhas da tabela à direita, adicionando valores NULL para as linhas da tabela à esquerda que não correspondem.
  • ???? Adesão completa: FULL OUTER JOIN retorna todas as linhas de ambas as tabelas com valores NULL onde não existe correspondência.
  • 🤖 Ajuda da IA: Os assistentes de IA selecionam o tipo de junção correto e definem a condição LIGADO.

PostgreSQL Tipos de junção

O que são junções PostgreSQL?

PostgreSQL Junta São utilizadas para recuperar dados de mais de uma tabela. Com os 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 em comum. A coluna em comum geralmente é 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.

PostgreSQL Junção Externa

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

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

PostgreSQL União Externa Esquerda

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:

PostgreSQL União Externa Esquerda

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.

PostgreSQL Junção Externa Direita

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:

PostgreSQL Junção Externa Direita

Todas as linhas da tabela Preço foram retornadas. Somente as linhas da tabela Livro que atenderam à condição de junção foram retornadas. A terceira linha não possui 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:

PostgreSQL Junção Externa Completa

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. As seções a seguir descrevem cada tipo de junção passo a passo.

Associação interna do pgAdmin

Os passos abaixo mostram como executar cada variante de junção interna no pgAdmin.

Como usar o Theta Join PostgreSQL usando pgAdmin

A seguir estão os passos para usar o Theta Join. PostgreSQL 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

  • Na barra de navegação à esquerda, clique em Bancos de dados.
  • 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)

  • Na barra de navegação à esquerda, clique em Bancos de dados.
  • 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)

  • Na barra de navegação à esquerda, clique em Bancos de dados.
  • 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)

  • Na barra de navegação à esquerda, clique em Bancos de dados.
  • 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

Em seguida, execute as três variantes de junção externa no pgAdmin seguindo os passos abaixo.

União Externa Esquerda

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

Passo 2)

  • Na barra de navegação à esquerda, clique em Bancos de dados.
  • 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)

  • Na barra de navegação à esquerda, clique em Bancos de dados.
  • 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)

  • Na barra de navegação à esquerda, clique em Bancos de dados.
  • 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

Baixe o banco de dados usado neste tutorial

Perguntas Frequentes

Uma junção interna (INNER JOIN) retorna apenas as linhas que correspondem em ambas as tabelas. Uma junção externa (OUTER JOIN) também mantém as linhas que não correspondem, preenchendo as colunas ausentes com NULL, e pode ser esquerda, direita ou completa, dependendo de qual tabela é preservada.

Uma operação JOIN combina colunas de tabelas diferentes lado a lado usando uma chave correspondente, ampliando cada linha. Uma operação UNION empilha as linhas de dois conjuntos de resultados verticalmente e requer o mesmo número de colunas.

Uma auto-junção une uma tabela a si mesma usando dois aliases de tabela. É útil para comparar linhas dentro de uma mesma tabela, como por exemplo, associar funcionários aos gerentes armazenados na mesma tabela.

A operação CROSS JOIN retorna o produto cartesiano, combinando cada linha da primeira tabela com cada linha da segunda. Ela não utiliza nenhuma condição ON, portanto, pode produzir conjuntos de resultados muito grandes rapidamente.

Sim. Você pode encadear várias cláusulas JOIN em uma única consulta, adicionando cada tabela extra com outro JOIN e uma condição ON. PostgreSQL avalia-os a fim de construir um único conjunto de resultados combinados.

Assistentes de IA como o GitHub Copilot sugerem o tipo de junção correto, escrevem a condição ON a partir de chaves estrangeiras e sinalizam uma condição ausente que causaria um produto cartesiano acidental, reduzindo erros comuns de junção.

Sim. Os assistentes de IA podem ler um plano de consulta, recomendar índices em colunas de junção e reescrever a ordem ou as condições de junção. O banco de dados ainda garante a correção, portanto, revise cada sugestão antes de executá-la em produção.

Nenhuma junção simples é sempre a mais rápida; o desempenho depende dos índices, da quantidade de linhas e dos filtros. Junções internas (INNER JOINs) em chaves indexadas geralmente são eficientes, enquanto junções externas completas (FULL OUTER JOINs) em tabelas grandes não indexadas tendem a ser as mais custosas.

Resuma esta postagem com: