Ramos da InformáticaBanco de DadosEntenda SQL Join: INNER-JOIN, LEFT-JOIN, RIGHT-JOIN e Mais

Entenda SQL Join: INNER-JOIN, LEFT-JOIN, RIGHT-JOIN e Mais

Neste artigo vamos explicar como funcionam as instruções de consultas SQL Inner, Left, Right, Outer/Full e Cross Join

-

Ramos da Informática
JS TS IA

Pesquisa: Como você está usando IA na sua rotina Dev?

Responda em menos de 2 minutos e ajude a direcionar nossos próximos artigos técnicos, guias e conteúdos.

Responder Pesquisa →

Os comandos JOIN no SQL são fundamentais para combinar e relacionar dados entre múltiplas tabelas em um banco de dados relacional. Cada tipo de JOIN – INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN e CROSS JOIN – possui uma função específica, permitindo extrair informações detalhadas e relevantes para análises e aplicações. Neste guia completo, você entenderá como cada JOIN funciona, verá exemplos práticos e aprenderá a aplicar essas operações de maneira eficiente para resolver problemas comuns em SQL. Quer seja para otimizar relatórios, consolidar dados ou simplificar consultas, dominar os JOINs é essencial para qualquer desenvolvedor ou analista de dados. Vamos explorar cada tipo de JOIN e ver como eles podem transformar a forma como você consulta seus dados.

Entenda SQL Join

Para exemplo vamos tomar estas duas tabelas (Tabela A e Tabela B):

Dica de Leitura: Se você está aprofundando seus conhecimentos em SQL e desenvolvimento de banco de dados, não perca a oportunidade de explorar como a inteligência artificial pode ajudar na codificação. Aprenda a usar o OpenAI Codex com mais eficiência e descubra como essa ferramenta pode simplificar sua rotina de programação, seja com SQL ou com outras linguagens de programação. Confira nosso guia completo em Guia para usar o OpenAI Codex com mais eficiência

Tabela exemplo de Inner Left Right Outer Full e Cross Join

Usando ambas as tabelas em todos os exemplos, vamos ilustrar os tipos mais comuns de join.

Inner Join

INNER JOIN é uma cláusula que permite a junção entre duas ou mais tabelas, desde que hajam entrelaçamento entre todas. INNER JOIN é uma cláusula que permite a junção entre duas ou mais tabelas, desde que hajam entrelaçamento entre todas.

diagrama de inner join

Esse é um formato comum de join, que retorna dados apenas quando as duas tabelas tem chaves correspondentes na cláusula ON do join.

Query:

SELECT TabelaA.*, TabelaB.* FROM TabelaA INNER JOIN TabelaB ON TabelaA.Chave = TabelaB.Chave Resultado: resultado do inner join De forma visual temos como o Inner Join: ilustracao de inner join

SELECT Clientes.Nome, Pedidos.PedidoID FROM Clientes INNER JOIN Pedidos ON Clientes.ClienteID = Pedidos.ClienteID;

Diferença entre INNER JOIN e LEFT JOIN

Enquanto o INNER JOIN combina todos os valores das duas tabelas e retorna no resultado somente as linhas presentes em ambas, o LEFT JOIN traz todas as linhas presentes na tabela 1 (ou tabela da esquerda) com os valores correspondentes da tabela 2.

VAI GOSTAR:

Left Join

Use a operação LEFT JOIN para criar uma junção externa esquerda. As junções externas esquerdas incluem todos os registros da primeira de duas tabelas (a da esquerda), mesmo se não houver valores correspondentes na segunda tabela (à direita). Use uma operação RIGHT JOIN para criar uma junção externa direita.

LEIA TAMBÉM: 21 comandos SQL essenciais para programadores e BI

LIVROS SQL E BANCO DE DADOS RECOMENDADOS:

1. SQL para Análise de Dados: Técnicas avançadas para transformar dados em insights

2. Sistemas de Banco de Dados

Diferença entre INNER JOIN e LEFT JOIN

Enquanto o INNER JOIN combina todos os valores das duas tabelas e retorna no resultado somente as linhas presentes em ambas, o LEFT JOIN traz todas as linhas presentes na tabela 1 (ou tabela da esquerda) com os valores correspondentes da tabela 2.

Exemplo de Left Join

SQL LEFT JOIN

