Banco de dados Data Analytics SQL

Agrupar Tabelas com SQL

agrupar_dados_com_sql

Fala galera do mundo dos dados, o tema de hoje é como agrupar tabelas com SQL. Esse é o ponto, que deixa muita gente de cabelo em pé, é aqui que vamos entender e praticar os famosos Joins (left, right, inner e full). Dessa forma conseguimos juntar várias tabelas a partir de uma coluna em comum entre elas. De quebra iremos aprender também como realizar os comandos SQL de Union, intersect, e except. Com eles também conseguimos juntar várias tabelas mas de outras formas.

Precisamos da estrutura básica de bases de dados e tabelas com dados para esta etapa. Com toda a estrutura pronta, conseguimos realizar os agrupamentos de tabelas com SQL, por isso vamos criar algumas tabelas e inserir dados nelas, bem simples para ficar didático. Partiu prática com dados ao cubo!

Criar Base de Dados

Primeiramente, vamos montar uma base de dados didática para que fique fácil entendimento das funções de agrupamento de tabelas com SQL. Serão três tabelas: tabela_a, tabela_b e tabela_c. Confere os scripts para criação de cada uma delas a seguir.

Criar Base de Dados Tabela A

Aqui temos o comando SQL para criar nossa tabela_a com as devidas colunas.

CREATE TABLE tabela_a (
  id_aluno INTEGER,
  nm_aluno VARCHAR,
  id_uf INTEGER
  );

Agora temos o comando SQL que vai inserir os dados na nossa tabela_a

INSERT INTO tabela_a VALUES
  (1,'Joana',1),
  (2,'Priscila',9),
  (3,'José',3),
  (4,'Maria',4),
  (5,'Paula',8),
  (6,'Paulo',8);

E então, um comando SQL para a seleção dos dados de forma que possamos verificar se tudo ocorreu certinho.

SELECT * FROM tabela_a

Dessa forma, temos a imagem dos dados abaixo. 

Tabela A criada, vamos para a próxima.

Criar Base de Dados Tabela B

Aqui temos o comando SQL para criar nossa tabela_b com as devidas colunas.

CREATE TABLE tabela_b (
  id_uf INTEGER,
  nm_uf VARCHAR
  );

Agora temos o comando SQL que vai inserir os dados na nossa tabela_b

INSERT INTO tabela_b VALUES
  (1,'BA'),
  (2,'CE'),
  (3,'SP'),
  (4,'PE'),
  (5,'RJ'),
  (6,'SC');

E então, um comando SQL para a seleção dos dados de forma que possamos verificar se tudo ocorreu certinho.

SELECT * FROM tabela_b

Dessa forma, temos a imagem dos dados abaixo. 

Tabela B criada, vamos para a última.

Criar Base de Dados Tabela C

Aqui temos o comando SQL para criar nossa tabela_c com as devidas colunas.

CREATE TABLE tabela_c (
  id_aluno INTEGER,
  nm_aluno VARCHAR,
  id_uf INTEGER
  );

Agora temos o comando SQL que vai inserir os dados na nossa tabela_c

INSERT INTO tabela_c VALUES
  (1,'Joana',1),
  (7,'Gustavo',1),
  (8,'Giovana',3);

E então, um comando SQL para a seleção dos dados de forma que possamos verificar se tudo ocorreu certinho.

SELECT * FROM tabela_c

Dessa forma, temos a imagem dos dados abaixo. 

Tabelas criadas, vamos ao que interessa, os joins!

Join de Tabelas com SQL

Com os famosos Joins (left, right, inner e full), conseguimos juntar várias tabelas a partir de uma coluna em comum entre elas. Veremos no detalhe cada um deles a seguir.

Left Join SQL

Às vezes, queremos todas as informações da tabela da esquerda e as correspondentes da tabela da direita, mesmo que não haja correspondência. Na imagem abaixo já temos o resultado esperado para consulta SQL. 

Então, a partir de um SELECT, utilizamos o comando LEFT JOIN informando qual será a tabela de ligação e as colunas em comum entre as duas tabelas. 

SELECT *
FROM        tabela_a ta
LEFT JOIN   tabela_b tb ON ta.id_uf = tb.id_uf
ORDER BY id_aluno

Dessa forma, temos resultado da consulta SQL acima na imagem abaixo, exatamente como a imagem inicial esperada.

Próximo join, o da direita.

Right Join SQL

Às vezes, queremos todas as informações da tabela da direita e as correspondentes da tabela da esquerda, mesmo que não haja correspondência. Também temos uma imagem abaixo com o resultado esperado para consulta SQL. 

Mais uma vez começamos SELECT, agora utilizamos o comando RIGHT JOIN informando qual será a tabela de ligação e as colunas em comum entre as duas tabelas. 

SELECT *
FROM        tabela_a ta
RIGHT JOIN  tabela_b tb ON ta.id_uf = tb.id_uf
ORDER BY tb.id_uf

