menu
languagePortuguês (Brasil)
save_alt Baixar

Guia rápido de SQL JOIN

Referência rápida de todos os tipos de SQL JOIN com diagramas visuais e exemplos de código

INNER JOIN MAIS COMUM

Retorna apenas as linhas que têm valores correspondentes nas duas tabelas. É o tipo de JOIN padrão e o mais usado.
SELECT orders.id, customers.name, orders.amount
FROM orders
INNER JOIN customers
  ON orders.customer_id = customers.id

Pontos principais:

  • Retorna apenas registros correspondentes das duas tabelas
  • Filtra automaticamente as linhas sem correspondência
  • JOIN mais eficiente em desempenho
  • Pode ser escrito apenas como JOIN (o INNER fica implícito)

LEFT JOIN

Retorna todas as linhas da tabela da esquerda e as linhas correspondentes da tabela da direita. Se não houver correspondência, são retornados valores NULL nas colunas da tabela da direita.
SELECT customers.name, orders.amount
FROM customers
LEFT JOIN orders
  ON customers.id = orders.customer_id

Pontos principais:

  • Preserva todos os registros da tabela da esquerda (primeira)
  • Valores NULL aparecem nas colunas sem correspondência da tabela da direita
  • Também conhecido como LEFT OUTER JOIN
  • Útil para encontrar registros sem dados relacionados

RIGHT JOIN

Retorna todas as linhas da tabela da direita e as linhas correspondentes da tabela da esquerda. O oposto do LEFT JOIN.
SELECT orders.amount, customers.name
FROM orders
RIGHT JOIN customers
  ON orders.customer_id = customers.id

Pontos principais:

  • Preserva todos os registros da tabela da direita (segunda)
  • Valores NULL aparecem nas colunas sem correspondência da tabela da esquerda
  • Também conhecido como RIGHT OUTER JOIN
  • Sempre pode ser reescrito como um LEFT JOIN

FULL OUTER JOIN

Retorna todas as linhas das duas tabelas, com valores NULL onde não há correspondência em nenhuma das direções.
SELECT customers.name, orders.amount
FROM customers
FULL OUTER JOIN orders
  ON customers.id = orders.customer_id

Pontos principais:

  • Combina os resultados de LEFT e RIGHT JOIN
  • Mostra todos os registros das duas tabelas
  • Não é suportado no MySQL (use UNION no lugar)
  • Útil para encontrar todos os relacionamentos e lacunas

CROSS JOIN USE COM CUIDADO

Retorna o produto cartesiano das duas tabelas - cada linha da primeira tabela combinada com cada linha da segunda tabela.
SELECT sizes.name, colors.name
FROM sizes
CROSS JOIN colors

-- Alternative syntax
SELECT sizes.name, colors.name
FROM sizes, colors

Pontos principais:

  • Não precisa de cláusula ON (sem condição de join)
  • Número de linhas do resultado = (linhas da tabela da esquerda × linhas da tabela da direita)
  • Pode gerar rapidamente conjuntos de resultados enormes
  • Útil para gerar combinações ou dados de teste

LEFT ANTI JOIN

Retorna as linhas da tabela da esquerda que não têm correspondência na tabela da direita. Útil para encontrar registros sem relacionamentos.
SELECT customers.name
FROM customers
LEFT JOIN orders
  ON customers.id = orders.customer_id
WHERE orders.id IS NULL

-- Alternative: NOT EXISTS
SELECT customers.name
FROM customers
WHERE NOT EXISTS (
  SELECT 1 FROM orders
  WHERE orders.customer_id = customers.id
)

Pontos principais:

  • Implementado com LEFT JOIN + WHERE IS NULL
  • Encontra registros sem dados relacionados
  • Também chamado de "LEFT EXCLUDING JOIN"
  • Exemplo: clientes que nunca fizeram um pedido

RIGHT ANTI JOIN

Retorna as linhas da tabela da direita que não têm correspondência na tabela da esquerda. O oposto do LEFT ANTI JOIN.
SELECT orders.id
FROM customers
RIGHT JOIN orders
  ON customers.id = orders.customer_id
WHERE customers.id IS NULL

-- Usually rewritten as LEFT ANTI JOIN
SELECT orders.id
FROM orders
LEFT JOIN customers
  ON orders.customer_id = customers.id
WHERE customers.id IS NULL

Pontos principais:

  • Implementado com RIGHT JOIN + WHERE IS NULL
  • Encontra registros órfãos na tabela da direita
  • Sempre pode ser reescrito como LEFT ANTI JOIN
  • Exemplo: pedidos sem um cliente válido

Precisa de um jeito melhor de escrever SQL?

O Beekeeper Studio é um editor SQL moderno e intuitivo, com autocompletar, histórico de consultas e suporte a mais de 15 bancos de dados.

Experimente o Beekeeper Studio grátis