É um dos formatos mais usados de join, que retorna a Tabela A inteira e apenas os registros que coincidirem com a igualdade do join na TabelaB (ou campos nulos para os campos sem correspondência).

Query:

SELECT TabelaA.*, TabelaB.* FROM TabelaA LEFT JOIN TabelaB ON TabelaA.Chave = TabelaB.Chave

Resultado:

resultado da consulta left join

De forma visual temos:

ilustracao de sql left join

INNER JOIN : Retorna registros que possuem valores correspondentes nas duas tabelas; LEFT JOIN: Retorna todos os registros da tabela esquerda e os registros correspondentes da tabela direita; RIGHT JOIN: Retorna todos os registros da tabela da direita e os registros correspondentes da tabela da esquerda.

Outro exemplo:

Você quer listar todos os clientes, incluindo aqueles que ainda não fizeram pedidos.

 

Explicação: Esse LEFT JOIN retorna todos os clientes. Para clientes que não têm pedidos, a coluna PedidoID será NULL.

 

Curso Banco de Dados

Right Join

Retorna todos os registros da tabela direita e os registros correspondentes da tabela esquerda. A RIGHT JOIN combina dados de duas ou mais tabelas. A RIGHT JOIN começa a selecionar dados da tabela “direita” B e a corresponder às linhas da tabela “esquerda” A.

sql Right Join

Segue o mesmo raciocínio do Left Join, mas se aplicando à tabela B em vez da A:

Query:

english-interview-debugger.sh
$ grep -r "senior_dev_communication" ./career
[CRITICAL_ERROR] Código sênior detectado, mas fluência falhou no runtime.
Motivo: Travou na hora de explicar a arquitetura (System Design) em inglês para o gringo.

O mercado internacional não quer um robô de gramática. Quer um dev que saiba defender uma tomada de decisão técnica sob pressão. Destrave sua conversão na Preply com aulas particulares focadas em TI.

$ ./fix-english.sh --target=remote-job
Achar Professor Particular ➔
SELECT TabelaA.*, TabelaB.* FROM TabelaA RIGHT JOIN TabelaB ON TabelaA.Chave = TabelaB.Chave

Resultado:

resultado de sql Right Join

SQL right join 2

Use a operação LEFT JOIN para criar uma junção externa esquerda. As junções externas esquerdas incluem todos os registros da primeira de duas tabelas (a da esquerda), mesmo se não houver valores correspondentes na segunda tabela (à direita). Use uma operação RIGHT JOIN para criar uma junção externa direita.

Full Outer Join

sql 2Por exemplo, isso nos permite ver cada funcionário que está em um departamento e cada departamento que tem um funcionário, mas também ver cada funcionário que não faz parte de um departamento e cada departamento que não tem um funcionário.

Full Outer Join

Conhecida como OUTER JOIN ou simplesmente FULL JOIN, este retorna todos os registros de ambas as tabelas.

Query:

SELECT TabelaA.*, TabelaB.* FROM TabelaA FULL OUTER JOIN TabelaB ON TabelaA.Chave = TabelaB.Chave

Resultado:

resultado de Full Outer Join

Basicamente, Clientes INNER JOIN Pedidos retorna apenas clientes que tenham feito pedidos. Clientes OUTER JOIN Pedidos retorna clientes sem pedidos (as colunas de Pedidos estarão com NULL) e, se a integridade referencial não for imposta, pedidos sem clientes.

Cross Join

A cláusula CROSS JOIN retorna todas as linhas das tabelas por cruzamento, ou seja, para cada linha da tabela esquerda queremos todos os linhas da tabelas direita ou vice-versa. Ele também é chamado de produto cartesiano entre duas tabelas.

Cross Join

Basicamente é o produto cartesiano entre as duas tabelas. Para cada linha de TabelaA, são retornadas todas as linhas de TabelaB.

É mais fácil entender o Cross Join como um “Join sem cláusula ON”, ou seja, todas as combinações de linhas de A e B são devolvidas.

Inclusive, se você fizer um Cross Join com cláusla ON, ele “vira” um mero Inner Join.

Query:

SELECT TabelaA.*, TabelaB.* FROM TabelaA CROSS JOIN TabelaB 

Ou ainda:

SELECT TabelaA.*, TabelaB.* FROM TabelaA, TabelaB 

Resultado:

Resultado de cross join

