© zaozaa19/Shutterstock.com
As operações SQL JOIN são uma ferramenta poderosa para recuperar dados de várias tabelas em um banco de dados relacional. Seja você um analista de dados experiente ou um programador ou apenas alguém que está começando com bancos de dados, é importante entender os fundamentos das operações JOIN: o que são e como usá-los.
Neste artigo, abordaremos os diferentes tipos de operações JOIN no SQL – INNER, LEFT, RIGHT e FULL – além de fornecer exemplos de cada tipo usando tabelas SQL de exemplo. Vamos começar!
O que São exatamente Joins em SQL?
Na sua essência, uma operação SQL JOIN combina dados de duas ou mais tabelas em um único conjunto de resultados. Esta operação é utilizada quando você precisa recuperar informações de várias tabelas que possuem algum tipo de relacionamento por meio de uma coluna relacionada entre elas. A coluna relacionada é chamada de condição de junção.
A tabela resultante contém todas as colunas das tabelas combinadas, com linhas correspondentes de acordo com a condição de junção. Por exemplo, se você tiver duas tabelas contendo pedidos de clientes e itens de pedidos, respectivamente, poderá usar uma operação JOIN para combinar os dados em uma tabela que mostre todos os pedidos e seus itens associados.
Tipos de junções em SQL
Como mencionado anteriormente, existem quatro tipos principais de junções em SQL:
INNER JOIN, LEFT JOIN (ou LEFT OUTER JOIN), RIGHT JOIN ou (RIGHT OUTER JOIN) e FULL JOIN (ou FULL OUTER JOIN).
Cada tipo opera de maneira diferente, dependendo do tipo de relacionamento existente entre as tabelas que estão sendo unidas. Vamos ver cada um deles em detalhes.
INNER JOIN
SQL introduziu o conceito de acessar muitos registros com um único comando, sem a necessidade de especificar como alcançá-los.
©TippaPatt/Shutterstock.com
Um INNER JOIN é o tipo de junção mais comumente usado em SQL. Às vezes, é chamado de “junção simples” e usar JOIN em vez de INNER JOIN em uma consulta é sintaticamente correto. Junções simples são usadas para combinar linhas de duas ou mais tabelas com base em uma coluna comum.
A operação INNER JOIN retorna apenas as linhas onde há uma correspondência entre as colunas relacionadas em ambas as tabelas. Isso significa que, se não houver correspondência em uma das tabelas, essa linha não será retornada.
Para ilustrar melhor esse conceito, vamos considerar duas tabelas SQL: Clientes e Pedidos.
Tabela Clientes
Tabela Pedidos
Podemos usar INNER JOIN para obter os pedidos feitos por cada cliente, assim:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Clientes
ON Orders.CustomerID=Clientes.CustomerID;
No exemplo de consulta acima, usamos INNER JOIN para combinar as tabelas Orders e Customers com base na coluna CustomerID.
O resultado da consulta será, portanto:
LEFT JOIN
A LEFT JOIN (ou LEFT OUTER JOIN) é usado para combinar as linhas de duas ou mais tabelas com base em uma coluna comum, mas também retorna todas as linhas da tabela à esquerda (ou a primeira tabela na junção).
Uma operação LEFT JOIN, portanto, retorna todas as linhas da tabela da esquerda e apenas as linhas correspondentes da tabela da direita. Se não houver registro correspondente na tabela da direita, o resultado conterá valores NULL nas colunas da tabela da direita.
Usando as tabelas do exemplo anterior, podemos usar o LEFT JOIN para combinar as tabelas Customers e Orders (com base no CustomerID) para obter pedidos feitos por todos os clientes, mesmo se não houver pedidos para um cliente específico, como:
SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID;
O resultado da consulta será:
Como esperado, já que Peter não tem pedidos, a coluna OrderDate para Peter contém NULL.
RIGHT JOIN
SQL foi originalmente baseado em álgebra relacional e cálculo relacional de tupla.
©Miha Creative/Shutterstock.com
Um RIGHT JOIN (ou RIGHT OUTER JOIN) funciona da mesma forma que um LEFT JOIN, exceto que ele retorna todas as linhas da tabela certa (ou a segunda tabela na junção). Em outras palavras, uma operação RIGHT JOIN retorna todas as linhas da tabela da direita e apenas as linhas correspondentes da tabela da esquerda.
Se não houver nenhuma linha correspondente na tabela à esquerda, o resultado conterá valores NULL nas colunas da tabela à esquerda. Usando o exemplo anterior, podemos usar RIGHT JOIN para obter todos os pedidos feitos pelos clientes, assim:
SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
RIGHT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID;
A consulta acima nos dará o seguinte resultado:
Como esperávamos, Peter não está incluído no resultado da consulta porque ainda não fez nenhum pedido, enquanto John tem dois.
FULL JOIN
Uma operação FULL JOIN retorna todas as linhas de ambas as tabelas, incluindo as linhas não correspondentes. Se não houver correspondência em uma das tabelas, o resultado conterá valores NULL nas colunas da tabela sem correspondência.
Um FULL JOIN, portanto, combina os conjuntos de resultados de um LEFT JOIN e um RIGHT JOIN. Ele retorna todas as linhas de ambas as tabelas, mesmo que não haja nenhuma linha correspondente na outra tabela.
Usando as mesmas tabelas de antes, podemos usar um FULL JOIN para obter todos os pedidos e clientes, mesmo que não haja pedidos para um determinado cliente ou se ainda não houver clientes que tenham feito pedidos, como então:
SELECT Customers.CustomerName, Orders.OrderDate
FROM Clientes
FULL JOIN Pedidos
ON Clientes.CustomerID=Pedidos. CustomerID;
Isso nos dá o seguinte resultado:
Peter agora está incluído na consulta resultado, mesmo que ele ainda não tenha feito nenhum pedido, e a coluna OrderDate para Peter contém NULL.
FULL OUTER JOIN é equivalente a FULL JOIN e você pode usá-los de forma intercambiável.
Existem alternativas para as junções comuns no SQL?
Embora as operações de junção sejam uma ferramenta essencial para combinar dados de várias tabelas no SQL, existem métodos alternativos que podem obter resultados semelhantes. Esses métodos incluem subconsultas, instruções UNION e UNION ALL. Vamos explorar brevemente cada uma dessas alternativas para ver como elas se comparam ao uso de JOINS.
Subconsultas SQL
Subconsultas são consultas aninhadas que podem ser usadas para recuperar dados de uma ou mais tabelas. Eles podem ser usados para filtrar, classificar ou agregar dados e podem ser aninhados em outras consultas. Um caso de uso comum para subconsultas é recuperar dados de uma tabela com base nos dados de outra tabela.
Por exemplo, em vez de usar uma junção para combinar dados das tabelas Pedidos e Clientes, você pode usar uma subconsulta para recuperar dados da tabela Customers com base nos dados da tabela Orders:
SELECT CustomerName, City
FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders );
Esta consulta retornará todos os clientes que fizeram um pedido, junto com sua cidade.
Instrução UNION
A instrução UNION é usada para combinar as resultados de duas ou mais instruções SELECT em um único conjunto de resultados. É semelhante a uma operação de junção, pois combina dados de várias tabelas, mas não requer uma coluna comum entre as tabelas.
Por exemplo, você pode usar UNION para combinar dados de Clientes e Pedidos tabelas que possuem as mesmas colunas:
SELECT CustomerName, ContactName, City FROM Customers
UNION
SELECT CustomerName, ContactName, City FROM Orders;
A consulta acima retornará um conjunto de resultados que inclui todos os clientes e pedidos, com seus nomes e cidades.
Instrução UNION ALL
A instrução UNION ALL é semelhante à UNION instrução, mas não remove duplicatas do conjunto de resultados. Isso significa que incluirá todas as linhas de ambas as tabelas, mesmo se houver duplicatas.
Por exemplo,
SELECT CustomerName, City FROM Customers
UNION ALL
SELECT CustomerName, ShipCity FROM Orders;
Esta consulta nos dará um conjunto de resultados que inclui todos os clientes e pedidos, com seus nomes e cidades, mesmo se houver duplicatas.
p>
Qual seria o benefício de usar junções em SQL em vez de outras alternativas?
Embora as alternativas acima possam ser usadas para combinar dados de várias tabelas e fornecer os resultados esperados, as junções são as mais maneira eficiente de fazê-lo. Uma das principais vantagens das operações de junção é que elas geralmente são mais eficientes do que subconsultas e operações UNION.
As operações de junção permitem que você recupere dados de várias tabelas em uma única consulta, o que pode ser mais eficiente do que executar várias consultas ou subconsultas aninhadas para obter o mesmo resultado.
As junções também são uma maneira mais intuitiva de combinar dados de várias tabelas, pois permitem que você especifique exatamente como os dados devem ser unidos com base no relacionamento entre as tabelas. Isso pode facilitar a compreensão e modificação das consultas ao longo do tempo, pois as condições de junção indicam claramente como os dados estão sendo combinados.
Claro, pode haver situações em que subconsultas ou operações UNION são mais apropriadas do que junção operações, dependendo dos requisitos específicos da consulta. Em geral, porém, as junções oferecem uma maneira mais simples, poderosa e eficiente de combinar dados de várias tabelas em SQL em comparação com outros métodos.
Resumo
As junções SQL são essenciais para consultar e manipular dados armazenados em bancos de dados. Eles são bastante úteis no contexto de bancos de dados relacionais, pois nos permitem criar consultas de dados complexas que, de outra forma, seriam impossíveis.
Cada operação de junção tem seu caso de uso e você deve escolher o apropriado com base nos dados com os quais está trabalhando e no tipo de resultado que deseja obter. Ao dominar os quatro tipos de junções em SQL — INNER, LEFT, RIGHT e FULL — você pode trabalhar com bancos de dados de forma eficiente e extrair insights significativos de seus dados.
O que são junções em SQL (Inner, Left, Certo e completo) – Com exemplos Perguntas frequentes (perguntas frequentes)
Qual é o significado de JOINS em consultas SQL?
As operações de junção em SQL são usadas para combinar dados de duas ou mais tabelas em um único conjunto de resultados. Esta operação é usada quando você precisa recuperar informações de várias tabelas que possuem algum tipo de relacionamento por meio de uma coluna relacionada entre elas.
Qual é a diferença entre um LEFT JOIN e um RIGHT JOIN ?
UM LEFT JOIN (ou LEFT OUTER JOIN) combina as linhas de duas ou mais tabelas com base em uma coluna comum, mas também retorna todas as linhas da tabela à esquerda. Um RIGHT JOIN (ou RIGHT OUTER JOIN) é o mesmo que um LEFT JOIN, exceto que ele retorna todas as linhas da tabela da direita.
Qual é o propósito de um FULL JOIN no SQL?
Uma operação FULL JOIN retorna todas as linhas de ambas as tabelas, incluindo as linhas não correspondentes. Se não houver correspondência em uma das tabelas, o resultado conterá valores NULL nas colunas da tabela sem correspondência.
Quais são algumas práticas recomendadas ao usar operações JOIN no SQL?
Algumas práticas recomendadas ao usar junções em SQL incluem usar o tipo de junção correto com base nos dados e no tipo de resultado que você deseja obter, usar aliases para tornar sua consulta mais legível e/ou usando a cláusula WHERE para refinar o resultado da consulta.
Você pode usar mais de duas tabelas em uma operação SQL JOIN?
Sim, você pode usar mais de duas tabelas em uma operação de união SQL. Você pode unir várias tabelas especificando as condições de junção na cláusula ON da consulta. A cláusula ON pode conter várias condições de junção, separadas por operadores AND ou OR.