SQL - STRUCTURED QUERY
LANGUAGE
Por que aprender SQL?
SQL é a ponte entre o dado bruto e a resposta que
as pessoas querem.
Motivos reais pra aprender:
-Está em TODO lugar: CRM, ERP, BI, suporte,
marketing, vendas...
-É essencial pra trabalhar com dados.
-SQL é usado tanto para análise quanto
automação.
Comandos Básicos (SELECT, FROM, WHERE)
SELECT nome, idade FROM alunos WHERE idade >= 18;
O que faz cada parte:
-SELECT : define o que você quer ver
-FROM : indica de qual tabela vem os dados
-WHERE : filtra os dados com base em alguma condição
🧠 Exemplo real:
-Filtrar alunos com idade ≥ 18
-Buscar contatos que marcaram “sim” no interesse do
projeto
EXPLICANDO:
LIKE % : representa qualquer sequência de caracteres
_ : representa apenas um caractere
SELECT * FROM alunos WHERE nome LIKE 'Ana%' 💡 PODE SER USADO PARA:
Buscar nomes, domínios de email, códigos,
padrões
Procurar por “%gmail.com” nos emails dos
contatos
🧠 EXEMPLO PRÁTICO:
SELECT * FROM contatos WHERE email LIKE '%@gmail.com';
ORDER BY
SELECT nome, nota FROM alunos ORDER BY nota DESC;
O que faz cada parte:
-Organiza os dados retornados
-Pode ordenar por uma ou mais colunas
Modificadores:
-ASC = crescente
-DESC = decrescente
🧠 Exemplo prático:
-Top 10 alunos com maiores notas
-Clientes que mais compraram, ordenado por valor
GROUP BY + HAVING
SELECT curso, COUNT(*) AS total FROM alunos GROUP BY curso HAVING COUNT(*) > 10;
Explicação:
-GROUP BY : agrupa linhas por uma ou mais colunas
-HAVING : filtra esses grupos (diferente de WHERE , que filtra linhas)
🧠 Exemplo prático:
-Contar alunos por escola
-Ver quais cursos têm mais de 10 inscritos
JOIN
SELECT a.nome, e.nome_escola FROM alunos a JOIN escolas e ON a.id_escola = e.id;
JOINs servem para juntar tabelas que se relacionam
Tipos comuns:
INNER JOIN : pega só os que batem nos dois lados
LEFT JOIN : pega tudo da esquerda e o que bate da direita
RIGHT JOIN : o inverso do
LEFT FULL JOIN : tudo de todos os lados (nem todo banco suporta)
Exemplo prático:
Relacionar alunos com suas escolas
Relacionar vendas com dados do cliente (nome, email, cidade)
Índices
CREATE INDEX idx_nome ON alunos(nome);
O que é:
Índice é como um "atalho" para o banco encontrar dados
rapidamente
É como o índice de um livro: você acha mais rápido, mas precisa
atualizar se algo mudar
🧠 Usos comuns:
Colunas de WHERE , JOIN , ORDER BY
⚠️ Cuidado:
Índices aceleram leitura, mas deixam a
escrita (INSERT/UPDATE) mais lenta
Indexar tudo = bomba de performance �
Views
CREATE VIEW vw_ativos AS SELECT * FROM alunos WHERE status = 'ativo';
O que é uma View:
Uma "tabela virtual", baseada numa query
Parece uma tabela, mas na real é só uma consulta pré-definida
Vantagens:
Reutilização de lógica
Facilita acesso a consultas complexas
Ajuda no controle de acesso
📢 RBAC – Role-Based Access Control
RBAC é o controle de acesso baseado em papéis: usuários só
acessam o que precisam com base no cargo.
🧠 Exemplo prático com Views + RBAC:
Cria uma view que mostra só dados da escola X
Permite que um coordenador só veja os alunos da escola dele
Triggers
CREATE TRIGGER atualiza_data BEFORE UPDATE ON alunos FOR EACH ROW
SET NEW.data_atualizacao = NOW();
O que é:
Um código que roda automaticamente quando algo acontece
Quando usar:
Atualizar campos automaticamente (ex: data de atualização)
Enviar notificação, fazer log, validar info
🧠 Exemplo prático:
Atualizar data_modificacao toda vez que alguém
alterar o status do aluno
Stored Procedures
CREATE PROCEDURE listarAtivos() BEGIN SELECT * FROM alunos WHERE
status = 'ativo'; END;
O que é:
Um "pacote de SQL" reutilizável
Ajuda a organizar lógica complexa e evitar repetição
🧠 Exemplo prático:
Uma procedure para gerar relatório de alunos ativos por escola
Procedure para limpar duplicados com lógica customizada
Backup
💾 Manter backup = evitar choro
MySQL:
mysqldump -u user -p banco > backup.sql
PostgreSQL:
pg_dump -U user banco > backup.sql
💡Dicas:
Sempre agende backups automáticos
(cron job, GCP, etc.)
Teste a restauração!
Mantenha backups em outro servidor
Tabela Resumo
Encerramento + Dicas
Treine com dados reais (ou simulados, com base
em ferramentas reais)
Use sites como:
https://sqlzoo.net/
https://sqlfiddle.com/
Quer ficar ninja? Aprende a ler EXPLAIN pra
entender como o banco executa suas queries
OBRIGADO