Embora eu tenha demonstrado um bom uso desse recurso, muito cuidado ao utilizá-lo, especialmente com grandes volumes de dados, uma vez que o CROSS JOIN ou produto cartesiano, cria todas as combinações possíveis entre 2 ou mais ResultSets, cruzando cada linha da tabela A com cada linha da tabela B.

Muitas vezes, observamos JOIN’s (INNER, LEFT, RIGHT) mal construídos e que acabam fazendo um produto cartesiano não intencional, gerando muitas linhas indesejadas e trazendo um problema de performance na consulta.

Uma tabela comparativa

comparativo de joins
Clique na imagem para abrir em uma nova janela e visualizar melhor.

Considerações

Notar que todos os campos pedidos no select sempre retornam (desde que existam na tabela, obviamente), independente de existirem para aquela linha específica.

O que acontece no caso de uma linha ser retornada para apenas uma das tabelas é que os campos da outra vêm com conteúdo null.

Usualmente, caso você precise diferenciar um nulo que realmente exista na tabela de um nulo por falta de correspondência, basta ver se os campos usados na condição do ON não retornaram null também.

Leia também:

VIEWS em SQL: Vantagens e desvantagens

Android SDK Manager via linhas de comando

NOVOS CONTEÚDOS
Livros de DevOps com Kubernets
As melhores extensões do Chrome na Chrome Web Store
Vite: Simplificando a criação de projetos Front-end
Metaverso das Coisas? Tendências tecnológicas para 2023
Certificados Android vazados expõem milhões de smartphones
Google lança ‘Now in Android’ sobre práticas de desenvolvimento
Meta substitui linguagem de programação Java pela Kotlin
Como fazer seu trabalho ser mais reconhecido
10 séries e filmes sobre empreendedorismo para inspirar
ITA oferece 10 cursos de Tecnologia a distância
Risadas no trabalho aumentam engajamento e produtividade
5 passos para expandir os negócios para o mercado internacional
Como trabalhar com Promises JavaScript?
Servidor Apache: o que é, como funciona e como instalar?
Como fazer upload de uma imagem para o S3 usando Node.js?
Editais e programas de financiamento que ainda pode se inscrever em 2022
Setor de Games no Brasil crescerá 50% em cinco anos
Como a blockchain muda a vida de refugiados em Gana
Para que servem os generators no JS?
10 livros e dicas para se tornar um líder técnico – Tech Leader
CISOs estão tornando a segurança das APIs uma prioridade
Clusters kubernetes hackeados por malware via PostgreSQL
Os avatares do Roblox estão prestes a ficar mais expressivos
Participação no Web Summit muda patamar das startups
Ferramentas para rastrear baleias cripto e comprar no mergulho
Plataforma oferece capacitação gratuita em programação
Microsoft Azure: Novos recursos na Microsoft Cloud para Varejo
Inteligência artificial que resolve problemas de programação
Malware mira sites com WordPress e tenta quebrar senhas
MEI terá novo valor de contribuição em 2023
UiPath lista 7 tendências em automação de processos para 2023
Google Docs facilita colocação de código sobre documentos
O lado sombrio de um Super App como o WeChat
Malware CryWiper destrói dados propositalmente
A importância da tecnologia blockchain para a construção da Web3
Sua carreira: Dê propósito ao seu trabalho
12 livros sobre liderança e negócios para ler em 2023
AWS e CNPq oferecem US$ 1,2 milhão em créditos para nuvem
Extensão do Chrome é usado tomar controle e espionagem
Open everything e APIs exigem cuidados com segurança
As certificações mais buscadas pelo mercado de TI
Lançamento da versão educacional gratuita do GameMaker
Um Líder Tecnológico Incomum em inovação e sua empresa?

 

📌 Perguntas Frequentes sobre Junções (JOINs) no SQL

O que é o INNER JOIN no SQL? O INNER JOIN é o tipo de junção mais comum no SQL. Ele retorna apenas os registos que possuem valores correspondentes em ambas as tabelas que estão a ser cruzadas. Se não houver correspondência, a linha é simplesmente ignorada e não aparece nos resultados.

Qual é a diferença principal entre LEFT JOIN e RIGHT JOIN? O LEFT JOIN retorna todos os registos da tabela à esquerda da consulta, além dos correspondentes da tabela à direita (preenchendo com NULL onde não há correspondência). O RIGHT JOIN faz exatamente o oposto, garantindo todos os dados da tabela à direita.

