Blog

Postado em em 24 de agosto de 2022

JOIN no SQL: Conceitos e Aplicações (Guia para Iniciantes)

Aprenda sobre o conceito de JOIN no SQL, seus principais tipos e como utilizá-los para relacionar suas tabelas. Um guia completo para iniciantes!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

JOIN no SQL: Conceitos e Aplicações (Guia para Iniciantes)

Nesta aula, vou te ensinar o conceito de JOIN no SQL, abordando seus principais tipos e ensinando como utilizá-los para criar relacionamentos no SQL!

Também vou explicar conceitos importantes, como chave estrangeira, chave primária, tabela fato e tabela dimensão.

E para finalizar, vou te mostrar a sintaxe do código em SQL quando você for fazer relacionamentos entre tabelas.

Antes de começarmos de fato com os JOINs, vamos nos familiarizar com alguns termos que serão importantes e úteis para compreender melhor o JOIN no SQL.

Chave Primária e Chave Estrangeira

O primeiro conceito que vamos abordar será compreender o que é uma chave primária e uma chave estrangeira.

A chave primária é a coluna que identifica as informações distintas em uma tabela, geralmente sendo a coluna de ID. Toda tabela possui uma e apenas uma chave primária, que serve como identificador único. Essa coluna não pode conter valores repetidos.

Por outro lado, a chave estrangeira é uma coluna que permite relacionar as linhas de uma segunda tabela com a chave primária da primeira tabela.

Chave Primária e Chave Estrangeira

Na tabela Produto, a coluna id_subcategoria é a chave estrangeira que nos permite relacionar essa tabela com a tabela Categoria, indicando a qual categoria cada produto pertence.

Tabela Fato e Tabela Dimensão

Dentro de um banco de dados, encontraremos várias tabelas e elas poderão ser classificadas em dois tipos: tabela fato e tabela dimensão. Esse é outro conceito importante que vale a pena conhecer.

A tabela dimensão, também conhecida como tabela de características, contém as informações e as características de um determinado elemento. Por exemplo, uma tabela com nome, preço e marca de um produto.

Nessa tabela, nenhum dos elementos principais se repetirá, e é nela que encontraremos as chaves primárias.

Por sua vez, a tabela fato armazena os acontecimentos de uma determinada empresa. Por exemplo, uma tabela de vendas que registrará a data da venda, a loja onde ocorreu, o funcionário responsável, entre outros dados assim.

Geralmente, essa será uma tabela com milhares de informações, principalmente colunas de ID que usamos para relacioná-las com uma tabela dimensão.

Tabela Fato e Tabela Dimensão

Nesse exemplo temos a tabela dimensão (DimChannel) que resume 4 canais de vendas de uma empresa, e a tabela fato (FactSales) que registra as vendas em si. Podemos observar que essas tabelas se relacionam por meio da coluna ChannelKey.

O que é a cláusula JOIN no SQL e para que serve?

A cláusula JOIN no SQL é uma forma de relacionar duas tabelas e gerar uma tabela resultante com as relações explícitas entre elas. Por exemplo, uma das operações pode ser simplesmente buscar o que é comum entre as tabelas e ressaltar isso em um novo conjunto.

Baseia-se fortemente na teoria dos conjuntos. É, aliás, um dos muitos conceitos da computação que praticamente implementam a base da teoria dos conjuntos. 

Suas operações são literalmente as operações de união, subtração e intersecção da teoria de conjuntos em formas de comando no SQL. 

Logo, a partir do estudo das relações entre tabelas e conjuntos, é possível melhorar a compreensão sobre cada tabela em específico. Esses insights ajudam na tomada de decisão e são úteis para empresas em diversos contextos. 

Pode ser interessante para filtrar dados, explicitar relações entre as tabelas, eliminar componentes indesejados, fazer uma análise mais precisa, etc. 

Por exemplo, caso a empresa tenha uma tabela de vendas de uma loja e uma tabela de vendas com outra loja, é possível saber quais produtos foram vendidos em ambas pela intersecção. 

Ou ainda é possível unir completamente as duas tabelas e gerar uma grande relação com todas as vendas efetuadas em um dado período. 

Ou seja, é possível ampliar e diminuir o escopo para uma análise mais geral e mais específica, respectivamente. 

Nesse ponto, vale especificar que não usamos os termos da teoria dos conjuntos, mas adotamos termos únicos para subcomandos da cláusula JOIN no SQL. Vamos entender a seguir quais são esses termos. 

Quais são os tipos de JOINS no SQL?

Tipos Join SQL ilustração com desenhos

INNER JOIN

