Aula 10: União de Dados, JOINs e Subconsultas

Aula 10: União de Dados, JOINs e Subconsultas

Na aula 10, vamos estudar União de Dados (UNION), Associação de Tabelas (JOIN) e Subconsultas. Esses tópicos são essenciais para manipular e combinar dados de várias tabelas, permitindo consultas mais complexas e detalhadas.


1. União de Dados com UNION

A cláusula UNION é usada para combinar os resultados de duas ou mais consultas SELECT. É útil para unir dados de tabelas diferentes, desde que as colunas sejam compatíveis em número e tipo.

  • Sintaxe Básica: SELECT coluna1, coluna2 FROM tabela1 UNION SELECT coluna1, coluna2 FROM tabela2;
  • Exemplo: SELECT nome FROM clientes_brasil UNION SELECT nome FROM clientes_argentina; Esse exemplo une clientes de duas tabelas diferentes (Brasil e Argentina) em uma única lista de nomes.
  • Dica: Para evitar duplicatas, o UNION elimina automaticamente registros duplicados. Use UNION ALL se quiser manter todos os registros, incluindo duplicados.

2. Associação de Tabelas com JOIN

Os JOINs permitem combinar registros de duas ou mais tabelas com base em uma coluna comum. Existem diferentes tipos de JOINs, cada um com um propósito específico.

2.1. Tipos de JOIN

JOINDescrição
INNER JOINRetorna apenas os registros que têm correspondências nas duas tabelas.
LEFT JOINRetorna todos os registros da tabela à esquerda e os correspondentes da tabela à direita. Se não houver correspondência, retorna NULL para a tabela à direita.
RIGHT JOINRetorna todos os registros da tabela à direita e os correspondentes da tabela à esquerda. Se não houver correspondência, retorna NULL para a tabela à esquerda.
FULL JOINRetorna todos os registros quando há correspondência em uma das tabelas.

Exemplos Práticos de JOINs

  1. INNER JOIN: Exibe produtos e seus pedidos somente se ambos existirem em produtos e pedidos. SELECT produtos.nome, pedidos.quantidade FROM produtos INNER JOIN pedidos ON produtos.id = pedidos.id_produto;
  2. LEFT JOIN: Exibe todos os produtos, mesmo se não houver pedidos. SELECT produtos.nome, pedidos.quantidade FROM produtos LEFT JOIN pedidos ON produtos.id = pedidos.id_produto;
  3. RIGHT JOIN: Exibe todos os pedidos, mesmo que não haja produtos associados. SELECT produtos.nome, pedidos.quantidade FROM produtos RIGHT JOIN pedidos ON produtos.id = pedidos.id_produto;
  4. FULL JOIN (Nem todos os SGBDs suportam): Retorna registros onde existam correspondências em qualquer uma das tabelas. SELECT tabela1.coluna1, tabela2.coluna2 FROM tabela1 FULL JOIN tabela2 ON tabela1.id = tabela2.id;

3. Subconsultas

As subconsultas (ou consultas internas) são usadas para realizar uma consulta dentro de outra consulta. Elas são úteis para criar filtros e cálculos mais avançados.

Tipos de Subconsultas

  1. Subconsulta em WHERE: SELECT nome FROM funcionarios WHERE salario > (SELECT AVG(salario) FROM funcionarios); Esse exemplo retorna os funcionários que têm salário acima da média.
  2. Subconsulta com IN/NOT IN: SELECT nome FROM alunos WHERE id IN (SELECT id_aluno FROM aprovados); Retorna nomes de alunos que estão na tabela de aprovados.
  3. Subconsultas com ANY/ALL: SELECT nome FROM produtos WHERE preco > ALL (SELECT preco FROM produtos WHERE categoria = 'eletrônicos'); Retorna produtos cujo preço é maior que todos os produtos da categoria “eletrônicos”.
  4. EXISTS: SELECT nome FROM clientes WHERE EXISTS (SELECT * FROM pedidos WHERE pedidos.id_cliente = clientes.id); Verifica se o cliente fez pelo menos um pedido.

4. Exercícios Práticos

  1. UNION:
    • Combine dados de duas tabelas clientes_brasil e clientes_portugal, listando todos os clientes, sem duplicatas.
  2. INNER JOIN:
    • Exiba uma lista de todos os pedidos com o nome do cliente e a quantidade de cada pedido.
  3. LEFT JOIN:
    • Exiba todos os produtos e a quantidade total vendida, incluindo produtos que nunca foram vendidos.
  4. Subconsulta com IN:
    • Liste todos os funcionários que trabalham em departamentos que possuem mais de 10 funcionários.
  5. Subconsulta com EXISTS:
    • Mostre todos os clientes que já fizeram pelo menos um pedido no último mês.

5. Desafio Prático

Combine os conceitos de JOIN e Subconsultas:

  • Exiba uma lista de clientes e o total de pedidos realizados por cada um, apenas para clientes que fizeram mais de 5 pedidos.

Especialista em Tecnologias Digitais Escrevo sobre como as inovações digitais estão revolucionando e facilitando a vida das pessoas, transformando o cotidiano e abrindo novas possibilidades.

Publicar comentário