Gratuito, sem cadastro

Veja a sua query executar, clausula por clausula.

A maioria das pessoas aprende SQL decorando a ordem em que se escreve a consulta. O banco executa numa ordem diferente, e e ai que a duvida nasce. Esta ferramenta mostra a tabela virtual depois de cada etapa, na ordem real.

Roda no navegador. Nada e enviado para servidor nenhum.

Execucao passo a passo
SELECT departamento, COUNT(*) AS total FROM funcionarios WHERE status = 'ativo' GROUP BY departamento HAVING COUNT(*) > 2 ORDER BY total DESC LIMIT 3;
1FROM12 linhas
2WHERE9 linhas
3GROUP BY4 grupos
4HAVING3 grupos
5SELECT3 linhas
6ORDER BY3 linhas
7LIMIT3 linhas

A ordem que voce escreve nao e a ordem que roda

Esse desencontro explica quase toda confusao de quem esta aprendendo: por que o HAVING pode usar COUNT(*) e o WHERE nao, ou por que o apelido criado no SELECT funciona no ORDER BY.

Como voce escreve

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT

A ordem da sintaxe, que e a unica que a maioria dos cursos ensina.

Como o banco executa

FROM e JOIN
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
LIMIT e OFFSET

A ordem logica real. O SELECT e o quinto passo, nao o primeiro, e isso muda tudo.

A ferramenta nao calcula so o resultado final. Ela guarda o estado da tabela virtual depois de cada clausula e deixa voce navegar entre os passos, vendo linhas serem filtradas, agrupadas, reordenadas e recortadas.

O que ela faz

Um ambiente completo de estudo, num arquivo que abre no navegador.

Execucao passo a passo

Navegue pelas sete etapas da consulta e veja a tabela intermediaria de cada uma, com a contagem de linhas em cada ponto.

Editor com destaque

Escreva a consulta com realce de sintaxe, ou parta de um dos exemplos prontos e va modificando.

Importacao de CSV

Arraste um arquivo, ou cole o conteudo. Ele detecta o separador entre virgula, ponto e virgula e tabulacao, e voce escolhe se a primeira linha e cabecalho.

Dados editaveis

Altere valores, acrescente ou remova linhas das tabelas de exemplo e execute de novo. Aprender mexendo nos dados e mais rapido que ler sobre eles.

Desafios com correcao

Dezessete exercicios em tres niveis, com enunciado em portugues. A resposta e conferida na hora, e a comparacao respeita se a ordem das linhas importa ou nao.

Dica de divergencia

Quando a sua resposta difere do gabarito, ele aponta a clausula exata onde os dois caminhos se separaram, em vez de dizer apenas que esta errado.

Referencia pesquisavel

Um painel de consulta rapida para buscar por comando ou funcao, do AVG ao LIKE, sem sair da pagina.

Esquema sempre visivel

As tabelas e colunas disponiveis ficam ao lado do editor, para voce nao precisar adivinhar nome de campo.

Nada sai do seu navegador

Sem conta, sem telemetria, sem envio de dados. O CSV que voce importa nao sobe para lugar algum.

Dezessete desafios, tres niveis

Cada um traz o enunciado em portugues claro e uma sequencia de dicas que vai do empurrao leve ate quase a resposta, para voce escolher quanto de ajuda quer.

5Basico

SELECT, WHERE, ORDER BY e LIMIT. O suficiente para responder perguntas reais.

6Intermediario

Agregacoes, GROUP BY, HAVING, DISTINCT e apelidos de coluna.

6Avancado

JOIN e LEFT JOIN, expressoes calculadas, BETWEEN, IS NULL e OFFSET.

Conceitos cobertos pelos exercicios:

SELECTSELECT *DISTINCTWHERE ANDLIKEBETWEENIN IS NULLGROUP BYHAVINGCOUNT(*) COUNT(coluna)SUMAVGMIN MAXROUNDJOINLEFT JOIN ONASORDER BYLIMIT OFFSET

Por que a correcao continua valendo depois que voce mexe nos dados

O gabarito nao e um resultado gravado. E uma consulta de referencia, reexecutada pela mesma engine contra o banco que estiver carregado no momento. Voce pode editar as tabelas de exemplo ou importar um CSV, e a verificacao continua correta.

Como foi construida

Sem framework, sem etapa de build e sem uma unica dependencia externa. O package.json tem apenas um script de teste.

A engine
Um interpretador de SELECT escrito do zero, com tokenizador e avaliador proprios. Ele nao foi feito para ser rapido, e sim para ser observavel: guarda o estado intermediario de cada clausula, que e justamente o que uma engine de verdade descarta.
Subconjunto suportado
SELECT DISTINCT, expressoes e apelidos, INNER, LEFT, RIGHT e CROSS JOIN, condicoes com AND, OR, NOT, parenteses, LIKE, IN, BETWEEN, IS NULL, agregacoes e LIMIT com OFFSET.
Testes
145 testes automatizados cobrindo a engine, os passos intermediarios e a correcao dos desafios. Rodam em 37 milissegundos, sem framework de teste.
Rastreio de origem
Cada campo carrega a tabela de onde veio, entao depois de um JOIN a interface ainda sabe dizer que nome e de funcionarios e nao de departamentos.
Requisitos
Qualquer navegador atual, no computador ou no celular. Nao precisa instalar nada.
Peso
Cerca de 60 KB comprimidos, no total. Depois de carregada, funciona sem conexao.

Escreva a primeira consulta

Abre na hora, com tabelas de exemplo prontas. Sem cadastro e sem instalar nada.