PostgreSQL Joins: Inner, Outer, Left, Right, Natural with Examples

Índice:

Anonim

O que são associações PostgreSQL?

Os JOINs do PostgreSQL são usados ​​para recuperar dados de mais de uma tabela. Com JOINs, é possível combinarmos 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.

Neste tutorial do PostgreSQL, você aprenderá:

  • O que são associações PostgreSQL?
  • Tipos de junções
  • Junções internas
    • Theta Join
    • EQUI Join
    • União Natural
  • Junções Externas
    • LEFT OUTER JOIN
    • DIREITO OUTER JOIN
    • Full Outer Join
  • Usando o pgAdmin
  • Junções internas
    • Theta Join
    • EQUI Join
    • União Natural
    • INNER JOIN (junção simples)
  • Junções Externas
    • LEFT OUTER JOIN
    • DIREITO OUTER JOIN
    • Full Outer Join

Tipos de junções

Existem dois tipos de JOIN no PostgreSQL:

  • Junções internas
  • Junção Externa

Junções internas

Existem 3 tipos de junções internas:

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

Theta Join

Uma junção theta permite juntar 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 theta é conhecida como junção interna.

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

Sintaxe:

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

Considere as seguintes tabelas do banco de dados Demo:

Livro:

Preço:

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

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Isso retornará o seguinte:

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

EQUI Join

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

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

Isso retornará o seguinte:

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

União Natural

Esse 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 BookNATURAL JOIN Price;

Isso retornará o seguinte:

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

Junções Externas

Existem três tipos de JOINs externos no PostgreSQL:

  • Junção Externa Esquerda.
  • Junção Externa Direita.
  • Full Outer Join

LEFT OUTER JOIN

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 columnsFROM table-1LEFT OUTER JOIN table-2ON 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.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Isso retorna o seguinte:

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

DIREITO OUTER JOIN

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

Sintaxe:

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

Por exemplo:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Isso retorna o seguinte:

Todas as linhas da tabela Price foram retornadas. Apenas as linhas da tabela Book que atenderam à condição de junção foram retornadas. A linha não tem valor para nome, pois nenhuma correspondência foi encontrada.

Full Outer Join

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

Sintaxe:

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

Por exemplo:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Isso retorna o seguinte:

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

Usando o pgAdmin

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

Junções internas

Theta Join

Etapa 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 Demo.

Etapa 3) Digite a consulta no editor de consultas:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Etapa 4) Clique no botão Executar.

Ele deve retornar o seguinte:

EQUI Join

Etapa 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 Demo.

Etapa 3) Digite a consulta no editor de consultas:

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

Etapa 4) Clique no botão Executar.

Ele deve retornar o seguinte:

União Natural

Etapa 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 Demo.

Etapa 3) Digite a consulta no editor de consultas:

SELECT *FROM BookNATURAL JOIN Price;

Etapa 4) Clique no botão Executar.

Ele deve retornar o seguinte:

INNER JOIN (junção simples)

Etapa 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 Demo.

Etapa 3) Digite a consulta no editor de consultas:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Etapa 4) Clique no botão Executar.

Ele deve retornar o seguinte:

Junções Externas

LEFT OUTER JOIN

Etapa 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 Demo.

Etapa 3) Digite a consulta no editor de consultas:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Etapa 4) Clique no botão Executar.

Ele deve retornar o seguinte:

DIREITO OUTER JOIN

Etapa 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 Demo.

Etapa 3) Digite a consulta no editor de consultas:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Etapa 4) Clique no botão Executar.

Ele deve retornar o seguinte:

Full Outer Join

Etapa 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 Demo.

Etapa 3) Digite a consulta no editor de consultas:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Etapa 4) Clique no botão Executar.

Ele deve retornar o seguinte:

Resumo:

  • No 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