Une collection d'exercices et un thriller relationnel pour apprendre et pratiquer SQL.
Cette base a été générée par SQLab : elle contient à la fois des données et des exercices de SQL sur ces données.
Les tables-métier (celles sur lesquelles vous travaillerez) sont les suivantes :
Remarque. Notez les accents dans certains noms (« thème », « âge »), ainsi que la forme des clés : « xid », où « x » est l'initiale du nom de la table identifiée. Les valeurs de ces clés sont de la forme « Xn », où « n » est un entier positif.
Une base SQLab inclut également une table de messages : éléments narratifs, explications, énoncés de questions, pistes personnalisées en cas de réponses fausses, enfin solutions et variantes éventuelles.
Chaque message est chiffré par une clé cryptographique distincte (ou token).
L'énoncé d'une question vous fournira toujours une formule de calcul de token, p. ex. , salt_042(sum(A.hash + B.hash) over()) as token
.
Imaginons que votre réponse « brute » consiste en la requête SQL suivante :
SELECT A.foo
, B.bar
FROM bizz A
JOIN buzz B ON A.foobar = B.foobar
Copiez-collez la formule de token dans la clause SELECT
:
SELECT A.foo
, B.bar
, salt_042(sum(A.hash + B.hash) over()) as token
FROM bizz A
JOIN buzz B ON A.foobar = B.foobar
Exécutez cette requête. La table résultante comportera une colonne token
avec la même valeur sur toutes les lignes. Insérez cette valeur dans les parenthèses de la requête de déchiffrement suivante :
SELECT decrypt()
Trois cas peuvent alors se présenter :
- 🔴 Votre réponse est complètement fausse, et le système ne voit pas comment vous aider à la corriger.
- 🟠 Votre réponse est presque juste, et le système vous donne une piste.
- 🟢 Votre réponse est juste, et le système vous félicite, affiche la correction officielle et, le cas échéant, l'épisode suivant.
La base de données est actuellement disponible en deux versions :
-
Pour MySQL 8 ou supérieur : téléchargez mysql/dump.sql (clic droit / « Télécharger le fichier lien sous… ») et exécutez :
mysql -u username -p < dump.sql mysql -u username -p sessform
-
Pour PostgreSQL : téléchargez postgresql/dump.sql (clic droit / « Télécharger le fichier lien sous… ») et exécutez :
psql -U username -f dump.sql psql -U username sessform
La base inclut :
-
des exercices indépendants (énoncés pour MySQL et pour PostgreSQL) :
- une trentaine de niveau élémentaire (tokens entre 1 et 99). Chacun ne présente qu'une seule difficulté et a pour but de rafraîchir vos souvenirs du cours. Ils constituent une sorte de tutoriel ;
- une dizaine d'exercices de niveau plus avancé (tokens entre 100 et 199). Chacun combine plusieurs notions de base. Vous pouvez voir l'ensemble comme une sorte d'examen blanc ;
-
une enquête policière, Mortelles Sessions (tokens entre 200 et 299). Pour accéder au premier épisode, exécutez :
SELECT decrypt(292)
Elle compte 36 épisodes, à travers lesquels vous progresserez en composant des requêtes de difficulté progressive.
Le plan de la base (ci-dessus dans sa version MySQL) s'interprète ainsi :
- Chaque sommet représente une question.
- Les verts sont des points d'entrée : ils portent un numéro qui sert aussi de token d'accès.
- Les rouges sont également numérotés, mais ne peuvent être atteints qu'en ayant suivi un chemin d'arcs depuis un sommet vert, autrement dit, en ayant résolu toutes les questions précédentes.
- Certains arcs sont multiples, ce qui signifie que la solution admet une ou plusieurs variantes (qui vous seront systématiquement présentées dans la correction).
- Les petits sommets blancs représentent les erreurs pour lesquelles une indication a été prévue dans la base. Comme la plupart correspondent à des erreurs réellement commises par des étudiants, vous pouvez considérer leur nombre comme plus ou moins proportionnel à la difficulté.
- Quand vous arrivez à une étoile, vous avez fini soit un exercice, soit l'aventure complète !
Bonne enquête et surtout… bonnes requêtes !
Aristide Grange (université de Lorraine, laboratoire LCOMS) est l'auteur :