Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🔍 DOMINANDO AS CONSULTAS (SELECT)

O comando SELECT é a ferramenta de extração de conhecimento. É como fazer uma pergunta profissional ao banco de dados para obter respostas estratégicas. 🛡️🧩


Objetivo: Dominar a estrutura da consulta SQL (SELECT, FROM, WHERE), compreender os tipos de junções (JOIN) e utilizar funções de agregação para análise de dados.


📗 PASSO 1: A Estrutura do Pensamento SQL

Para iniciantes, o segredo é seguir esta estrutura mental em 3 camadas: 🛡️

  1. SELECT: O que eu quero ver? (Colunas).
  2. FROM: Onde está a informação? (Tabelas).
  3. WHERE: Quais filtros aplicar? (Condições).

📗 PASSO 2: O Raciocínio de Junção (JOIN)

Ao usar o JOIN, conectamos tabelas via colunas comuns (PK/FK).

📊 Tipos de Junção

  • INNER JOIN (Padrão): Registros que possuem correspondência em ambas as tabelas.
  • LEFT JOIN: Todos da esquerda, mesmo sem correspondência na direita.
flowchart LR
    C[👤 CLIENTE] -- "JOIN ON ID" --- T[📞 TELEFONE]
    T -- "WHERE" --- Filter{🔎 SILVA}
    Filter -- "SELECT" --- Result[📄 RESULTADO]
SELECT C.NOME, T.NUMERO 
FROM CONTATO C
INNER JOIN TELEFONE T ON C.ID = T.CONTATO_ID 
WHERE C.SOBRENOME = 'SILVA';

📗 PASSO 3: Filtros e Funcionalidades Avançadas

Além do =, a SQL oferece operadores poderosos:

  • BETWEEN: Busca valores dentro de um intervalo.
  • IN: Busca valores em uma lista específica.
  • LIKE: Busca padrões de texto (ex: LIKE 'A%').
  • IS NULL: Filtra campos que estão vazios.

📗 PASSO 4: Funções de Agregação e Agrupamento

Para extrair inteligência de grandes massa de dados:

📊 Ordem de Execução Mental

flowchart TD
    Data[📊 Dados Brutos] --> Filter[🔍 WHERE: Filtrar Linhas]
    Filter --> Group[📦 GROUP BY: Agrupar]
    Group --> Agg[📈 AGGREGATE: Contar/Somar/Média]
    Agg --> Having[🛡️ HAVING: Filtrar Grupos]
  • COUNT(): Conta o número de registros.
  • SUM(): Soma valores numéricos.
  • GROUP BY: Agrupa os dados para a função de agregação.
-- Contar quantos telefones cada contato possui (Agregação + JOIN)
SELECT C.NOME, COUNT(T.ID) AS QUANTIDADE_FONES
FROM CONTATO C
INNER JOIN TELEFONE T ON C.ID = T.CONTATO_ID
GROUP BY C.NOME
HAVING COUNT(T.ID) > 1;

💡 Dica do Especialista: Use sempre Aliases (Apelidos) para suas tabelas (ex: CONTATO C). Isso torna o código SQL mais elegante e fácil de manter. 🚀🛡️