JUNÇÃO NATURAL e COMPLETA
JUNÇÃO EXTERIOR COMPLETA
A FULL OUTER JOIN
, também referido como FULL JOIN
, combina as características de ambos LEFT JOIN
e RIGHT JOIN
, incluindo todas as linhas de ambas as tabelas no conjunto de resultados.
Se houver uma linha correspondente entre as tabelas com base na ON
cláusula, as colunas de ambas as tabelas serão preenchidas. No entanto, se uma linha em uma tabela não tiver uma correspondência na outra tabela, as colunas da tabela incomparável exibirão valores nulos.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
FULL OUTER JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
Essa consulta combina todas as linhas das sales.customers
tabelas e sales.orders
, garantindo que nenhum dado seja excluído de nenhum dos lados. A ON
cláusula estabelece a relação entre as duas tabelas combinando a customer_id
coluna.
Se uma linha em uma tabela não tiver correspondência correspondente na outra tabela, as colunas incomparáveis retornarão valores nulos.
Você usaria essa abordagem para uma visão abrangente de todos os clientes e pedidos, incluindo cenários em que um não tem um registro associado no outro.
JUNÇÃO NATURAL
NATURAL JOIN
é um tipo de junção SQL que simplifica o processo de combinação de tabelas combinando automaticamente colunas com o mesmo nome e tipos de dados compatíveis de ambas as tabelas.
Ao contrário das junções explícitas, em que a relação entre tabelas é definida usando uma ON
cláusula, NATURAL JOIN
depende de nomes de colunas para identificar atributos compartilhados. Ele garante que apenas linhas com valores idênticos nas colunas correspondentes sejam incluídas no conjunto de resultados, filtrando efetivamente as incompatibilidades.
Essa abordagem é útil quando as tabelas que estão sendo unidas possuem relações claramente definidas e nomes de colunas correspondentes, pois reduz a necessidade de especificação manual de condições de junção.
No entanto, os usuários devem ter cuidado, pois confiar puramente em nomes de colunas pode levar a resultados não intencionais se as tabelas contiverem colunas com nomes idênticos, mas dados não relacionados.
SELECT c.customer_name, o.order_id
FROM sales.customers AS c
NATURAL JOIN sales.orders AS o;
Esta consulta combina as sales.customers
tabelas e sales.orders
fazendo a correspondência automática de colunas com o mesmo nome e tipos de dados compatíveis, como customer_id
.