🎯 Faltam poucos dias para este mês Apoie SQLTest.online e ajude-nos a manter a prática de SQL gratuita para todos. Doe hoje →
Código SQL copiado para a área de transferência

Aulas de SQL: um curso gratuito do básico à análise de dados

12 capítulos e 74 aulas levam você do primeiro SELECT a junções, funções de janela, alteração de dados e desempenho de consultas. Cada aula explica um tema com exemplos de SQL e leva a exercícios práticos em bancos de dados reais.

Encontre uma aula por tema ou palavra-chave abaixo, ou comece pelo capítulo 1.

1 Introdução ao SQL

  1. 1.1 Introdução a Bases de Dados 8 min

    Uma base de dados é um conjunto organizado de dados gerido por um SGBD. Tipos de BD, funções do SGBD e por que o SQL é a linguagem universal.

  2. 1.2 Tipos de Bases de Dados 15 min

    Os principais tipos de bases de dados: relacionais, chave-valor, documentais, grafo, séries temporais e colunares, com diferenças e casos de uso.

  3. 1.3 Conceitos de Bases de Dados Relacionais 10 min

    Os fundamentos das bases de dados relacionais: tabelas, colunas, linhas, chaves primárias e estrangeiras e propriedades ACID, com exemplos.

  4. 1.4 Tipos de Dados Básicos 8 min

    Os tipos de dados SQL definem quais valores uma coluna pode guardar. Aprenda tipos numéricos, texto, data/hora e regras práticas para escolher corretamente.

  5. 1.5 Tipos de Dados Complexos 7 min

    Um panorama curto dos tipos SQL que guardam estrutura: JSON, XML, arrays, ENUM e SET, BLOB, UUID, tipos espaciais e VECTOR para embeddings de IA.

  6. 1.6 Entendendo os Valores NULL no SQL 6 min

    O que NULL significa num banco de dados relacional, como difere de 0, string vazia e false, quais colunas o aceitam e por que a lógica fica com três valores.

  7. 1.7 Visão Geral do SQL 8 min

    SQL é a linguagem padrão para bancos relacionais. Veja como ela é organizada, quais são seus subconjuntos e como montar uma consulta básica.

2 Recuperação Básica de Dados - A Instrução SELECT

  1. 2.1 Selecionando Dados de uma Tabela 6 min

    Aprenda o básico de SELECT em SQL: escolher todas ou apenas algumas colunas, definir a ordem de saída e usar DISTINCT para remover duplicatas.

  2. 2.2 Filtragem de Dados 6 min

    A cláusula SQL WHERE filtra linhas por condição: operadores de comparação, BETWEEN, IN, padrões com LIKE e tratamento correto de NULL.

  3. 2.3 Combinando Múltiplas Condições 7 min

    Aprenda os operadores lógicos AND, OR e NOT no SQL WHERE, a precedência de operadores, o uso de parênteses e exemplos práticos com NOT IN e NOT LIKE.

  4. 2.4 IS NULL e IS NOT NULL 6 min

    Por que WHERE column = NULL não encontra nada, como IS NULL e IS NOT NULL funcionam e como o NULL esconde linhas em condições com NOT, <> e NOT IN.

  5. 2.5 Alias para Colunas 5 min

    Um alias de coluna em SQL dá um nome temporário a uma coluna no resultado. Aprenda a palavra-chave AS, alias com espaços, alias para cálculos e onde usá-los.

  6. 2.6 Ordenando Resultados 6 min

    SQL ORDER BY ordena o resultado de uma consulta. Ordem crescente e decrescente, por várias colunas, por expressões e alias, e onde ficam os valores NULL.

  7. 2.7 Limitando Resultados com LIMIT e OFFSET 5 min

    SQL LIMIT restringe quantas linhas uma consulta devolve e OFFSET pula linhas. Consultas top-N, paginação, por que ORDER BY é necessário e TOP / FETCH FIRST.

  8. 2.8 Juntando Tudo: WHERE, ORDER BY e LIMIT 6 min

    Combine WHERE, ORDER BY e LIMIT numa consulta SQL. A ordem obrigatória das cláusulas, a ordem lógica de processamento, top-N filtrado e paginação.