Dessa forma, temos resultado da consulta SQL acima na imagem abaixo, exatamente como a imagem inicial esperada.

Agora o inner join.

Inner Join SQL

O INNER JOIN é como conectar peças de um quebra-cabeça. Vamos aprender a unir tabelas onde há correspondência. A imagem abaixo é o resultado esperado para consulta SQL. 

A partir de um SELECT, utilizamos o comando INNER JOIN informando qual será a tabela de ligação e as colunas em comum entre as duas tabelas. 

SELECT *
FROM        tabela_a ta
INNER JOIN  tabela_b tb ON ta.id_uf = tb.id_uf
ORDER BY id_aluno

Dessa forma, temos resultado da consulta SQL acima na imagem abaixo, exatamente como a imagem inicial esperada.

Completando a lista, o full!

Full Join SQL

Às vezes, queremos todas as informações da tabela da esquerda e da tabela da direita, mesmo que não haja correspondência. Então usamos o FULL JOIN! A imagem abaixo é o que esperamos da consulta SQL. 

Começamos do SELECT, utilizamos o comando FULL JOIN informando qual será a tabela de ligação e as colunas em comum entre as duas tabelas. 

SELECT *
FROM       tabela_a ta
FULL JOIN  tabela_b tb ON ta.id_uf = tb.id_uf
ORDER BY  ta.id_aluno, tb.id_uf

Dessa forma, temos resultado da consulta SQL acima na imagem abaixo, exatamente como a imagem inicial esperada.

Depois de aprender os joins, é hora de aprender a união de tabelas.

União de Tabelas com SQL

A união de tabelas, acontece a partir da junção dos registros de mais de uma tabela E para isso é preciso que as tabelas tenham a mesma quantidade de colunas e os tipos de dados correspondentes. 

Union SQL

Se você tem dados em diferentes tabelas e deseja uma lista única, o UNION é o aliado perfeito. Podemos utilizar ele de duas formas, com ou sem registros duplicados.

Esta primeira consulta SQL do UNION, vai exibir apenas os registros únicos da união entre as tabelas_a e tabela_c.

SELECT * FROM tabela_a ta -- 6 registro
UNION
SELECT * FROM tabela_c tc -- 3 registros
ORDER BY id_aluno

Dessa forma, temos o resultado da imagem abaixo com apenas oito registros. 

Para trazer todos os registros das duas tabelas, Independente de dados duplicados, acrescentamos a condição ALL. Dessa forma, será exibido todos os registros das duas tabelas após a união 

SELECT * FROM tabela_a ta -- 6 registro
UNION ALL
SELECT * FROM tabela_c tc -- 3 registros
ORDER BY id_aluno

Observe na imagem abaixo, que agora estamos exibindo os nove registros e as duas primeiras linhas temos registros duplicados.

Agora vamos de intercessão.

Intersect SQL

O comando INTERSECT tem a missão de exibir apenas os registros duplicados, ou seja, são os registros que estão presentes nas tabelas_a e tabela_c.

SELECT * FROM tabela_a ta
INTERSECT
SELECT * FROM tabela_c tc

Confere o resultado do script SQL acima na imagem abaixo. 

E para fechar vamos de exceção.

Except SQL

Já o comando é Sept, tem o objetivo de exibir os valores únicos da união de duas tabelas. Olhando para o código SQL abaixo, seria algo do tipo os registros únicos da tabela_a que não estão presentes na tabela_c

SELECT * FROM tabela_a ta
EXCEPT
SELECT * FROM tabela_c tc
ORDER BY id_aluno

Confere o resultado do script SQL acima na imagem abaixo. 

Atenção!!! A ordem das tabelas altera a exibição, e podemos ter os registros únicos da tabela_c que não estão presentes na tabela_a

SELECT * FROM tabela_c tc
EXCEPT
SELECT * FROM tabela_a ta
ORDER BY id_aluno

Confere o resultado do script SQL acima na imagem abaixo. 

E assim fechamos mais um conteúdo de SQL na prática hoje aprendendo sobre os agrupamentos de dados. 

Agrupar de Dados ao Cubo

E então chegamos ao fim! Aprendemos a agrupar tabelas com SQL, com este passo a passo bem detalhado. Assim podemos avançar na série SQL na prática! Na sequência você vai aprender a consultar banco de dados com SQL. Um abraço e até a próxima, não esquece de compartilhar o conteúdo para aquele amigo que quer aprender a linguagem SQL na prática.

Conteúdos ao Cubo

Então, se você curtiu o conteúdo, aqui no Dados ao Cubo tem muito mais. Então, deixo algumas sugestões de conteúdos que você pode encontrar. Sempre falando sobre o mundo dos dados!

Para finalizar, se torne também Parceiro de Publicação Dados ao Cubo. Escreva o próximo artigo e compartilhe conhecimento para toda a comunidade de dados.

Gostou? Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *