Quem começa a estudar SQL logo encontra um dos comandos mais importantes para trabalhar com bancos de dados: o JOIN.
Ele permite combinar informações que estão armazenadas em tabelas diferentes, usando uma coluna relacionada entre elas.
Na prática, o JOIN é utilizado quando os dados necessários para uma consulta não estão concentrados em uma única tabela. Em vez de duplicar informações, os bancos de dados costumam organizar os dados em tabelas relacionadas.
O JOIN permite recuperar essas informações em conjunto.
O JOIN é utilizado principalmente para consultar informações relacionadas que estão distribuídas em diferentes tabelas.
Esse recurso é importante porque bancos de dados relacionais costumam organizar os dados em estruturas separadas.
Um sistema de vendas, por exemplo, pode ter tabelas específicas para:
clientes;
produtos;
pedidos;
pagamentos;
funcionários;
fornecedores.
Separar os dados evita a repetição desnecessária de informações e facilita a organização do banco de dados. O JOIN permite reunir essas informações quando uma consulta precisa analisá-las em conjunto.
Existem diferentes tipos de JOIN no SQL. A principal diferença entre eles está na maneira como cada comando trata os registros que possuem ou não correspondência entre as tabelas.
INNER JOIN
O INNER JOIN retorna apenas os registros que possuem correspondência nas duas tabelas.
Considere novamente as tabelas clientes e pedidos. Para listar somente os clientes que possuem pedidos, uma consulta pode ser escrita assim:
SELECT clientes.nome, pedidos.produto
FROM clientes
INNER JOIN pedidos
ON clientes.id = pedidos.cliente_id;
O resultado seria:
nome
produto
Ana
Notebook
Carlos
Celular
Ana
Monitor
A cliente Marina não aparece porque não existe um pedido relacionado ao seu id.
LEFT JOIN
O LEFT JOIN retorna todos os registros da tabela que está à esquerda da consulta e, quando houver correspondência, os dados da tabela à direita.
Exemplo:
SELECT clientes.nome, pedidos.produto
FROM clientes
LEFT JOIN pedidos
ON clientes.id = pedidos.cliente_id;
Nesse caso, Marina também aparece no resultado. Como ela não possui um pedido relacionado, a coluna correspondente da tabela pedidos será apresentada como NULL.
Esse tipo de JOIN é útil quando a consulta precisa manter todos os registros da tabela principal, mesmo que não exista uma correspondência na outra tabela.
RIGHT JOIN
O RIGHT JOIN funciona de maneira semelhante ao LEFT JOIN, mas prioriza todos os registros da tabela que está à direita da consulta.
SELECT clientes.nome, pedidos.produto
FROM clientes
RIGHT JOIN pedidos
ON clientes.id = pedidos.cliente_id;
Assim, todos os registros de pedidos serão considerados, mesmo que algum deles não tenha uma correspondência na tabela clientes.
Na prática, o RIGHT JOIN aparece com menos frequência em muitos projetos, já que a mesma lógica pode ser obtida reorganizando as tabelas e utilizando um LEFT JOIN.
FULL OUTER JOIN
O FULL OUTER JOIN combina o comportamento dos dois lados. Ele retorna todos os registros das duas tabelas, independentemente de existir correspondência.
Quando não há correspondência, os campos da tabela que não possui aquele registro aparecem como NULL.
A sintaxe é:
SELECT clientes.nome, pedidos.produto
FROM clientes
FULL OUTER JOIN pedidos
ON clientes.id = pedidos.cliente_id;
Esse tipo de JOIN é útil para identificar tanto os registros que possuem correspondência quanto aqueles que existem somente em uma das tabelas.
É importante observar que a disponibilidade do FULL OUTER JOIN depende do sistema de gerenciamento de banco de dados utilizado.
A diferença está principalmente nos registros que cada tipo mantém no resultado.
Tipo
O que retorna
INNER JOIN
Apenas registros com correspondência nas duas tabelas
LEFT JOIN
Todos os registros da tabela da esquerda e as correspondências da direita
RIGHT JOIN
Todos os registros da tabela da direita e as correspondências da esquerda
FULL OUTER JOIN
Todos os registros das duas tabelas, com ou sem correspondência
Uma forma simples de memorizar é pensar em qual lado da relação precisa ser preservado.
Se a prioridade é manter todos os registros da primeira tabela, o LEFT JOIN pode ser adequado. Se a consulta precisa somente dos registros presentes nos dois lados, o INNER JOIN costuma ser a escolha.
Para entender JOIN, também é importante conhecer dois conceitos comuns em bancos de dados relacionais: chave primária e chave estrangeira.
A chave primária identifica de maneira única um registro dentro de uma tabela. Já a chave estrangeira é utilizada para estabelecer uma relação com outra tabela.
No exemplo dos clientes e pedidos:
clientes
id → chave primária
pedidos
cliente_id → chave estrangeira
A relação pode ser estabelecida pela condição:
ON clientes.id = pedidos.cliente_id
O ON informa ao SQL como as tabelas devem ser relacionadas.
Qual JOIN usar?
A escolha depende do resultado que a consulta precisa produzir.
INNER JOIN: quando somente registros que possuem correspondência interessam.
LEFT JOIN: quando todos os registros da tabela principal precisam aparecer, mesmo sem correspondência.
RIGHT JOIN: quando todos os registros da tabela posicionada à direita precisam ser preservados.
FULL OUTER JOIN: quando é necessário considerar todos os registros das duas tabelas.
Para quem está começando, dominar primeiro o INNER JOIN e o LEFT JOIN costuma facilitar o entendimento das demais variações.
Por que aprender JOIN é importante para estudar SQL?
O JOIN está entre os recursos fundamentais para quem trabalha com bancos de dados e SQL. Consultas reais frequentemente precisam reunir informações armazenadas em diferentes tabelas.
Profissionais de análise de dados, desenvolvimento de software, engenharia de dados e administração de bancos de dados podem utilizar JOINs para consultar e cruzar informações.
Por isso, entender como as tabelas se relacionam é uma etapa importante para avançar no aprendizado de SQL.
JOIN é um recurso do SQL utilizado para combinar dados de duas ou mais tabelas a partir de uma relação entre seus registros.
Quais são os tipos de JOIN?
Os principais tipos são INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL OUTER JOIN. Alguns sistemas também oferecem outras operações relacionadas, como CROSS JOIN.
Qual a diferença entre INNER JOIN e LEFT JOIN?
O INNER JOIN retorna somente registros que possuem correspondência nas duas tabelas. O LEFT JOIN mantém todos os registros da tabela da esquerda, mesmo quando não existe correspondência na tabela da direita.
JOIN é usado somente com duas tabelas?
Não. Uma consulta SQL pode utilizar vários JOINs para relacionar três ou mais tabelas.
JOIN precisa usar chave estrangeira?
Não obrigatoriamente. O JOIN depende de uma condição de relacionamento definida na consulta. Porém, em bancos de dados relacionais, é comum que essa relação seja feita entre uma chave primária e uma chave estrangeira.
Para continuar estudando SQL, o próximo passo é praticar consultas com SELECT, WHERE, GROUP BY, ORDER BY e diferentes tipos de JOIN. Isso ajuda a entender como os comandos trabalham em conjunto para consultar dados em um banco de dados.
Construa sua carreira em tecnologia com formações alinhadas ao mercado
Se você quer ingressar ou crescer no mercado de tecnologia, a Allevo Tech oferece formações práticas em áreas de alta demanda, como Engenharia de Software, Ciência de Dados e Inteligência Artificial.
As trilhas são estruturadas para desenvolver competências técnicas e preparar você para os desafios do mercado de trabalho.
Clique no botão abaixo e conheça as formações da Allevo Tech que podem impulsionar a sua trajetória profissional.