3 Trabalhar com Funções

  1. 3.1 Funções SQL Integradas 8 min

    Aprenda como usar funções SQL integradas em SELECT e WHERE, com exemplos práticos baseados no banco Sakila.

  2. 3.2 Funções Comuns de String 8 min

    Aprenda as principais funções de string em SQL com exemplos do Sakila: como limpar, combinar e extrair dados de texto em consultas práticas.

  3. 3.3 Funções Matemáticas Comuns 8 min

    Aprenda as principais funções matemáticas em SQL com exemplos do Sakila: arredondamento, módulo, potência, raiz e cenários práticos de cálculo.

  4. 3.4 Funções de Data e Hora 8 min

    As funções de data em SQL obtêm a data atual, extraem partes, somam intervalos, calculam diferenças e formatam datas. Exemplos com NOW, DATE_ADD, DATEDIFF.

  5. 3.5 Operador condicional 7 min

    SQL CASE WHEN adiciona lógica se-então-senão a uma consulta. CASE simples e de pesquisa, categorias no SELECT, ordenação personalizada e condições no WHERE.

  6. 3.6 Funções JSON 8 min

    Leia valores de colunas JSON por caminho, filtre linhas por eles, conte itens de arrays e monte JSON com JSON_VALUE, ->>, JSON_OBJECT e JSON_ARRAYAGG.

4 Funções de Agregação e Agrupamento

  1. 4.1 Funções Básicas de Agregação 8 min

    Aprenda as principais funções de agregação SQL com exemplos Sakila: COUNT, SUM, AVG, MIN, MAX e diferenças entre COUNT(*), COUNT(column) e COUNT(DISTINCT ...).

  2. 4.2 Agrupando Dados 7 min

    Aprenda GROUP BY: sintaxe, regras, agrupamento por uma ou múltiplas colunas, exemplos práticos com Sakila.

  3. 4.3 Filtrando Dados Agrupados 7 min

    Aprenda HAVING: sintaxe, diferenças WHERE vs HAVING, filtragem de grupos após agregação, exemplos Sakila.

  4. 4.4 Agregação condicional 8 min

    A agregação condicional calcula várias métricas numa consulta SQL com SUM, COUNT e AVG sobre CASE WHEN. Padrões, erros comuns e transformação em colunas.

  5. 4.5 Agregação avançada 9 min

    ROLLUP, CUBE e GROUPING SETS adicionam subtotais e total geral aos resultados do GROUP BY. As diferenças, WITH ROLLUP no MySQL e a função GROUPING().

5 Trabalhar com Múltiplas Tabelas

  1. 5.1 Fundamentos de JOINs em SQL 8 min

    Um SQL JOIN combina linhas de várias tabelas por uma coluna relacionada: como funciona, a cláusula ON e aliases de tabelas, com o Sakila.

  2. 5.2 INNER JOIN - Combinando Linhas Correspondentes 6 min

    SQL INNER JOIN devolve apenas as linhas com correspondência nas duas tabelas. Sintaxe, alias de tabelas, junção de três tabelas e linhas sem par.

  3. 5.3 LEFT JOIN - Incluindo Todos os Registros da Tabela à Esquerda 7 min

    SQL LEFT JOIN devolve todas as linhas da tabela da esquerda e as correspondentes da direita, com NULL quando não há par. Sintaxe, anti-joins e armadilhas.

  4. 5.4 RIGHT JOIN - Incluindo Todos os Registros da Tabela à Direita 4 min

    SQL RIGHT JOIN devolve todas as linhas da tabela da direita e as correspondentes da esquerda. A sintaxe, como espelha o LEFT JOIN e quando usá-lo.

  5. 5.5 FULL OUTER JOIN - Combinando Tudo de Ambas as Tabelas 6 min

    SQL FULL OUTER JOIN devolve todas as linhas das duas tabelas, com NULL onde não há correspondência. A sintaxe e como emulá-lo no MySQL e no MariaDB.

  6. 5.6 CROSS JOIN - O Produto Cartesiano 5 min

    SQL CROSS JOIN devolve todas as combinações de linhas de duas tabelas. A sintaxe, o tamanho do resultado e como montar grades de relatório e preencher lacunas.

  7. 5.7 SELF JOIN - Unindo uma Tabela a si Mesma 5 min

    Um self join em SQL junta uma tabela consigo mesma para comparar linhas ou seguir uma hierarquia. Por que os alias são obrigatórios e como evitar pares.

  8. 5.8 Cenários e Técnicas Práticas de JOIN 8 min

    Exemplos práticos de SQL JOIN: juntar várias tabelas, agregar dados com GROUP BY, encontrar linhas em falta e evitar totais inflados e linhas externas perdidas.

  9. 5.9 Algoritmos de Junção 9 min

    Como os bancos executam junções: nested loop, hash join e merge join. Como cada algoritmo funciona, quando o planejador o escolhe e o EXPLAIN.

  10. 5.10 Operações sobre conjuntos de dados 8 min

    As operações sobre conjuntos de dados permitem combinar, intersectar e subtrair resultados de consultas. Aprenda UNION, INTERSECT e EXCEPT com exemplos Sakila.

