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.
Nenhuma aula encontrada. Tente outra palavra.
1 Introdução ao SQL
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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
-
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
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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
-
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.
-
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
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.
-
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.
-
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.
-
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
-
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 ...).
-
4.2
Agrupando Dados
7 min
Aprenda GROUP BY: sintaxe, regras, agrupamento por uma ou múltiplas colunas, exemplos práticos com Sakila.
-
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
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.
-
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
-
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.
-
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.
-
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.
-
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
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.
-
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.
-
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.
-
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.
-
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.
-
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)
-
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.
-
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.
-
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.
-
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.
-
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
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
-
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.
-
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.
-
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.
-
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)
-
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.
-
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.
-
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.
-
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)
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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
-
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.
-
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.
-
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.
-
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.
-
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.
-
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
-
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.
-
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
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.