Junção interna vs. Junção externa


No SQL, um Junte-se é usado para comparar e combinar - unir-se literalmente - e retornar linhas específicas de dados de duas ou mais tabelas em um banco de dados. A junção interna localiza e retorna dados correspondentes das tabelas, enquanto um junção externa localiza e retorna dados correspondentes e alguns dados diferentes das tabelas.

denuncie este anúncio

Junção interna

Uma junção interna concentra-se na semelhança entre duas tabelas. Ao usar uma junção interna, deve haver pelo menos alguns dados correspondentes entre duas (ou mais) tabelas que estão sendo comparadas. Uma junção interna procura nas tabelas dados correspondentes ou sobrepostos. Ao encontrá-lo, a junção interna combina e retorna as informações em uma nova tabela.

Exemplo de junção interna

Vamos considerar um cenário comum de duas tabelas: preços e quantidades do produto. As informações comuns nas duas tabelas são o nome do produto, portanto essa é a coluna lógica para ingressar nas tabelas em. Existem alguns produtos comuns nas duas tabelas; outras são exclusivas de uma das tabelas e não têm correspondência na outra tabela.

Uma junção interna em Produtos retorna informações sobre apenas os produtos comuns nas duas tabelas.

Junção externa

Uma junção externa retorna um conjunto de registros (ou linhas) que incluem o que uma junção interna retornaria, mas também inclui outras linhas para as quais nenhuma correspondência correspondente é encontrada na outra tabela.

Existem três tipos de junções externas:

  • Junção externa esquerda (ou junção esquerda)
  • Junção externa direita (ou junção direita)
  • Junção externa completa (ou junção completa)

Cada uma dessas junções externas se refere à parte dos dados que estão sendo comparados, combinados e retornados. Às vezes, os nulos serão produzidos nesse processo, pois alguns dados são compartilhados enquanto outros não são.

Junção externa esquerda

Uma junção externa esquerda retornará todos os dados da Tabela 1 e todos os dados compartilhados (portanto, a parte interna do exemplo do diagrama de Venn), mas apenas os dados correspondentes da Tabela 2, que é a junção direita.

Exemplo de junção esquerda

No nosso banco de dados de exemplo, existem dois produtos - laranjas e tomates - à esquerda (Preços tabela) que não possuem uma entrada correspondente na 'direita' (tabela Quantidades). Em uma junção esquerda, essas linhas são incluídas no conjunto de resultados com um NULL na coluna Quantidade. As outras linhas no resultado são iguais à junção interna.

Junção externa direita

Uma junção externa direita retorna os dados da Tabela 2 e todos os dados compartilhados, mas apenas os dados correspondentes da Tabela 1, que é a junção esquerda.

Exemplo de junção direita

Semelhante ao exemplo de junção esquerda, a saída de uma junção externa direita inclui todas as linhas da junção interna e duas linhas - brócolis e abóbora - da 'direita' (Quantidades tabela) que não possuem entradas correspondentes à esquerda.

Junção externa completa

Uma junção externa completa, ou junção completa, que é não suportado pelo popular sistema de gerenciamento de banco de dados MySQL, combina e retorna todos dados de duas ou mais tabelas, independentemente de haver informações compartilhadas. Pense em uma junção completa simplesmente duplicando todas as informações especificadas, mas em uma tabela, em vez de várias tabelas. Onde faltam dados correspondentes, nulos serão produzidos.

Estes são apenas os princípios básicos, mas muitas coisas podem ser feitas com junções. Existem até junções que podem excluir outras junções!

Vídeo Explicando junções internas x externas

Este vídeo explica a diferença entre vários tipos de junções. É planejado para começar no ponto em que a discussão sobre junções começa.

Referências

  • Diferença entre junção interna e externa - Estouro de pilha
  • Junção interna do SQL - Quackit
  • Junção externa do SQL - Quackit
  • Usando junções internas - Microsoft SQL Server
  • Usando junções externas - Microsoft SQL Server
  • Representação visual de junções SQL - CodeProject
  • Wikipedia: Associação (SQL)