6 Subconsultas e Expressões de Tabela Comuns (CTEs)

  1. 6.1 Introdução às Subconsultas 7 min

    Uma subconsulta é um SELECT dentro de outra consulta. Veja tipos de subconsulta, fluxo de execução e Inline View com exemplos práticos em Sakila.

  2. 6.2 Subconsultas na Cláusula WHERE 8 min

    Subconsultas no WHERE permitem filtrar dados dinamicamente. Aprenda IN, NOT IN, EXISTS, NOT EXISTS, ANY e ALL com exemplos práticos de Sakila.

  3. 6.3 Subconsultas Correlacionadas 6 min

    Uma subconsulta correlacionada em SQL usa valores da consulta externa para cada linha. Como funciona, comparar com o grupo, EXISTS e desempenho.

  4. 6.4 Expressões de Tabela Comuns (CTEs) 8 min

    Uma CTE em SQL é um resultado temporário com nome, definido com WITH. Sintaxe da CTE, CTE vs subconsulta, encadear várias CTEs e exemplos práticos de análise.

  5. 6.5 CTEs Recursivas 9 min

    Uma CTE recursiva em SQL percorre hierarquias com WITH RECURSIVE. Membro âncora e recursivo, caminhos no organograma, limite de profundidade e ciclos.

  6. 6.6 Aplicações de CTEs Recursivos 9 min

    Exemplos práticos de CTE recursiva em SQL: gerar uma série de datas, totalizar uma subárvore, explodir uma lista de materiais e encontrar rotas num grafo.

7 Funções de Janela

  1. 7.1 Funções de Janela 8 min

    As funções de janela em SQL calculam sobre linhas relacionadas sem as agrupar: OVER, PARTITION BY, ORDER BY, diferença para GROUP BY e percentagem do total.

  2. 7.2 Usar ROW_NUMBER, RANK, DENSE_RANK e NTILE 8 min

    A diferença entre ROW_NUMBER, RANK, DENSE_RANK e NTILE em SQL: como tratam empates, quando usar cada uma, mais PERCENT_RANK e CUME_DIST.

  3. 7.3 Frames de Janela - Controlando os Limites da Janela 8 min

    A moldura de janela define que linhas uma função de janela usa: ROWS vs RANGE, BETWEEN, UNBOUNDED, a moldura padrão, médias móveis e a cláusula WINDOW.

  4. 7.4 LAG, LEAD, FIRST_VALUE e LAST_VALUE 9 min

    Aprenda LAG, LEAD, FIRST_VALUE e LAST_VALUE: sintaxe, casos de uso comuns, comparação entre linhas sem self join e a nuance importante de LAST_VALUE com frame.

8 Linguagem de Manipulação de Dados (LMD)

  1. 8.1 A Instrução INSERT INTO 7 min

    SQL INSERT INTO adiciona linhas a uma tabela. Sintaxe com lista de colunas, várias linhas de uma vez, INSERT INTO ... SELECT, NULL, DEFAULT e erros comuns.

  2. 8.2 A Instrução UPDATE 7 min

    SQL UPDATE altera linhas existentes. SET e WHERE, várias colunas, cálculo a partir do valor atual, atualização por outra tabela e boas práticas de segurança.

  3. 8.3 A Instrução DELETE 6 min

    SQL DELETE remove linhas de uma tabela. DELETE ... WHERE, remoção com base noutra tabela, erros de chave estrangeira, verificação prévia e DELETE vs TRUNCATE.

  4. 8.4 Transações em SQL 10 min

    Uma transação SQL agrupa comandos em uma unidade: todos têm efeito ou nenhum. Aprenda COMMIT, ROLLBACK, SAVEPOINT, autocommit e níveis de isolamento.

9 Linguagem de Definição de Dados (DDL)

  1. 9.1 A Instrução CREATE TABLE 9 min

    SQL CREATE TABLE cria uma tabela. Tipos de dados, PRIMARY KEY, AUTO_INCREMENT e as restrições NOT NULL, UNIQUE, DEFAULT, CHECK e FOREIGN KEY.

  2. 9.2 A Instrução ALTER TABLE 9 min

    ALTER TABLE altera uma tabela existente. Aprenda a adicionar, alterar, renomear e remover colunas e a adicionar ou remover restrições no MySQL e no PostgreSQL.

  3. 9.3 As instruções TRUNCATE e DROP TABLE 6 min

    SQL TRUNCATE esvazia uma tabela e DROP TABLE remove-a. Veja como diferem do DELETE em velocidade, rollback, autoincremento e chaves estrangeiras.

  4. 9.4 Tabelas temporárias 7 min

    Tabelas temporárias em SQL guardam resultados intermédios numa sessão. CREATE TEMPORARY TABLE, AS SELECT, comparação com CTE e armadilhas do MySQL.

  5. 9.5 Views 8 min

    Aprenda views SQL: sintaxe CREATE VIEW, diferencas entre tabelas comuns e temporarias, atualizacao de dados e exemplos práticos com Sakila.

  6. 9.6 Views Materializadas 9 min

    Uma view materializada guarda o resultado de uma consulta em disco e é atualizada sob demanda. CREATE e REFRESH MATERIALIZED VIEW e a alternativa no MySQL.

  7. 9.7 Normalização de Banco de Dados 10 min

    A normalização divide os dados em tabelas relacionadas para guardar cada fato uma única vez. Aprenda 1FN, 2FN, 3FN, FNBC, anomalias e desnormalização.

