Junções SQL Explicadas: INNER, LEFT, RIGHT, CROSS (e a Junção com Vírgula)
Published: 2026-02-04
Junções SQL permitem combinar linhas de duas tabelas com base em colunas relacionadas. Este breve tutorial mostra os quatro tipos principais de junção e explica por que a junção com vírgula é a mesma que uma CROSS JOIN.
Dados de exemplo
Usamos duas tabelas em todos os exemplos:
Tabela employees:
| id | name | dept_id |
|---|---|---|
| 1 | Ava | 10 |
| 2 | Ben | 20 |
| 3 | Cara | NULL |
Tabela departments:
| dept_id | dept_name |
|---|---|
| 10 | Sales |
| 20 | Engineering |
| 30 | Support |
Experimente as junções no navegador
Você pode executar as consultas de exemplo diretamente na página. Edite a consulta e clique em Run.
INNER JOIN
Retorna apenas as linhas que têm correspondência em ambas as tabelas.
Resultado: Ava/Sales, Ben/Engineering. Cara é excluída porque não tem departamento correspondente, e Support é excluído porque não há funcionário no dept 30.
LEFT JOIN (LEFT OUTER JOIN)
Retorna todas as linhas da tabela da esquerda, mais as linhas correspondentes da tabela da direita. O lado direito sem correspondência se torna NULL.
Resultado: Ava/Sales, Ben/Engineering, Cara/NULL. Todos os funcionários são mantidos.
RIGHT JOIN (RIGHT OUTER JOIN)
Retorna todas as linhas da tabela da direita, mais as linhas correspondentes da tabela da esquerda. O lado esquerdo sem correspondência se torna NULL.
Resultado: Ava/Sales, Ben/Engineering, NULL/Support. Todos os departamentos são mantidos.
Observação: muitos desenvolvedores preferem reescrever
RIGHT JOINcomoLEFT JOIN, invertendo a ordem das tabelas, para melhorar a legibilidade e a consistência.
CROSS JOIN
Retorna o produto cartesiano (todas as combinações) das duas tabelas.
Resultado: 3 × 3 = 9 linhas (cada funcionário combinado com cada departamento).
Junção com vírgula (sintaxe legada)
A junção com vírgula é a mesma que uma CROSS JOIN. Ela lista as tabelas separadas por vírgulas na cláusula FROM:
Isso produz o mesmo produto cartesiano que CROSS JOIN. Se você adicionar um filtro na cláusula WHERE, ela passa a se comportar como um INNER JOIN:
Embora ainda seja válida, a sintaxe com vírgula é considerada ultrapassada porque mistura lógica de junção com filtros e pode ser mais difícil de ler. Dê preferência à sintaxe explícita JOIN ... ON.
DbGate: LEFT JOINs automáticos ao expandir colunas
No navegador de dados do DbGate, ao expandir uma coluna de chave estrangeira é gerada automaticamente uma consulta com LEFT JOIN para trazer os dados relacionados sem descartar linhas da tabela principal. Isso mantém seu conjunto de dados base intacto enquanto torna os campos relacionados disponíveis imediatamente.
Resumo
INNER JOINmantém apenas as linhas correspondentes.LEFT JOINmantém todas as linhas da tabela da esquerda.RIGHT JOINmantém todas as linhas da tabela da direita.CROSS JOINretorna todas as combinações.- A junção com vírgula é a mesma que
CROSS JOIN(e com um filtroWHEREela se torna umINNER JOIN).