SQL Noir – Aprenda SQL resolvendo crimes
(sqlnoir.com)- SQLNoir é um jogo de aprendizado de SQL baseado em histórias em que você abre arquivos de casos e consulta o banco de dados para encontrar pistas
- Cada caso oferece um briefing, um esquema de banco de dados e um editor SQL integrado, permitindo verificar suspeitos e pistas por meio de queries
- É possível praticar repetidamente padrões reais de SQL, como filtragem, joins, agregações e subqueries, dentro do processo de resolução dos casos
- Você pode começar sem nenhuma instalação ou configuração de ambiente, e acompanhar o progresso por XP e pelo número de casos resolvidos
- Casos iniciantes cobrem os fundamentos, enquanto casos avançados exigem joins hierárquicos e condições mais difíceis, atendendo a desenvolvedores, analistas de dados, estudantes e instrutores
Aprenda SQL resolvendo casos
- SQLNoir coloca o usuário em uma investigação guiada por história e fornece um briefing do caso junto com o esquema do banco de dados
- O usuário executa queries SQL no editor integrado, relaciona tabelas, elimina suspeitos e verifica álibis
- Os padrões de SQL praticados dentro do fluxo do caso incluem:
- Filtragem
- Joins
- Agregações
- Subqueries
- Sem instalação ou configuração separada, é possível abrir um arquivo de caso e começar a investigar os dados imediatamente
Progresso e público-alvo
- XP e o número de casos resolvidos mostram o progresso
- Casos iniciantes são estruturados para ensinar os fundamentos de SQL, enquanto casos avançados exigem joins hierárquicos e condições mais complexas
- É adequado para:
- Desenvolvedores que querem praticar fundamentos de SQL e joins na mão
- Analistas de dados se preparando para entrevistas com cenários realistas de queries
- Estudantes que aprendem mais rápido com histórias e feedback imediato do que com materiais didáticos secos
- Instrutores que procuram exercícios de SQL que não exijam configuração de ambiente dos alunos
1 comentários
Opiniões no Hacker News
Divertido, gostei
Para acrescentar algumas coisas: no primeiro caso, o campo de envio não deixa claro se é para inserir o nome ou o ID do suspeito
Seria bom ter um botão “copiar para as notas” nos resultados, e também alguma documentação sobre quais funções estão disponíveis ou qual dialeto de SQL é usado
É muito mais fácil aprender resolvendo pequenos projetos de verdade, então parece uma abordagem bem valiosa
Como usuário, por ser um jogo de detetive, presumi naturalmente que queriam o nome do “suspeito”
Muito divertido
Como pequena melhoria, seria bom poder baixar diretamente o banco de dados SQLite para consultar no app de preferência, deixando o site apenas para briefing, notas e envio
Além disso, para algo voltado a “aprender SQL”, acho que precisaria de um pouco mais de orientação ou exemplos de consultas
No estado atual, se a pessoa não sabe SQL, parece fácil ficar completamente perdida sobre o que fazer; é uma ferramenta legal, mas ainda não se encaixa muito bem como ferramenta de aprendizado
Uma boa adição a uma área que não tem muitas opções
O que me vem à mente são SQL Island (https://sql-island.informatik.uni-kl.de) e SQL Murder Mystery (https://mystery.knightlab.com); a abordagem do SQL Noir é mais próxima do segundo, uma aventura independente não guiada
Estou criando o SQLab, um motor de jogo SQL que permite adicionar exercícios a um banco de dados-base arbitrário para criar aventuras independentes guiadas: https://github.com/laowantong/sqlab
Dá para baixar dumps de banco de dados e jogar atualmente em MySQL, SQLite e Postgres, usando qualquer interface administrativa
Na mesma página também há um link para uma longa investigação policial criada para estudantes franceses; se você é professor ou pesquisador, os princípios do SQLab estão explicados aqui: https://arxiv.org/abs/2410.16120
Os outros projetos mencionados aqui também são bons
Também acrescento meus projetos SQL Game Console e SQL Game Editor, que permitem que estudantes criem seus próprios jogos de escape em SQL no navegador: https://eskuel.de
Foi divertido testar em sala de aula, e no momento só há suporte a alemão
Jogo de exemplo: https://eskuel.de/zoo/
Me fez lembrar de MathNet, que eu via quando era criança
Era uma série educativa de investigação policial no estilo Dragnet, em que os dois investigadores carregavam calculadoras como se fossem coldres
https://en.m.wikipedia.org/wiki/Mathnet
https://youtu.be/vNhBq3kjq_Q?t=2011
Gostei; o estilo é distinto e bacana
Parece o começo de uma forma divertida de aprender, praticar e relembrar SQL
Algumas coisas: seria bom ter um único espaço de trabalho, sem abas. Fico alternando entre abas o tempo todo
Seria bom poder salvar consultas SQL anteriores e seus resultados; no momento eu estava copiando os resultados para as notas
À medida que ficar mais complexo, esse recurso deve se tornar importante
Acabei de implementar a visualização lado a lado, permitindo ver 2 abas ao mesmo tempo; espero que ajude
Como outros usuários sugeriram, também dá para salvar consultas nas notas ou deixá-las comentadas no editor
Só falta o chapéu e dizer algumas vezes “Só os fatos, senhora” para completar
A ideia é boa, mas a imersão da UI é quase inexistente
Para aumentar a imersão, precisa de autocomplete, da capacidade de ver o schema e a consulta juntos em telas largas, e de copiar facilmente nomes de tabelas e colunas com um clique
Em especial, os nomes de tabelas nem sequer podem ser selecionados
Em vez de permitir apenas sobrescrever uma consulta já executada, seria bom poder continuar adicionando novas consultas acima ou abaixo das consultas executadas
Ele reduz a imersão e também diminui a parte em que você precisa lembrar por conta própria
Talvez fizesse sentido ativá-lo em um new game plus
Acabei de implementar uma visualização Side by Side para abrir duas abas diferentes ao mesmo tempo, e um botão para copiar nomes de tabelas
command-/Ideia muito boa, e foi divertido resolver o caso
Para programadores júnior, talvez uma versão em quadrinhos ajudasse
Às vezes o editor SQL se comporta de forma estranha e impede escrever corretamente
Ao tentar adicionar comentários no editor, ele se comporta de forma estranha
A forma de reproduzir é escrever várias linhas e depois comentar uma linha por vez adicionando
--antes de cada umaPor exemplo, escreva
select i.*, s.*,from interviews i,join suspects s,on s.id = i.suspect_id; então, no momento em que você também coloca--antes defrom interviews i, essa linha se move para a linha anterior e o realce de sintaxe quebraAcho que acabei de corrigir esse bug
Lembro que, na época da faculdade, um instrutor nos passou o link de um minigame de resolver crimes parecido com este para praticar SQL
Fiquei bem envolvido, a ponto de tentar encontrar a solução de uma linha mais eficiente
Obrigado por criar isso; acho que vou repassar para pessoas que queiram aprender SQL
Bem divertido; resolvi os dois mistérios gratuitos e foi satisfatório chegar à solução
Uma pequena ressalva é que seria bom se o editor SQL tivesse suporte a comentários
Se eu pudesse comentar consultas antigas antes de executar uma nova, deixando um histórico, seria conveniente, especialmente quando preciso rodar a mesma consulta de novo
--Se não funcionar, é um bug, então vou investigar
Você também pode usar a aba Notes para salvar consultas antigas e descobertas