Apostila interativa de fundamentos de SQL, desenvolvida para profissionais que já utilizam a linguagem no dia a dia e desejam reforçar as decisões básicas que sustentam consultas, modelos e análises confiáveis.
O projeto reorganiza uma apostila originalmente distribuída em PDF em uma experiência de aprendizagem responsiva, navegável e autônoma. Todo o conteúdo, o estilo e as interações estão concentrados em um único arquivo HTML, sem necessidade de backend ou instalação.
Fundamentos sólidos que sustentam decisões SQL confiáveis.
Abra o arquivo index.html = sql_fundamentos_apostila_interativa diretamente no navegador.
Este material foi pensado para analistas e profissionais de dados que já trabalham com SQL, mas desejam revisar os critérios fundamentais usados em tarefas como:
- escolher tipos de dados adequados;
- preservar precisão numérica;
- diferenciar identificadores de quantidades;
- aplicar filtros e agregações corretamente;
- compreender cardinalidade em junções;
- evitar conversões implícitas;
- modelar restrições e relacionamentos;
- usar transações e níveis de isolamento;
- analisar consultas e decisões de desempenho.
A proposta não é somente apresentar sintaxe. Cada módulo busca explicar por que uma escolha é adequada, quais riscos existem e quando o comportamento varia entre sistemas gerenciadores de banco de dados.
- Navegação por módulos em menu lateral;
- Navegação adaptada para celular e tablet;
- Modo claro e modo escuro;
- Progresso salvo no
localStoragedo navegador; - Marcação de módulos concluídos;
- Aulas expansíveis;
- Blocos SQL com botão para copiar;
- Quiz com feedback imediato;
- Calculadora de faixa para tipos inteiros;
- Calculadora de precisão e escala para
DECIMAL(p,s); - Glossário de consulta rápida;
- Layout responsivo;
- Impressão otimizada em A4 paisagem;
- Funcionamento local, sem backend;
- Ausência de dependências externas em tempo de execução.
O módulo inicial foi criado para reforçar decisões frequentemente tratadas como detalhes de implementação, mas que afetam integridade, desempenho e interoperabilidade.
Tópicos abordados:
- método de escolha de tipos por domínio, faixa e semântica;
TINYINT,SMALLINT,MEDIUMINT,INTeBIGINT;- diferença entre
BIGINTeBIGINT UNSIGNED; - limites numéricos e armazenamento em bytes;
- portabilidade de
UNSIGNED; - limite de inteiros seguros no JavaScript;
- precisão e escala em
DECIMAL(p,s); - diferenças entre
DECIMAL,FLOATeDOUBLE; - motivo para não usar
FLOAT(12,2)como garantia de precisão; - representação de valores monetários;
CHAR,VARCHARe tiposTEXT;- Unicode,
utf8mb4e collations; - CPF, CNPJ, CEP, telefone e outros identificadores textuais;
DATE,TIME,DATETIMEeTIMESTAMP;- horário local, fuso horário e UTC;
BOOLEAN,TINYINT(1)e restriçõesCHECK;- tipos binários, UUID, JSON e
ENUM; - diferenças entre
NULL, string vazia, zero e texto contendo zero; - conversões implícitas;
- compatibilidade entre chaves primárias e estrangeiras;
- impacto dos tipos em índices e desempenho.
- Banco de dados;
- SGBD e SGBDR;
- SQL como linguagem;
- diferenças entre SQL e produtos como MySQL e PostgreSQL;
- famílias DDL, DML, DQL, DCL e TCL.
CREATE;ALTER;DROP;TRUNCATE;INSERT;UPDATE;DELETE;- diferenças entre comandos destrutivos.
SELECT;WHERE;DISTINCT;ORDER BY;BETWEEN;IN;LIKE;IS NULL;- aliases;
LIMITe diferenças de dialeto.
- funções de agregação;
- funções de texto;
- funções numéricas;
- funções de data e hora;
- tratamento de valores nulos;
- diferença entre
COUNT(*)eCOUNT(coluna).
GROUP BY;WHEREversusHAVING;INNER JOIN;LEFT JOIN;RIGHT JOIN;FULL OUTER JOIN;SELF JOIN;CROSS JOIN;- riscos de duplicação e perda de linhas.
PRIMARY KEY;FOREIGN KEY;UNIQUE;NOT NULL;CHECK;DEFAULT;- Primeira Forma Normal 1FN;
- Segunda Forma Normal 2FN;
- Terceira Forma Normal 3FN;
- BCNF;
- normalização e desnormalização deliberada.
- subconsulta escalar;
- subconsulta com múltiplas linhas;
- subconsulta correlacionada;
EXISTSeNOT EXISTS;UNION;UNION ALL;INTERSECT;EXCEPT.
- views;
- índices;
- CTEs;
- funções de janela;
ROW_NUMBER;RANK;DENSE_RANK;LEADeLAG;CASE WHEN;- conceitos de pivot e unpivot.
- propriedades ACID;
COMMIT;ROLLBACK;SAVEPOINT;- problemas de concorrência;
- níveis de isolamento;
- índices;
EXPLAIN;- princípios de otimização.
- checklist para construção de consultas;
- perguntas fundamentais;
- desafios práticos;
- revisão de tipos, junções, agregações e funções de janela;
- cuidados com casos extremos e desempenho.
O projeto utiliza somente tecnologias nativas da Web:
- HTML5;
- CSS3;
- JavaScript;
localStoragepara persistência do progresso;IntersectionObserverpara acompanhamento da navegação;- API de Clipboard para copiar exemplos SQL;
- recursos nativos de impressão do navegador.
Não há framework, gerenciador de pacotes, banco de dados ou etapa de compilação.
- Faça o download ou clone o repositório;
- Localize o arquivo
index.html; - Abra o arquivo com um navegador moderno.
Nenhum servidor é necessário.
- Comece pelo Módulo 0;
- Expanda cada aula para consultar os exemplos;
- Use as calculadoras para revisar faixas e precisão;
- Copie as consultas e execute em um ambiente de estudos;
- Responda aos quizzes;
- Marque o módulo como concluído;
- Use a busca para retornar rapidamente a um conceito;
O progresso é armazenado no navegador. Se os dados do site forem apagados ou a apostila for aberta em outro navegador, o progresso não será transferido automaticamente.
A interface foi projetada para navegadores modernos, incluindo:
- Microsoft Edge;
- Google Chrome;
- Mozilla Firefox;
- Safari.
Alguns recursos, como acesso à área de transferência, podem variar conforme as permissões do navegador e o modo de abertura do arquivo.
Os exemplos utilizam MySQL como referência principal, especialmente nas partes relacionadas a:
UNSIGNED;MEDIUMINT;TINYINT(1);LIMIT;DATETIME;- collations
utf8mb4.
O material sinaliza diferenças relevantes, mas não substitui a documentação oficial da versão utilizada.
Antes de aplicar um exemplo em produção, verifique a sintaxe e o comportamento no ambiente correspondente:
- MySQL;
- PostgreSQL;
- Microsoft SQL Server;
- Oracle Database;
- SQLite;
- outros SGBDs e plataformas analíticas.
- O conteúdo foi reorganizado em uma sequência progressiva;
- Fundamentos de tipos de dados aparecem antes dos comandos SQL;
- Exemplos priorizam legibilidade e intenção;
- Afirmações dependentes de SGBD são apresentadas com ressalvas;
- Comandos destrutivos recebem alertas visuais;
- O material diferencia regras universais de decisões dependentes do domínio;
- A interface evita dependência de serviços externos;
- O conteúdo pode ser impresso, mas a experiência principal é digital e interativa.
- A apostila não executa consultas SQL no navegador;
- Os exemplos não representam todos os comportamentos de todos os SGBDs;
- O quiz atual não substitui avaliação prática;
- O progresso é local e não possui sincronização entre dispositivos;
- O projeto não possui autenticação, backend ou banco de dados;
- A impressão pode apresentar pequenas diferenças entre navegadores;
- Exemplos devem ser adaptados às regras e ao volume de cada ambiente.
Contribuições são bem-vindas, principalmente para:
- corrigir conceitos ou exemplos;
- documentar diferenças entre dialetos;
- melhorar acessibilidade;
- propor novos exercícios;
- revisar conteúdo em português do Brasil;
- testar o comportamento em diferentes navegadores;
- melhorar impressão e responsividade.
Fluxo sugerido:
- Crie um fork do repositório;
- Crie uma branch descritiva;
- Faça alterações pequenas e focadas;
- Teste o HTML em desktop e celular;
- Verifique exemplos SQL no dialeto indicado;
- Abra um Pull Request explicando a mudança.
Exemplo:
git checkout -b docs/melhora-modulo-tipos
git add .
git commit -m "docs: melhora explicacao sobre tipos numericos"
git push origin docs/melhora-modulo-tiposO projeto pode utilizar Conventional Commits:
feat: adiciona novo recurso
fix: corrige comportamento ou conteúdo
content: adiciona ou revisa conteúdo didático
docs: atualiza documentação
style: altera apresentação sem mudar comportamento
refactor: reorganiza código sem alterar funcionalidade
test: adiciona ou altera testes
chore: manutenção geral
Os exemplos SQL são educacionais. Antes de executar comandos em ambientes reais:
- trabalhe em uma base de testes;
- revise filtros de
UPDATEeDELETE; - valide a quantidade de linhas afetadas;
- utilize transações quando apropriado;
- mantenha backups e estratégias de recuperação;
- respeite políticas de acesso e proteção de dados;
- não publique dados reais, credenciais ou informações sensíveis no repositório.
MIT License — see LICENSE for details.
Este projeto valoriza o princípio de que consultas confiáveis, modelos coerentes e análises precisas começam pela aplicação consistente dos fundamentos.
Como inspiração Lucas Araújo muito obrigado por compartilhar conhecimentos,
Projeto reformulado para uma experiência digital interativa.
Feito com ❤️ por Rafael Silva

