O que são JOINs?
JOINs são operações que permitem combinar dados de duas ou mais tabelas baseando-se em uma relação entre elas. São fundamentais para trabalhar com bancos de dados relacionais.
INNER JOIN
Retorna apenas os registros que têm correspondência em ambas as tabelas.
LEFT JOIN
Retorna todos os registros da tabela esquerda e os correspondentes da direita.
RIGHT JOIN
Retorna todos os registros da tabela direita e os correspondentes da esquerda.
FULL JOIN
Retorna todos os registros quando há correspondência em uma das tabelas.
Exemplo Básico
FROM clientes
INNER JOIN pedidos ON clientes.id = pedidos.cliente_id;
Esta query retorna o nome dos clientes e o valor de seus pedidos, mostrando apenas clientes que fizeram pedidos.
🔗 Como Funciona o JOIN - Explicação Detalhada
🏠 Analogia: Juntando Informações de Duas Listas
Imagine que você tem duas listas em casa:
📋 Lista 1: Pessoas da Família
- • João (ID: 1)
- • Maria (ID: 2)
- • Pedro (ID: 3)
🎂 Lista 2: Aniversários
- • Pessoa ID: 1 → 15/03
- • Pessoa ID: 2 → 22/07
- • Pessoa ID: 4 → 10/12
O JOIN é como juntar essas duas listas para saber "Qual o nome da pessoa E quando é seu aniversário". Você conecta as listas usando o ID da pessoa!
⚙️ Como o JOIN Funciona - Passo a Passo
O banco de dados pega a primeira tabela (clientes)
Ele vai linha por linha na tabela de clientes
Para cada cliente, procura na segunda tabela (pedidos)
Usa a condição clientes.id = pedidos.cliente_id
Se encontrar correspondência, junta as informações
Cria uma nova linha com dados das duas tabelas
Retorna apenas o que você pediu no SELECT
No nosso exemplo: nome do cliente + valor do pedido
📝 Quebrando a Sintaxe do JOIN
FROM clientes
INNER JOIN pedidos ON clientes.id = pedidos.cliente_id;
SELECT clientes.nome, pedidos.valor
📋 O que queremos ver: Nome da tabela clientes + valor da tabela pedidos
FROM clientes
🏠 Tabela principal: Começamos pela tabela clientes
INNER JOIN pedidos
🔗 Juntamos com: A tabela pedidos (só mostra quem tem correspondência)
ON clientes.id = pedidos.cliente_id
🎯 Condição de ligação: Como as tabelas se conectam
👀 Exemplo Visual: Antes e Depois do JOIN
📋 Tabela: clientes
| id | nome |
|---|---|
| 1 | João |
| 2 | Maria |
| 3 | Pedro |
🛒 Tabela: pedidos
| id | cliente_id | valor |
|---|---|---|
| 101 | 1 | R$ 150 |
| 102 | 1 | R$ 200 |
| 103 | 2 | R$ 75 |
✨ Resultado do JOIN
| nome | valor |
|---|---|
| João | R$ 150 |
| João | R$ 200 |
| Maria | R$ 75 |
🔍 Observe: Pedro não aparece no resultado porque ele não tem pedidos! O INNER JOIN só mostra registros que existem nas duas tabelas.
🎯 Diferentes Tipos de JOIN
🔗 INNER JOIN
Mostra apenas registros que existem nas duas tabelas
FROM clientes c
INNER JOIN pedidos p ON c.id = p.cliente_id;
Resultado: João, Maria (Pedro não tem pedidos)
⬅️ LEFT JOIN
Mostra TODOS da tabela esquerda + correspondentes da direita
FROM clientes c
LEFT JOIN pedidos p ON c.id = p.cliente_id;
Resultado: João, Maria, Pedro (NULL)
➡️ RIGHT JOIN
Mostra TODOS da tabela direita + correspondentes da esquerda
FROM clientes c
RIGHT JOIN pedidos p ON c.id = p.cliente_id;
Resultado: Todos os pedidos, mesmo sem cliente
🔄 FULL JOIN
Mostra TODOS os registros de ambas as tabelas
FROM clientes c
FULL JOIN pedidos p ON c.id = p.cliente_id;
Resultado: Tudo, com NULLs onde não há correspondência
⚠️ Dicas Importantes para Evitar Erros
❌ Erro Comum: Esquecer o ON
Sempre especifique como as tabelas se conectam:
❌ ERRADO:
SELECT * FROM clientes JOIN pedidos
✅ CORRETO:
SELECT * FROM clientes JOIN pedidos ON clientes.id = pedidos.cliente_id
🏷️ Use Aliases para Facilitar
Dê apelidos curtos para as tabelas:
SELECT c.nome, p.valor FROM clientes c JOIN pedidos p ON c.id = p.cliente_id
🎯 Seja Específico com Colunas
Quando duas tabelas têm colunas com o mesmo nome:
SELECT clientes.id, clientes.nome, pedidos.id AS pedido_id
🚀 Performance: Use WHERE Quando Possível
Filtre dados para melhorar a velocidade:
SELECT c.nome, p.valor FROM clientes c JOIN pedidos p ON c.id = p.cliente_id WHERE p.valor > 100
Setup do Supabase
1. Crie seu projeto no Supabase
Acesse supabase.com e crie um novo projeto.
2. Obtenha suas credenciais
Em Settings → API, copie a URL e a anon key do seu projeto.
3. Configure abaixo
Insira suas credenciais do Supabase e seu número de aluno (1-32):