Nine small puzzles about one messy table. Each level teaches one idea of SQL, the language used to ask questions of tables.
1. Read the log
The table log holds lines of text. A short note at each level explains the new idea and gives an example to run.
2. Write a query
Type SQL in the box and run it. The rows it returns appear below. Change the query and run it again.
3. Enter the answer
Type what you found and check it. Hints, the answer and one way to write the query are there when you want them.
Ctrl or Cmd + Enter runs a queryProgress is saved in this browserNo account needed
Neuf petits casse-têtes autour d’une table en désordre. Chaque niveau enseigne une idée de SQL, le langage qui sert à poser des questions à des tables.
1. Lis le journal
La table log contient des lignes de texte. Une courte note à chaque niveau explique l’idée nouvelle et donne un exemple à lancer.
2. Écris une requête
Saisis du SQL dans la zone et lance-le. Les lignes renvoyées s’affichent dessous. Modifie la requête et relance-la.
3. Saisis la réponse
Écris ce que tu as trouvé et vérifie. Les indices, la réponse et une façon d’écrire la requête sont là si tu en as envie.
Ctrl ou Cmd + Entrée lance une requêteTa progression est gardée dans ce navigateurAucun compte nécessaire
Nueve pequeños acertijos sobre una tabla desordenada. Cada nivel enseña una idea de SQL, el lenguaje con el que se hacen preguntas a las tablas.
1. Lee el registro
La tabla log contiene líneas de texto. Una nota breve en cada nivel explica la idea nueva y da un ejemplo para ejecutar.
2. Escribe una consulta
Escribe SQL en la caja y ejecútalo. Las filas que devuelve aparecen debajo. Cambia la consulta y vuelve a ejecutarla.
3. Escribe la respuesta
Anota lo que encontraste y compruébalo. Las pistas, la respuesta y una forma de escribir la consulta están ahí cuando las quieras.
Ctrl o Cmd + Intro ejecuta una consultaTu progreso se guarda en este navegadorNo hace falta cuenta
Logs and exports tend to arrive untidy: one label spelled three ways, dates in several styles, notes mixed in with the data. A good part of answering a question from data is bringing it into a shape that can be counted. SQL is the language for doing that, and each level practises one move.
What each level practises
Reading a table (levels 1 to 3). SELECT names the columns, FROM names the table, LIMIT stops after a few rows, and count(*) sums rows up.
Keeping the right rows (levels 2 to 5). WHERE keeps rows that pass a test. LIKE matches a piece of text, and AND and OR combine tests.
Cleaning text (levels 3 to 6). trim, lower and replace turn SOLAR_SYSTEM, solar-system and Solar System into one spelling, so a single test matches all of them.
Grouping and ranking (level 6). GROUP BY with count(*) turns a list of labels into totals. CASE names the groups and ORDER BY ranks them.
Joining a table to itself (levels 7 and 9). A label sits on the line after its title. Joining log to log on line_no + 1 puts the two side by side.
Reading mixed dates (levels 8 and 9). GLOB tells the date styles apart, substr cuts out the day, CAST makes it a number, and WITH names a step so the next one can build on it.
A short history
1970Edgar Codd, at IBM, proposes keeping data in tables of rows and columns that can be questioned with a few precise operations.
1974Donald Chamberlin and Raymond Boyce, also at IBM, design a query language called SEQUEL. It later becomes SQL.
1979Oracle ships the first commercial SQL database.
1986SQL becomes an ANSI standard, and an ISO standard in 1987. Most databases speak it since.
2000D. Richard Hipp starts SQLite, a whole database in one small library. It now runs in phones, browsers and aircraft software. This game uses it through sql.js.
The log here has 53 lines so that you can read all of it. Real logs hold millions of lines, and the same queries run on them. The summaries and labels in the log are short paraphrases written for the puzzle.
Les journaux et les exports arrivent souvent en désordre : une étiquette écrite de trois façons, des dates dans plusieurs styles, des notes mêlées aux données. Répondre à une question à partir de données demande en grande partie de les mettre sous une forme qu’on peut compter. SQL est le langage pour cela, et chaque niveau travaille un geste.
Ce que travaille chaque niveau
Lire une table (niveaux 1 à 3). SELECT nomme les colonnes, FROM nomme la table, LIMIT s’arrête après quelques lignes et count(*) additionne les lignes.
Garder les bonnes lignes (niveaux 2 à 5). WHERE garde les lignes qui passent un test. LIKE cherche un morceau de texte, et AND et OR combinent les tests.
Nettoyer le texte (niveaux 3 à 6). trim, lower et replace ramènent SOLAR_SYSTEM, solar-system et Solar System à une seule graphie, et un seul test les trouve toutes.
Regrouper et classer (niveau 6). GROUP BY avec count(*) transforme une liste d’étiquettes en totaux. CASE nomme les groupes et ORDER BY les classe.
Joindre une table à elle-même (niveaux 7 et 9). Une étiquette se trouve sur la ligne qui suit son titre. Joindre log à log sur line_no + 1 met les deux côte à côte.
Lire des dates mêlées (niveaux 8 et 9). GLOB distingue les styles de date, substr découpe le jour, CAST en fait un nombre, et WITH nomme une étape pour que la suivante s’appuie dessus.
Un peu d’histoire
1970Edgar Codd, chez IBM, propose de ranger les données dans des tables de lignes et de colonnes qu’on interroge avec quelques opérations précises.
1974Donald Chamberlin et Raymond Boyce, eux aussi chez IBM, conçoivent un langage de requêtes nommé SEQUEL. Il deviendra SQL.
1979Oracle lance la première base de données SQL commerciale.
1986SQL devient une norme ANSI, puis une norme ISO en 1987. La plupart des bases le parlent depuis.
2000D. Richard Hipp crée SQLite, une base de données entière dans une petite bibliothèque. Elle tourne dans les téléphones, les navigateurs et des logiciels d’avion. Ce jeu l’utilise grâce à sql.js.
Le journal ne compte ici que 53 lignes pour que tu puisses tout lire. Les vrais journaux en contiennent des millions, et les mêmes requêtes s’y appliquent. Les résumés et les étiquettes du journal sont de courtes paraphrases écrites pour le jeu.
Los registros y las exportaciones suelen llegar desordenados: una etiqueta escrita de tres formas, fechas en varios estilos, notas mezcladas con los datos. Gran parte de responder una pregunta con datos consiste en dejarlos en una forma que se pueda contar. SQL es el lenguaje para eso, y cada nivel practica un gesto.
Qué practica cada nivel
Leer una tabla (niveles 1 a 3). SELECT nombra las columnas, FROM nombra la tabla, LIMIT se detiene tras unas filas y count(*) suma filas.
Quedarse con las filas correctas (niveles 2 a 5). WHERE conserva las filas que pasan una prueba. LIKE busca un trozo de texto, y AND y OR combinan pruebas.
Limpiar texto (niveles 3 a 6). trim, lower y replace reducen SOLAR_SYSTEM, solar-system y Solar System a una sola grafía, y una única prueba las encuentra todas.
Agrupar y ordenar (nivel 6). GROUP BY con count(*) convierte una lista de etiquetas en totales. CASE nombra los grupos y ORDER BY los ordena.
Unir una tabla consigo misma (niveles 7 y 9). Una etiqueta está en la línea siguiente a su título. Unir log con log por line_no + 1 las pone una al lado de la otra.
Leer fechas mezcladas (niveles 8 y 9). GLOB distingue los estilos de fecha, substr recorta el día, CAST lo convierte en número, y WITH da nombre a un paso para que el siguiente se apoye en él.
Una breve historia
1970Edgar Codd, en IBM, propone guardar los datos en tablas de filas y columnas que se consultan con unas pocas operaciones precisas.
1974Donald Chamberlin y Raymond Boyce, también en IBM, diseñan un lenguaje de consultas llamado SEQUEL. Más tarde será SQL.
1979Oracle lanza la primera base de datos SQL comercial.
1986SQL pasa a ser un estándar ANSI, y ISO en 1987. Desde entonces casi todas las bases lo hablan.
2000D. Richard Hipp crea SQLite, una base de datos completa en una biblioteca pequeña. Hoy funciona en teléfonos, navegadores y software de aviones. Este juego la usa mediante sql.js.
Aquí el registro tiene solo 53 líneas para que puedas leerlo entero. Los registros reales tienen millones de líneas, y las mismas consultas funcionan en ellos. Los resúmenes y las etiquetas del registro son paráfrasis breves escritas para el juego.