Junção externa SQL

Juncao Externa Sql



Nem é preciso dizer que as junções são um dos recursos mais identificáveis ​​dos bancos de dados relacionais. As junções nos permitem combinar os dados de uma ou mais tabelas com base em uma condição relacionada para criar uma operação de dados coerente.

Existem vários tipos de junções em SQL, cada uma com uma maneira única de lidar com os dados das tabelas participantes ou do conjunto resultante. Um dos tipos mais comuns de junção em SQL é OUTER JOIN.







Um OUTER JOIN em SQL recupera todas as linhas correspondentes das tabelas envolvidas, bem como as linhas não correspondentes de uma ou ambas as tabelas. É útil quando você lida com tabelas que contêm valores NULL ou conjuntos ausentes.



Vamos explorar mais detalhadamente o que essas junções fazem, como funcionam e como podemos usá-las em um banco de dados SQL.



Requisitos:

Para este tutorial, trabalharemos com MySQL 8.0 e usaremos o banco de dados de amostra Sakila. No entanto, sinta-se à vontade para usar qualquer outro conjunto de dados que considere aplicável.





Tipos de junções externas

Existem três tipos principais de OUTER JOINS em SQL. Esses tipos de OUTER JOINS incluem:

  1. Esquerda OUTER JOINS

  2. No caso de LEFT OUTER JOINS, a junção recupera todas as linhas da tabela esquerda e apenas as linhas correspondentes da tabela direita. Se não houver linhas correspondentes na tabela direita, a junção retornará os valores NULL para as colunas da tabela direita.



  3. JUNÇÕES EXTERNAS À DIREITA

  4. Isso é semelhante a um RIGHT OUTER JOIN. No entanto, ele recupera todas as linhas da tabela direita, mas apenas as linhas correspondentes da tabela esquerda. Se não houver linhas correspondentes na tabela esquerda, a junção incluirá os valores NULL para as colunas na tabela esquerda.

  5. JUNÇÕES EXTERNAS COMPLETAS

  6. Por último, temos o FULL OUTER JOINS. Este tipo de junção combina as junções externas RIGHT e LEFT. Como resultado, a junção recupera todas as linhas quando há uma correspondência na tabela esquerda ou direita. Se não houver correspondência, a junção retornará os valores NULL para as colunas da tabela sem correspondência.

Sintaxe do SQL OUTER JOIN

O seguinte expressa a sintaxe de um SQL OUTER JOIN. No entanto, é bom ter em mente que a sintaxe pode variar ligeiramente dependendo do mecanismo de banco de dados de destino.

A seguir está uma estrutura geral:

SELECIONAR colunas
DA tabela1
[ESQUERDA | CERTO | COMPLETO] OUTER JOIN tabela2
ON tabela1.nome_coluna = tabela2.nome_coluna;

A sintaxe de um OUTER JOIN em SQL é bastante autoexplicativa.

Exemplos:

Vejamos alguns exemplos de uso de como podemos aplicar os vários tipos de OUTER JOINS em SQL.

Como mencionamos, usaremos o banco de dados de amostra Sakila para demonstração. Neste caso, utilizamos as tabelas “cliente” e “pagamento”.

Exemplo 1: LEFT OUTER JOIN

Vamos começar com um OUTER JOIN. Suponha que queiramos recuperar todas as informações do cliente junto com suas informações de pagamento, se disponíveis.

Isso torna LEFT OUTER JOIN aplicável, pois queremos todas as informações do cliente (à esquerda) e informações de pagamento, se disponíveis (à direita).

Caso o cliente não tenha efetuado nenhum pagamento, a junção mostrará os valores NULOS para as colunas relacionadas ao pagamento.

Um exemplo é o seguinte:

SELECIONAR
c.id_do_cliente,
c.primeiro_nome,
c.último_nome,
valor p.,
p.data_pagamento
DE
cliente c
Pagamento LEFT OUTER JOIN p
SOBRE
c.id_do_cliente = p.id_do_cliente;

Na consulta fornecida, incluímos as colunas “customer_id”, “first_name” e “last_name” da tabela “customer”. Também incluímos o valor e “data_pagamento” da tabela “pagamento”.

Em seguida, realizamos um LEFT OUTER JOIN entre as tabelas “cliente” e “pagamento” com base no “customer_id”.

Estes são todos os clientes (com pagamento efetuado ou não) junto com seus dados de pagamento (se houver).

Um exemplo de saída é o seguinte:

Exemplo 2: RIGHT OUTER JOIN

Agora, vamos passar para RIGHT OUTER JOIN. Suponha que desejamos incluir todas as informações de pagamento e o cliente associado neste caso, se houver.

Neste caso, se o pagamento for efetuado por um cliente, o join exibirá os dados desse cliente. Se houver um pagamento sem cliente associado, serão mostrados os valores NULL para as colunas relacionadas ao cliente.

SELECIONAR
c.id_do_cliente,
c.primeiro_nome,
c.último_nome,
valor p.,
p.data_pagamento
DE
cliente c
RIGHT OUTER JOIN pagamento p
SOBRE
c.id_do_cliente = p.id_do_cliente;

O conjunto resultante é o seguinte:

Exemplo 3: JUNÇÃO EXTERIOR COMPLETA

Um FULL OUTER JOIN, por outro lado, recupera todas as informações e pagamentos do cliente. Isto inclui todos os clientes e todos os pagamentos e mostra os valores NULL onde não há correspondência entre as tabelas.

SELECIONAR
c.id_do_cliente,
c.primeiro_nome,
c.último_nome,
valor p.,
p.data_pagamento
DE
cliente c
Pagamento FULL OUTER JOIN p
SOBRE
c.id_do_cliente = p.id_do_cliente;

É bom ter em mente que o MySQL não suporta nativamente FULL OUTER JOIN. Você tem que fazer alguma mágica de jiujitsu com LEFT JOIN, UNION e RIGHT JOIN. Muito chato, poderíamos acrescentar.

Conclusão

Neste tutorial, aprendemos tudo sobre OUTER JOINS. Aprendemos o que é OUTER JOIN em SQL, os tipos de OUTER JOINS e os exemplos de como usar esses tipos de OUTER JOINS.