JOINS em SQL
JOINS são usados para combinar registros de duas ou mais tabelas com base em uma coluna relacionada entre elas. Dominar os diferentes tipos de JOIN é essencial para trabalhar com bancos de dados relacionais.
INNER JOIN
O INNER JOIN retorna apenas os registros que têm correspondência em ambas as tabelas. É o tipo mais comum de JOIN.
SELECT a.nome, c.nome AS curso
FROM Alunos a
INNER JOIN Cursos c ON a.curso_id = c.id;
Alunos
Cursos
LEFT JOIN
O LEFT JOIN retorna todos os registros da tabela à esquerda (primeira tabela) e os registros correspondentes da tabela à direita (segunda tabela). Se não houver correspondência, os resultados da direita serão NULL.
SELECT a.nome, c.nome AS curso
FROM Alunos a
LEFT JOIN Cursos c ON a.curso_id = c.id;
Alunos
Cursos
RIGHT JOIN
O RIGHT JOIN retorna todos os registros da tabela à direita (segunda tabela) e os registros correspondentes da tabela à esquerda (primeira tabela). Se não houver correspondência, os resultados da esquerda serão NULL.
SELECT a.nome, c.nome AS curso
FROM Alunos a
RIGHT JOIN Cursos c ON a.curso_id = c.id;
Alunos
Cursos
FULL OUTER JOIN
O FULL OUTER JOIN retorna todos os registros quando há uma correspondência na tabela esquerda ou direita. Se não houver correspondência, as colunas da tabela sem correspondência terão NULL.
-- Simulação de FULL OUTER JOIN no MySQL
SELECT a.nome, c.nome AS curso
FROM Alunos a
LEFT JOIN Cursos c ON a.curso_id = c.id
UNION
SELECT a.nome, c.nome AS curso
FROM Alunos a
RIGHT JOIN Cursos c ON a.curso_id = c.id;
CROSS JOIN
O CROSS JOIN retorna o produto cartesiano das duas tabelas - cada linha da primeira tabela é combinada com todas as linhas da segunda tabela.
SELECT a.nome, c.nome AS curso
FROM Alunos a
CROSS JOIN Cursos c;