Junção interna x Junção externa
A junção interna e 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 Junções Esquerda e Direita). No entanto, existe uma autoatendimento que pode ser usada para situações especializadas. O objetivo do Join é combinar campos usando os valores comuns para as duas tabelas. Essas junções combinam registros de várias tabelas em um banco de dados. Ele cria conjuntos resultantes, que podem ser salvos como outra tabela.
O que é Junção Interna?
A operação de junção SQL mais usada é a junção interna. Pode ser considerado como o tipo padrão de junção usado nos aplicativos. Junção interna use o predicado de junção para combinar duas tabelas. Supondo que as duas tabelas sejam A e B, o predicado de junção comparará as linhas de A e B para descobrir todos os pares que satisfazem o predicado. Os valores da coluna de todas as linhas satisfeitas das tabelas A e B são combinados para criar o resultado. Ele pode ser visto como primeiro obtendo 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 junção de mesclagem de classificação é usada..
O que é Junção Externa?
Diferentemente da 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 aparecer no resultado. Em vez disso, ele retornará todos os registros, mas os registros não correspondentes terão valores nulos. As junções externas são divididas em três subcategorias. Eles são junção externa esquerda, junção externa direita e junção externa completa. Essa diferenciação baseia-se em qual linha da tabela (tabela esquerda, tabela direita ou ambas as tabelas) é mantida quando registros incomparáveis são encontrados. As junções externas esquerdas (também conhecidas como junções simplesmente à 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 serão retornados com valores correspondentes da direita tabela (ou valores nulos quando incomparáveis). Se os valores de várias linhas da tabela esquerda corresponderem a uma única linha da tabela direita, a linha da tabela direita será repetida conforme necessário. A junção externa direita é semelhante à junção externa esquerda, mas o tratamento das tabelas é reverenciado. Isso significa que o resultado terá todas as linhas da tabela da direita pelo menos uma vez com os valores correspondentes da tabela esquerda (e valores nulos para os valores certos não correspondentes). A junção externa completa é mais abrangente do que as junções externas esquerda e direita. Isso resulta na combinação do efeito da aplicação de juntas externas esquerda e direita unidas.
Qual é a diferença entre Junção Interna e Junção Externa?
A junção interna não mantém as linhas não correspondentes no resultado, mas a junção externa manterá todos os registros de pelo menos uma tabela (dependendo da junção externa usada). Portanto, o comportamento de não haver informações presentes em linhas não correspondentes na tabela de resultados é indesejável; você sempre deve 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.