Como funciona o FULL OUTER JOIN? O FULL OUTER JOIN atua como uma combinação do LEFT e do RIGHT. Ele retorna absolutamente todos os registos de ambas as tabelas, quer exista uma correspondência entre elas ou não. Onde a ligação não existir, os dados aparecerão como NULL.

Para que serve o CROSS JOIN nas consultas a bases de dados? O CROSS JOIN devolve o que chamamos de produto cartesiano. Ele cruza cada linha da primeira tabela com todas as linhas da segunda tabela. É bastante útil para gerar combinações exaustivas, mas deve ser usado com precaução em tabelas muito grandes devido ao impacto no desempenho.

Quando devo utilizar um LEFT JOIN em vez de um INNER JOIN? A melhor ocasião para utilizar o LEFT JOIN é quando precisa de manter todos os dados de uma tabela primária visíveis. Por exemplo, ao listar “Todos os Clientes”, quer eles tenham ou não “Encomendas” (tabela secundária). Com o INNER JOIN, os clientes sem encomendas desapareceriam da sua listagem.

Ramos da Informática
JS TS IA

Pesquisa: Como você está usando IA na sua rotina Dev?

Responda em menos de 2 minutos e ajude a direcionar nossos próximos artigos técnicos, guias e conteúdos.

Responder Pesquisa →
Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade dedicado a linguagens de programação, banco de dados, DevOps, Internet das Coisas (IoT), tecnologias da Indústria 4.0, cibersegurança e startups. Com curadoria de conteúdos de qualidade, o projeto é mantido por Ramos de Souza Janones.

Mais recentes

State of AI 2026: A Maturidade da Inteligência Artificial

A inteligência artificial deixou definitivamente o território das experimentações e se consolidou como uma peça de infraestrutura fundamental no...

Construindo um Servidor MCP Personalizado com Node.js

Um guia prático para construir seu próprio servidor MCP para enriquecer as respostas de ferramentas de IA com contexto...

Como gerar tipos TypeScript direto do PostgreSQL com Kanel

Você já passou por aquela situação trágica de adicionar uma coluna nova no banco de dados e esquecer de...

Adeus, VS Code? Por Que o Cursor AI Virou o Favorito dos Devs

Você já imaginou um editor de código que conversa com você, antecipa suas necessidades e escreve trechos inteiros de...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

Python: O Guia Completo para Iniciantes

Se você está começando no mundo da programação ou já ouviu falar da linguagem que domina ciência de dados,...

Pesquisa rápida: Como você está usando IA na prática?

A Inteligência Artificial já está mudando a forma como desenvolvedores estudam, programam, resolvem problemas e criam novas oportunidades profissionais. Mas...

Mais Lidos

Bibliotecas Node.js e React: ArkType, React-nil e File-Type

O artigo “Pacotes e ferramentas Node.js que deveria conhecer”...

Regex e Expressões Regulares: Guia Definitivo

Expressão regular – ou simplesmente REGEX – é uma...

Guia de Equipamento para Streamer

Empresas como Logitech, ThunderX3, Dell, HyperX, Audio Technica, XZONE...

Guia de Desenvolvimento de Jogos

Realizamos uma seleção de 9 livros fundamentais para quem...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

Recursos da Comunidade

Carreira Internacional

JOB NA GRINGA

Meta de Salário Remoto
U$ 5.000/mês

O mapa completo para programadores do Brasil conquistarem contratos internacionais e mudarem de vida financeira.

  • Vagas exclusivas semanais: Membros acessam vagas com 7 dias de antecedência.
  • Workshops e lives gravadas: Buscar vagas não é óbvio. Nós te mostraremos como.
  • 498 Portais de vagas: Que contratam Brasileiros direto na sua dashboard.
  • Mentorias com Recrutadores: Encontros semanais ao vivo com Erika Linares.
  • Inglês diário com foco em conversação: Treine para entrevistas num ambiente sem julgamentos.
  • Suporte pós-contratação: Contabilidade e recebimento legal com a menor taxa.
Garantir Minha Vaga

Inscrição segura via Hotmart

Você vai gostarrelacionados
Continue aprendendo

E-Zine Dev Ramos

Quer dominar arquitetura e IA?

Junte-se a +10.000 profissionais. Receba semanalmente estratégias de Node.js, React e IA que nunca publicamos no blog.

Assinar Gratuitamente Zero spam. Cancele quando quiser.