Mecânica de INNER JOIN
Entenda INNER JOIN como um produto cartesiano filtrado, escreva condições de junção e leia a saída de EXPLAIN para junções.
Mecânica de INNER JOIN é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
A junção INNER
INNER JOIN retorna apenas as linhas que têm um par correspondente em AMBAS as tabelas, com base na condição ON.
INNER JOIN básico
Obtenha cada pedido com seu usuário:
SELECT o.id, o.total, u.email
FROM orders o
INNER JOIN users u ON u.id = o.user_id;
-- INNER is the default — you can also write:
SELECT o.id, o.total, u.email
FROM orders o
JOIN users u ON u.id = o.user_id;Várias condições em ON
A cláusula ON é uma expressão booleana comum:
SELECT *
FROM events e
JOIN sessions s
ON s.user_id = e.user_id
AND e.created_at BETWEEN s.start_at AND s.end_at;Apelidos
Os apelidos encurtam as consultas e evitam referências ambíguas a colunas:
SELECT o.id, u.email
FROM orders AS o -- AS is optional
JOIN users AS u ON u.id = o.user_id;Fazendo junções com três ou mais tabelas
Encadeie as junções repetindo a cláusula JOIN:
SELECT o.id, u.email, p.name AS product
FROM orders o
JOIN users u ON u.id = o.user_id
JOIN products p ON p.id = o.product_id;USING (coluna)
Quando a coluna de junção tem o mesmo nome nas duas tabelas, você pode escrever USING — isso elimina a duplicação da coluna na saída:
SELECT o.id, total, email
FROM orders
JOIN users USING (user_id); -- requires both tables to have user_idNATURAL JOIN
Faz a junção em todas as colunas com o mesmo nome — tenha cuidado: isso é frágil quando colunas são adicionadas.
-- Avoid in production code:
SELECT * FROM orders NATURAL JOIN users;Condições de JOIN versus WHERE
Para INNER JOIN, uma condição em ON é logicamente equivalente a uma condição em WHERE. Convenção: os filtros que definem o relacionamento de JOIN ficam em ON; os filtros de linhas ficam em WHERE.
SELECT * FROM orders o
JOIN users u ON u.id = o.user_id -- join condition
WHERE u.country = 'US'; -- row filterMultiplicação de resultados
Se uma linha em A corresponder a três linhas em B, o resultado terá três linhas. Isso é normal — mas surpreende quando você se esquece. Vai agregar? Use COUNT(*) com cuidado.
Prévia da autojunção
Você pode fazer uma junção de uma tabela consigo mesma atribuindo um apelido diferente a cada instância:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;Desempenho de INNER JOIN
As junções internas são rápidas quando:
- A coluna de junção está indexada, especialmente no lado da FK
- Uma tabela é pequena, para uma junção por dispersão, ou ambas estão ordenadas, para uma junção por mesclagem
- Você filtra cedo para manter baixas as quantidades de linhas intermediárias
Recapitulação
INNER JOIN mantém apenas os pares correspondentes.
- JOIN = INNER JOIN por padrão
- ON expressa a condição de junção
- Os apelidos mantêm as consultas curtas
- As colunas de junção devem estar indexadas
Verificação rápida
O que orders INNER JOIN users ON users.id = orders.user_id retorna quando um pedido não tem um usuário correspondente, ou seja, é órfão?
Perguntas Frequentes
A aula “Mecânica de INNER JOIN” é grátis?
Sim — o texto completo de “Mecânica de INNER JOIN” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Mecânica de INNER JOIN”?
Entenda INNER JOIN como um produto cartesiano filtrado, escreva condições de junção e leia a saída de EXPLAIN para junções. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Mecânica de INNER JOIN”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que usar JOIN (recapitulação do modelo relacional)
- Mecânica de INNER JOIN
- LEFT/RIGHT JOIN e junções OUTER
- Junções da tabela consigo mesma e apelidos