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:
Preço:
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:
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:
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:
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:
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:
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:
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
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demonstração.
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
Deve retornar o seguinte:
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.
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.
Deve retornar o seguinte:
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.
Passo 3) Digite a consulta no editor de consultas:
SELECT * FROM Book NATURAL JOIN Price;
Passo 4) Clique no botão Executar.
Deve retornar o seguinte:
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.
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.
Deve retornar o seguinte:
Associação externa do pgAdmin
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.
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.
Deve retornar o seguinte:
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.
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.
Deve retornar o seguinte:
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.
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.
Deve retornar o seguinte:
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