O resumo anterior mostrou que a junção (⋈) não é um operador primitivo — é produto cartesiano seguido de seleção, R ⋈condição S = σcondição(R × S). Mas essa definição formal não diz o que fazer com as tuplas de R ou S que não encontram par do outro lado da condição. É exatamente aí que entram os tipos de junção cobrados na prática — interna, externa e natural —, cada um dando um destino diferente para essas tuplas “sem correspondência”.
Neste resumo, você vai entender a diferença entre preservar e descartar tuplas sem par, os três sabores de junção externa (esquerda, direita e completa), e o que realmente distingue a junção natural das demais — não é “mais um tipo”, é uma forma automática de aplicar equijunção eliminando colunas repetidas.
📲 Canal Oficial do Dicionário do Concurseiro no WhatsApp
Receba resumos, questões comentadas e novidades diretamente no seu celular!
💡 Conteúdo exclusivo para concurseiros. Totalmente gratuito!
🔒 Junção interna (inner join)
Junção interna é exatamente o que o resumo anterior formalizou: σcondição(R × S). Ela mantém apenas as tuplas que satisfazem a condição — se uma tupla de R não encontra nenhuma tupla correspondente em S (ou vice-versa), ela é descartada do resultado. É o comportamento padrão de junção-theta e de equijunção vistos anteriormente, e o que o SQL implementa com INNER JOIN (ou apenas JOIN, sem qualificador).
Por descartar tuplas sem par, a junção interna pode perder informação: se um departamento não tem nenhum funcionário cadastrado, uma junção interna entre Departamento e Funcionário simplesmente não mostra esse departamento no resultado — mesmo que ele exista na relação de origem.
↔️ Junção externa (outer join): preservando quem ficou de fora
A junção externa resolve exatamente esse problema: ela preserva as tuplas sem correspondência, preenchendo com valores nulos (NULL) os atributos da relação que não teve par. Existem três variações, e a banca cobra a diferença entre elas com frequência:
- Junção externa à esquerda (left outer join, ⟕): preserva todas as tuplas de R (a relação da esquerda), mesmo sem correspondência em S — os atributos de S vêm como NULL nesses casos;
- Junção externa à direita (right outer join, ⟖): preserva todas as tuplas de S (a relação da direita), mesmo sem correspondência em R — o espelho exato da anterior;
- Junção externa completa (full outer join, ⟗): preserva as tuplas de R e de S, com ou sem correspondência — é a união do resultado da esquerda com o resultado da direita.
Em SQL, isso é LEFT JOIN, RIGHT JOIN e FULL OUTER JOIN — mas atenção: nem todo SGBD implementa FULL OUTER JOIN nativamente (o MySQL, por exemplo, não tem esse comando e exige simular com UNION de LEFT JOIN e RIGHT JOIN). Uma forma prática de fixar: “esquerda” e “direita” indicam qual lado da junção é garantido no resultado, não qual lado tem mais linhas na tabela original.
🔗 Junção natural (natural join, ⋈)
A junção natural é um caso particular de equijunção que acontece automaticamente sobre todos os atributos com o mesmo nome nas duas relações — sem que seja preciso escrever a condição de igualdade explicitamente. Duas diferenças centrais em relação à equijunção comum:
- A condição de igualdade é implícita: a junção natural identifica sozinha os atributos com nomes iguais e compara todos eles com igualdade (encadeados com E lógico, se houver mais de um);
- As colunas duplicadas são eliminadas do resultado: enquanto a equijunção comum mantém as duas colunas usadas na comparação (ex.:
R.dept_ideS.dept_id, lado a lado e repetidas), a junção natural devolve uma única coluna para cada atributo compartilhado.
Consequência direta sobre o grau do resultado: diferente do produto cartesiano genérico, onde o grau soma os graus de R e S, o grau da junção natural é grau(R) + grau(S) − número de atributos compartilhados, porque as colunas duplicadas somem no resultado. Em SQL, essa semântica equivale à cláusula NATURAL JOIN — suportada em PostgreSQL e MySQL, mas ausente no SQL Server, que exige escrever a condição de igualdade manualmente mesmo quando os nomes das colunas coincidem.
Essa automação é também o maior risco da junção natural: se duas relações tiverem, por coincidência, um atributo de mesmo nome que não deveria ser usado como critério de junção, o resultado sai errado silenciosamente — sem erro de sintaxe, só com uma junção semanticamente incorreta.
⚠️ Pegadinhas comuns
- Interna descarta, externa preserva: essa é a distinção mais básica e mais cobrada — junção interna só mantém o que casa dos dois lados; junção externa preenche com NULL o que não casa;
- Esquerda x direita não é sobre tamanho da tabela: “left” e “right” se referem à posição na expressão da junção (qual relação tem suas tuplas garantidas), não a qual tabela tem mais registros;
- Full outer = left + right: a junção externa completa pode ser entendida como a união do resultado da externa à esquerda com o da externa à direita, eliminando duplicatas das tuplas que casam nos dois lados;
- Junção natural não é “mais um tipo” independente: é uma equijunção automática sobre atributos de mesmo nome, com eliminação das colunas duplicadas — pode ser combinada com interna ou externa (ex.: natural left outer join);
- Nome igual por acidente quebra a junção natural: um atributo homônimo que não representa o mesmo dado (ex.: duas tabelas com coluna “status” de significados diferentes) faz a junção natural comparar coisas que não deveriam ser comparadas.
🎯 Dica Final para a Prova
Quando a questão pedir para identificar o tipo de junção, primeiro cheque se há descarte ou preservação de tuplas sem par (interna x externa); depois, se for externa, identifique qual lado é garantido (esquerda, direita ou os dois, na completa). Se a questão mencionar “eliminação de colunas duplicadas” ou “condição implícita sobre atributos homônimos”, ela está descrevendo junção natural — não confunda com equijunção comum, que mantém as colunas repetidas e exige a condição escrita explicitamente.
✓ Agora que você domina os tipos de junção usados na prática, o próximo passo é um operador menos intuitivo da álgebra relacional: a divisão relacional.
📍Gostou do conteúdo? Deixe um comentário, compartilhe e continue acompanhando o Dicionário do Concurseiro para mais Resumos de TI – Banco de Dados. Aqui você encontra explicações claras, atualizadas e com foco total no que cai em prova!
👉 Leia também no Dicionário do Concurseiro: Resumo TI Banco de Dados: Divisão Relacional
📘 Interna descarta quem não casa, externa preserva com NULL, natural automatiza a igualdade e elimina colunas repetidas. Três perguntas, três respostas — decore a lógica, não decore casos isolados. Continue estudando!
Comentários
Seja o primeiro a comentar.
Você precisa fazer o login para publicar um comentário.