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:
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.
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.
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.
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.
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.
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.
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
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.
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).
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.
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
É 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.
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?
Para acessar outras publicações de SQL, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.