O INNER JOIN traz uma ideia muito intuitiva: a de buscar a intersecção entre as tabelas (“A ∩ B” da imagem principal acima). Ou seja, resulta em uma tabela que traz os valores que estão em ambas as tabelas iniciais.

Vamos recuperar o exemplo das vendas em diferentes lojas. Ao aplicar o INNER JOIN no SQL, é possível obter como resultado somente os produtos vendidos nas duas lojas.

A sintaxe é desenvolvida assim:

 FROM tabela1 AS t

 INNER JOIN tabela2 AS tp

ON t.produto = tp.produto 

LEFT JOIN

Já o LEFT JOIN é um pouco mais complexo. Resulta em uma tabela que exibe somente os itens da tabela da esquerda, incluindo os itens em interseção com a tabela direita. Contudo, exclui da relação o resto da tabela da direita.

É como a ideia da subtração que também considera a intersecção. É uma forma de recuperar por completo todos os dados da tabela da esquerda sem perder os que também estão relacionados com a direita.

No nosso exemplo, seria como pegar as vendas da loja 1, em uma listagem completa dessas vendas, o que inclui os produtos unicamente vendidos lá e os produtos que possam ter sido vendidos na loja 2.

A sintaxe: 

FROM tabela1 AS t

LEFT JOIN tabela2 AS tp

ON t.produto = tp.produto 

Uma variação desse LEFT JOIN é o LEFT EXCLUDING JOIN, que pega apenas os valores únicos da tabela da esquerda. Está representado pelo “A – B” na imagem acima.

RIGHT JOIN

O RIGHT JOIN segue a mesma lógica do LEFT, só que para a outra tabela. Pega os dados completos da tabela da direita, incluindo os que também estão na tabela da direita.

A sintaxe também é muito similar. 

Da mesma forma, temos a variação do RIGHT EXCLUDING JOIN, que pega apenas os valores únicos da tabela da direita (representado pelo “B-A” da imagem).

FULL JOIN

O FULL JOIN é o comando para pegar todos os valores das duas tabelas e unir em uma única resultante. É representado pelo “A U B” da imagem principal. 

É como pegar todos os produtos vendidos nas duas lojas da empresa e juntar todos esses registros para facilitar o controle ou a manipulação geral, por exemplo.

Esse conceito é similar à operação de união da teoria dos conjuntos. 

A sintaxe fica assim:

FROM tabela1 AS t

FULL OUTER JOIN tabela2 AS tp

ON t.produto = tp.produto

A variação aqui é o FULL EXCLUDING JOIN, que exclui a interseção, ou seja, os valores em comum. Assim, pega os produtos vendidos unicamente nas lojas, sem aqueles que foram vendidos em ambas as lojas. 

CROSS JOIN

O CROSS JOIN executa uma operação mais complexa, em que todos os itens de uma tabela estarão associados a cada item da outra. 

Assim, se a tabela 2 tem 7 itens e a tabela 1 tem apenas 2, cada um dos dois itens da tabela 1 será representado 7 vezes na nova tabela (com relação com todos os itens da tabela 2).

A sintaxe é algo assim:

FROM tabela1 AS t

CROSS JOIN tabela2 AS tp

 WHERE t.id = 1 OR tp.id = 1

Dicas ao utilizar o comando JOIN no SQL

É importante se atentar para algumas dicas de como usar o comando JOIN no SQL de uma maneira eficiente.

Primeiro, é necessário usar aliases (apelidos) para as tabelas, o que ajuda na hora de identificá-las. Uma forma de fazer isso é usar apenas a primeira letra do termo, por exemplo.

Outra dica essencial é saber exatamente as diferenças entre os comandos do SQL que mostramos aqui. Assim, você poderá ter uma boa visão de como usá-los e poderá fazer a filtragem do jeito que deseja. 

Se é iniciante no tema usar um dicionário de SQL poderá ajudar bastante.

Conclusão

Nessa aula, aprendemos os conceitos importantes de chave estrangeira, chave primária, tabela fato e tabela dimensão. Em seguida, exploramos o JOIN no SQL, abordando os principais tipos: LEFT JOIN, RIGHT JOIN, INNER JOIN e FULL JOIN.

O JOIN no SQL é uma cláusula importantíssima para manipular dados, fazer a relação entre tabelas e permitir filtragem para entendimento e controle. Assim, é uma forma de gerenciar a complexidade de bancos de dados grandes e gerar insights precisos sobre eles. 

Com esse conhecimento, você está preparado para compreender e criar relacionamentos eficientes no SQL.

Leia também sobre: Trigger no SQL – Para que server e como funciona?

Hashtag Treinamentos

Para acessar outras publicações de SQL, clique aqui!


Quer aprender mais sobre SQL com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador