Junções (JOINS) no SQL Server: Tipos com exemplos
⚡ Resumo Inteligente
Em SQL Server, as junções (JOINs) combinam linhas de duas ou mais tabelas com base em uma coluna relacionada, usando junções INNER, LEFT OUTER, RIGHT OUTER e FULL OUTER para controlar quais linhas correspondentes e não correspondentes aparecem no resultado.

O que são junções (joins) no SQL Server?
É possível recuperar dados de mais de uma tabela usando a instrução JOIN em SQL ServerUma operação JOIN combina linhas de duas ou mais tabelas com base em uma coluna relacionada entre elas, geralmente uma coluna. chave primária combinado com um chave estrangeiraExistem principalmente quatro tipos de JOINs no SQL Server:
- JUNÇÃO INTERNA / junção simples
- JUNÇÃO EXTERNA À ESQUERDA / JUNÇÃO À ESQUERDA
- JUNÇÃO EXTERNA DIREITA / JUNÇÃO DIREITA
- JUNÇÃO EXTERNA COMPLETA
A tabela abaixo resume quais linhas cada tipo de JOIN retorna:
| Tipo de junção | Linhas retornadas |
| INNER JOIN | Somente as linhas em que a condição de junção coincide em ambas as tabelas. |
| JUNÇÃO EXTERNA ESQUERDA | Todas as linhas da tabela da esquerda, mais as linhas correspondentes da tabela da direita (valores NULL onde não houver correspondência). |
| DIREITO OUTER JOIN | Todas as linhas da tabela da direita, mais as linhas correspondentes da tabela da esquerda (valores NULL onde não houver correspondência). |
| JUNÇÃO EXTERNA COMPLETA | Todas as linhas de ambas as tabelas, com valores NULL sempre que a condição não for atendida. |
Os exemplos abaixo usam dois tabelasAlunos e taxas, unidos pela coluna de admissão em comum. Cada seção explica um tipo de JOIN com sua sintaxe, uma consulta aplicada e o resultado.
INNER JOIN
Este tipo de SQL Server A função JOIN retorna linhas de todas as tabelas em que a condição de junção é verdadeira. Sua sintaxe é a seguinte:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Usaremos as duas tabelas a seguir para demonstrar isso. A tabela Alunos abaixo lista cada aluno e seu número de matrícula:
A tabela de taxas abaixo registra o valor pago por cada número de admissão:
O comando a seguir demonstra um INNER JOIN no SQL Server com um exemplo:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
O comando retorna o seguinte resultado, mostrando apenas os números de admissão presentes em ambas as tabelas:
Podemos identificar quais alunos pagaram a taxa. Utilizamos a coluna com valores em comum nas duas tabelas, que é a coluna de admissão.
JUNÇÃO EXTERNA ESQUERDA
Esse tipo de junção retorna todas as linhas da tabela da esquerda mais os registros da tabela da direita que possuem valores correspondentes. Por exemplo:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
O código retorna o seguinte resultado, keeping todos os alunos, mesmo quando não houver registro de pagamento correspondente:
Os registros sem valores correspondentes são substituídos por NULLs nas respectivas colunas.
DIREITO OUTER JOIN
Este tipo de junção retorna todas as linhas da tabela da direita e apenas aquelas com valores correspondentes na tabela da esquerda. Por exemplo:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
A instrução OUTER JOIN no SQL Server retorna o seguinte resultado:
A razão para a saída acima é que todas as linhas da tabela Taxas estão disponíveis na tabela Alunos quando correspondidas na coluna admissão.
JUNÇÃO EXTERNA COMPLETA
Esse tipo de junção retorna todas as linhas de ambas as tabelas, com valores NULL sempre que a condição de junção não for verdadeira. Por exemplo:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
O código retorna o seguinte resultado para consultas FULL OUTER JOIN em SQL, combinando todas as linhas de ambas as tabelas:






