Lab MySQL et phpMyAdmin avec une base de boutique pour s’exercer en SQL

Ce lab donne à chaque élève son propre serveur MySQL et son propre phpMyAdmin, déjà connecté : les mêmes tables se modifient en SQL dans un terminal et se regardent dans un navigateur. Il démarre avec une base d’exemple pour s’exercer, shop : les clients, produits, commandes et avis d’une petite boutique en ligne, quelques centaines de lignes dans huit tables.

Ce que les élèves apprennent

Le SQL d’un premier SELECT jusqu’aux jointures, au regroupement, à un LEFT JOIN pour trouver les lignes sans correspondance, aux auto-jointures, aux sous-requêtes, aux vues et aux transactions avec ROLLBACK, sur des données écrites pour qu’il y ait quelque chose à trouver : des clients qui n’ont jamais commandé, des produits jamais vendus et des valeurs manquantes. Le Designer de phpMyAdmin dessine les liens entre les tables.

Au-delà des requêtes, les élèves voient qui ils sont dans une base : le compte student possède shop et toute base dont le nom commence par student_, de sorte que CREATE DATABASE student_notes fonctionne et que CREATE DATABASE other est refusé, et SHOW GRANTS en donne la raison. Ils la sauvegardent avec mariadb-dump et la restaurent.

La base shop

Huit tables : categories, suppliers, products, customers, employees, orders, order_items et reviews, avec des clés et des clés étrangères partout. Les exercices du README du dépôt vont des produits à plus de cinquante livres, les plus chers d’abord, jusqu’aux recettes par catégorie, aux clients qui n’ont jamais commandé et aux commandes par mois pour un graphique.

Le lancer dans votre navigateur

L’utilisateur de la base est student, avec le mot de passe student.

  1. Ouvrir la page Conteneur. Ouvrez « Créer » dans la barre et choisissez « Lancer un conteneur ». Tout le monde peut ouvrir la page, et le lab Git et le lab SQL se lancent sans compte. Tous les autres labs demandent un compte gratuit : créez-en un, connectez-vous, puis appuyez sur « Démarrer ».
  2. Trouver le lab. La carte « Laboratoires d’exemple » liste tous les exemples. Trouvez MySQL avec phpMyAdmin.
  3. Appuyer sur Démarrer. « Démarrer » le lance tel quel, en un clic. « Modifier le fichier d’abord » ouvre le fichier compose pour que vous puissiez le changer avant de démarrer.
  4. L’ouvrir. Sur la page du lab, sous « Dans votre navigateur », appuyez sur phpMyAdmin : il s’ouvre déjà connecté, et shop est à gauche. Dans le terminal, indiquez une fois au client d’accepter le certificat du serveur, puis mariadb -h db -u student -pstudent shop ouvre une session. Le README donne les lignes exactes.

Le code sur GitHub

Un fichier compose, avec les données d’exemple écrites dedans, vérifié à chaque push par un test qui démarre le lab comme le fait la plateforme. Faites-en un fork pour changer les données.

Une leçon de base sur ce lab

SQL Basics et SQL Basics 2 sont des leçons qui se font dans ce lab, chaque étape étant expliquée et accompagnée d’un bouton Exécuter qui tape une commande SQL dans le terminal de l’élève. SQL Basics ajoute une nouvelle table à la base de la boutique, puis insère, sélectionne, joint, modifie et supprime des lignes. SQL Basics 2 interroge de nombreuses lignes à la fois : compter, regrouper et trouver les clients qui n’ont jamais passé commande.

Un compte personnel gratuit les reçoit dans le module Basics, qui se trouve sur l’« Accueil », chaque établissement peut les copier depuis le dossier Basics de la Bibliothèque, et un nouvel établissement les a dans un module appelé Database (Sample). Elles sont volontairement petites : elles montrent à un enseignant ce qu’est une leçon qui se fait dans un lab, et le lab fait le reste. Copiez-en une dans un module à vous pour la modifier.

En faire un travail

Donnez à une classe les exercices du README, ou écrivez les vôtres sur shop.

  1. Créer le lab. Dans votre module, ajoutez une tâche et choisissez la carte « Lab de conteneurs », puis « Dans un dépôt GitHub ». Indiquez https://github.com/mitsurutech/lab-mysql-phpmyadmin avec la branche main. Le fichier compose par défaut est compose.yaml. Faites d’abord un fork du dépôt si vous voulez le modifier.
  2. Publier et l’essayer. « Publier » fige le commit qui vous a été montré : un changement ultérieur dans le dépôt ne modifie donc pas un lab que vous avez déjà proposé. Démarrez d’abord votre propre copie.
  3. Le distribuer. Attribuez-le comme n’importe quelle tâche, avec une échéance si vous le souhaitez, et indiquez dans la tâche ce qu’il faut faire et ce qu’il faut rendre.
  4. Noter ce qui est rendu. Ouvrez la copie d’un élève et le travail rendu, notez-le et renvoyez-le avec un motif s’il demande un complément.

Questions fréquentes

Les élèves peuvent-ils créer leurs propres bases ?
Oui, toute base dont le nom commence par student_. Le compte student possède shop et celles-là, et rien d’autre ; root, avec le mot de passe root, est là pour montrer la différence.
Les données sont-elles conservées ?
Oui. MySQL garde ses fichiers dans le volume nommé mysqldata, que la plateforme enregistre : une table créée par un élève est donc là à la session suivante. Le lab est dimensionné pour rester dans la quantité qu’un lab peut enregistrer.
Que contient la base d’exemple shop ?
Huit tables pour une petite boutique en ligne, avec clés et clés étrangères partout : categories, suppliers, products, customers, employees, orders, order_items et reviews, quelques centaines de lignes en tout. Le README du dépôt propose treize exercices SQL dessus, et les données sont écrites pour qu’il y ait quelque chose à trouver, comme les clients qui n’ont jamais commandé.