Pular para o conteúdo principal
Documentos
FunçõesExpressõesKeywordsDeclaraçõesCláusulas

MySQL OUTER JOIN Palavra-chave

```html

A palavra-chave OUTER JOIN no MySQL é usada para recuperar registros de duas tabelas, incluindo os registros que não têm valores correspondentes nas tabelas relacionadas. Ele garante que todos os registros de uma tabela sejam incluídos nos resultados e, quando nenhuma correspondência é encontrada, NULLs são preenchidos nas colunas da respectiva tabela.

Uso

OUTER JOIN é usado quando você precisa incluir todas as linhas de uma ou ambas as tabelas, independentemente de haver uma correspondência na outra tabela. Há dois tipos principais: LEFT OUTER JOIN (ou simplesmente LEFT JOIN) e RIGHT OUTER JOIN (ou simplesmente RIGHT JOIN).

SELECT columns
FROM table1
LEFT|RIGHT OUTER JOIN table2
ON table1.common_column = table2.common_column;

Nessa sintaxe, a palavra-chave LEFT|RIGHT OUTER JOIN determina quais linhas da tabela são totalmente preservadas no conjunto de resultados.

Observação sobre FULL OUTER JOIN

O MySQL não oferece suporte direto a FULL OUTER JOIN. No entanto, você pode obter resultados semelhantes usando uma combinação de LEFT JOIN e RIGHT JOIN com um UNION.

SELECT columns
FROM table1
LEFT JOIN table2 ON table1.common_column = table2.common_column
UNION
SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.common_column = table2.common_column;

Exemplos

1. Básico LEFT OUTER JOIN

SELECT customers.customer_id, orders.order_id
FROM customers
LEFT OUTER JOIN orders ON customers.customer_id = orders.customer_id;

Essa consulta recupera todos os clientes e seus pedidos, se houver. Os clientes sem pedidos ainda aparecerão no resultado com NULL nas colunas de pedidos.

2. UNIÃO EXTERNA DIREITA

SELECT products.product_id, orders.order_id
FROM products
RIGHT OUTER JOIN orders ON products.product_id = orders.product_id;

Aqui, todos os pedidos são listados, inclusive aqueles para os quais não há entrada de produto correspondente, preenchendo NULL para obter detalhes do produto.

3. Combinação de LEFT JOIN com a cláusula WHERE

SELECT employees.employee_id, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id
WHERE departments.department_name IS NULL;

Essa consulta encontra funcionários não atribuídos a nenhum departamento, listando todos os funcionários e filtrando aqueles com nomes de departamentos NULL.

Dicas e práticas recomendadas

  • Escolha o tipo de união correto. Use LEFT JOIN quando você precisar de todos os registros da primeira tabela e RIGHT JOIN quando precisar de todos os registros da segunda tabela.
  • Tenha em mente o desempenho. OUTER JOIN operações podem ser dispendiosas em termos de desempenho; certifique-se de que os índices sejam usados nas colunas de união. A análise dos planos de execução de consultas pode ajudar a otimizar o desempenho.
  • Tenha cuidado com os NULLs. Considere como seu aplicativo ou as consultas subsequentes tratarão os valores NULL no conjunto de resultados. Use funções como IFNULL() ou COALESCE() para substituir NULL por valores padrão.
  • Use WHERE com cautela. Ao filtrar com WHERE, certifique-se de que ele não anule inadvertidamente o efeito do OUTER JOIN.
```

Aprimoramento de SQL para iniciantes

Adquira as habilidades de SQL para interagir com seus dados e consultá-los.
Comece a aprender de graça