Diferença entre junção interna e junção externa

Anonim

Junção interna vs Junção externa

Junção interna e Junção externa são dois dos métodos de junção SQL usados ​​no processamento de consultas para bancos de dados. Eles pertencem à família de cláusulas de junção (outras duas são juntas esquerda e direita). No entanto, existe um Self Join que pode ser usado para situações especializadas. O objetivo do Join é combinar campos usando os valores comuns para as duas tabelas. Estes unem combina registros de várias tabelas em um banco de dados. Ele cria conjuntos resultantes, que podem ser salvos como outra tabela.

O que é Inner Join?

A operação de conexão de SQL mais usada é a junção interna. Pode ser considerado como o tipo de junção padrão usado em aplicativos. A junção interna usa o join-predicate para combinar duas tabelas. Supondo que as duas tabelas são A e B, então o predicado união irá comparar as linhas de A e B para descobrir todos os pares que satisfazem o predicado. Os valores das colunas de todas as linhas satisfeitas das tabelas A e B são combinados para criar o resultado. Pode ser olhado como primeiro tendo a junção cruzada (produto cartesiano) de todos os registros e retornando apenas os registros que satisfazem o predicado de junção. No entanto, na realidade, o produto cartesiano não é calculado porque é muito ineficiente. A junção de Hash ou a junção de classificação são usadas, em vez disso.

O que é Outer Join ?

Ao contrário, a junção interna, a junção externa mantém todos os registros mesmo que não consiga encontrar um registro correspondente. Isso significa que a junção externa precisa de um registro para encontrar um registro correspondente para que ele apareça no resultado. Em vez disso, ele retornará todos os registros, mas os registros incomparáveis ​​terão valores nulos. As junções externas são divididas em três sub-categorias. Eles são deixados junção externa, junção externa direita e junção externa completa. Essa diferenciação é baseada na tabela de tabela (tabela esquerda, tabela direita ou ambas as tabelas) retida quando registros incomparáveis ​​são encontrados. As junções externas esquerdas (também conhecidas como simplesmente juntas à esquerda) mantêm todos os registros da tabela à esquerda. Isso significa que, mesmo que o número de registros correspondentes seja zero, ele ainda terá registros na tabela de resultados, mas terá valores nulos para todas as colunas de B. Em outras palavras, todos os valores da tabela à esquerda são retornados com valores correspondentes do direito tabela (ou valores nulos quando incomparável). Se os valores de várias linhas da tabela da esquerda forem combinados com uma única linha da tabela direita, a linha da tabela direita será repetida conforme necessário. A junção externa direita é bastante similar à junção externa esquerda, mas o tratamento das tabelas é reverenciado. Isso significa que o resultado terá todas as linhas da tabela direita pelo menos uma vez com valores de tabela esquerda combinados (e valores nulos para valores de direita incompatíveis). A junção externa completa é mais abrangente do que as junções externas esquerda e direita. Isso resulta em combinar o efeito da aplicação tanto do lado esquerdo como do lado direito juntos.

Qual a diferença entre a junção interna e a junção externa?

A Partida interna não mantém as linhas incomparáveis ​​no resultado, mas a junção externa manterá todos os registros de pelo menos uma tabela (dependendo da união externa usada). Portanto, o comportamento de não ter informações presentes em linhas inigualáveis ​​na tabela de resultados é indesejável, você precisa sempre usar uma das junções externas (no lugar da junção interna). A junção interna pode não produzir um resultado se nenhuma correspondência for encontrada. Mas a junção externa sempre produzirá uma tabela resultante, mesmo sem linhas correspondentes. A junção interna sempre retornará tabelas com valores (se retornados). Mas junções externas podem resultar em tabelas com valores nulos.