10 Desempenho e qualidade das consultas

  1. 10.1 Boas praticas para codigo SQL legivel e sustentavel 8 min

    Boas práticas de SQL legível: maiúsculas nas palavras-chave, quebras de linha, nomes em snake_case, aliases claros, comentários e limpeza de consultas.

  2. 10.2 Escrita de consultas SQL eficientes 10 min

    Consultas SQL eficientes reduzem carga no servidor e aceleram relatórios. Aprenda técnicas práticas de filtro, JOIN, SARGable e LIMIT.

  3. 10.3 Introdução aos índices SQL 10 min

    Aprenda o que são índices SQL, como eles afetam a velocidade de consultas SELECT e quais regras básicas evitam erros comuns de performance.

  4. 10.4 Como ler o EXPLAIN 12 min

    Leia EXPLAIN e EXPLAIN ANALYZE passo a passo: tipos de acesso, ordem dos joins, cost e rows, estimativa vs real e os sinais de uma consulta SQL lenta.

  5. 10.5 Como os Índices B-tree Funcionam 11 min

    Entenda como os índices B-tree são estruturados em SQL, por que aceleram a busca para complexidade logarítmica e como usá-los em consultas práticas.

  6. 10.6 Índices de Texto Completo 10 min

    Um índice full-text encontra linhas por palavras, enquanto LIKE '%palavra%' lê a tabela inteira. MATCH AGAINST no MySQL e busca full-text no PostgreSQL.

11 Transformação e Manipulação de Dados para Análise

  1. 11.1 Processamento prático de strings em SQL 10 min

    Aprenda o processamento prático de texto em SQL: limpar strings, extrair domínios de e-mail, criar rótulos e validar a qualidade dos dados.

  2. 11.2 Uso prático de funções de data e hora para análise de dados 11 min

    Aprenda a aplicar funções de data e hora em SQL na prática: métricas diárias e mensais, cálculo de intervalos, sazonalidade e relatórios analíticos.

12 Análise de tarefas

  1. 12.1 O voo mais rápido 6 min

    Solução de uma tarefa SQL: encontrar o voo mais rápido com uma conexão usando um self-join da tabela flights e aritmética de intervalos no PostgreSQL.

  2. 12.2 Encontrar a Ocupação de Voo por Tarifa 7 min

    Solução de uma tarefa SQL: ocupação média dos assentos por aeroporto e classe com LEFT JOIN, COUNT FILTER e dois níveis de agregação no PostgreSQL.

  3. 12.3 Mapa de Assentos da Aeronave 5 min

    Solução de uma tarefa SQL: mapa de assentos de uma aeronave, dividindo os números com rtrim e right e juntando as letras num array JSON com json_agg.

  4. 12.4 N-ésimo maior salário 7 min

    Encontre o segundo ou o N-ésimo maior salário em SQL: MAX com subconsulta, LIMIT OFFSET, DENSE_RANK, subconsulta correlacionada, empates, NULL e grupos.

  5. 12.5 Encontrar e remover duplicados 7 min

    Como encontrar duplicados em SQL com GROUP BY e HAVING, listar cada cópia com uma função de janela, remover duplicados mantendo uma linha e evitá-los no futuro.

  6. 12.6 Top N linhas por grupo 7 min

    Obter as N primeiras linhas de cada grupo em SQL: ROW_NUMBER com PARTITION BY, empates com RANK e DENSE_RANK, subconsulta correlacionada e LATERAL no Sakila.

  7. 12.7 Total acumulado 6 min

    Total acumulado em SQL com SUM() OVER (ORDER BY): receita acumulada por dia, totais que recomeçam a cada ano, a armadilha ROWS vs RANGE e uma solução antiga.

  8. 12.8 Lacunas e ilhas 7 min

    Gaps and islands em SQL: agrupe datas consecutivas com o truque do ROW_NUMBER, encontre intervalos em falta com LEAD e a maior sequência de cada cliente.

  9. 12.9 Pivot: linhas em colunas 7 min

    Pivot em SQL, de linhas para colunas: agregação condicional com SUM(CASE ...), pivot por mês, pivot dinâmico no MySQL, o operador PIVOT e unpivot.