Laboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

Este laboratorio da a cada alumno su propio servidor MySQL y su propio phpMyAdmin, con la sesión ya iniciada, de modo que las mismas tablas se pueden modificar con SQL en un terminal y examinar en un navegador. Empieza con una base de datos de ejemplo para practicar, shop: los clientes, productos, pedidos y reseñas de una pequeña tienda en línea, unos cientos de filas en ocho tablas.

Qué aprenden los alumnos

SQL desde un primer SELECT pasando por joins, agrupaciones, un LEFT JOIN para encontrar filas sin correspondencia, autouniones, subconsultas, vistas y transacciones con ROLLBACK, sobre datos escritos para que haya algo que encontrar: clientes que nunca han pedido, productos nunca vendidos y valores que faltan. El Designer de phpMyAdmin dibuja cómo se conectan las tablas.

Más allá de las consultas, los alumnos ven quiénes son dentro de una base de datos: la cuenta student es propietaria de shop y de cualquier base de datos cuyo nombre empiece por student_, así que CREATE DATABASE student_notes funciona y CREATE DATABASE other se rechaza, y SHOW GRANTS explica por qué. Hacen una copia de seguridad con mariadb-dump y la restauran.

La base de datos shop

Ocho tablas: categories, suppliers, products, customers, employees, orders, order_items y reviews, con claves y claves externas en todas partes. Los ejercicios del README del repositorio van desde los productos de más de cincuenta libras, el más caro primero, hasta la recaudación por categoría, los clientes que nunca pidieron y los pedidos por mes para un gráfico.

Ejecútalo en tu navegador

El usuario de la base de datos es student con la contraseña student.

  1. Abre la página Contenedor. Abre «Crear» en la barra y elige «Ejecutar un contenedor». Cualquiera puede abrir la página, y el laboratorio de Git y el de SQL se inician sin cuenta. Todos los demás laboratorios necesitan una cuenta gratuita: crea una, inicia sesión y pulsa «Iniciar».
  2. Busca el laboratorio. La tarjeta «Laboratorios de ejemplo» lista todos los ejemplos. Busca MySQL con phpMyAdmin.
  3. Pulsa «Iniciar». «Iniciar» lo ejecuta tal cual, con una sola pulsación. «Editar el archivo primero» abre el archivo compose para que lo cambies antes de iniciarlo.
  4. Ábrelo. En la página del laboratorio, en «En tu navegador», pulsa phpMyAdmin: se abre con la sesión iniciada, y shop aparece a la izquierda. En el terminal, indica una vez al cliente que acepte el certificado del propio servidor, y mariadb -h db -u student -pstudent shop abre una sesión. El README da las líneas exactas.

El código en GitHub

Un archivo compose, con los datos de ejemplo escritos en él, comprobado en cada push por una prueba que inicia el laboratorio como lo ejecuta la plataforma. Haz un fork para cambiar los datos.

Una lección básica en este laboratorio

SQL Basics y SQL Basics 2 son lecciones hechas en este laboratorio, cada paso explicado y con un botón Ejecutar que escribe un comando SQL en el terminal del alumno. SQL Basics añade una tabla nueva a la base de datos shop e inserta, consulta, une, actualiza y borra filas. SQL Basics 2 hace preguntas a muchas filas a la vez: contar, agrupar y encontrar los clientes que nunca han hecho un pedido.

Una cuenta personal gratuita las recibe en el módulo Basics, que está en Inicio, cada centro puede copiarlas de la carpeta Basics de la Biblioteca, y un centro nuevo las tiene en un módulo llamado Database (Sample). Son deliberadamente breves: muestran a un docente lo que es una lección hecha en un laboratorio, y el laboratorio hace el resto. Copia una en un módulo propio para cambiarla.

Asígnalo como trabajo

Da a una clase los ejercicios del README, o escribe los tuyos sobre shop.

  1. Crea el laboratorio. En tu módulo añade una tarea y elige la tarjeta «Laboratorio de contenedores», y después «En un repositorio de GitHub». Indica https://github.com/mitsurutech/lab-mysql-phpmyadmin con la rama main. El archivo compose es el predeterminado, compose.yaml. Haz un fork del repositorio antes si quieres modificarlo.
  2. Publica y pruébalo. «Publicar» fija el commit que te mostraron, así que un cambio posterior en el repositorio no altera un laboratorio que ya has asignado. Inicia primero tu propia copia.
  3. Asígnalo. Asígnalo como cualquier tarea, con una fecha de entrega si quieres, e indica en la tarea qué hacer y qué entregar.
  4. Califica lo entregado. Abre la copia de un alumno y el trabajo que ha entregado, califícalo y devuélvelo con un motivo si necesita más.

Preguntas frecuentes

¿Pueden los alumnos crear sus propias bases de datos?
Sí, cualquiera cuyo nombre empiece por student_. La cuenta student es propietaria de shop y de esas y de nada más; root, con la contraseña root, está para mostrar la diferencia.
¿Se conservan los datos?
Sí. MySQL guarda sus archivos en el volumen con nombre mysqldata, que la plataforma conserva, así que una tabla creada por un alumno sigue ahí en la sesión siguiente. El laboratorio está dimensionado para no superar lo que un laboratorio puede guardar.
¿Qué contiene la base de datos de ejemplo shop?
Ocho tablas de una pequeña tienda en línea, con claves y claves foráneas en todas partes: categories, suppliers, products, customers, employees, orders, order_items y reviews, unos cientos de filas en total. El README del repositorio trae trece ejercicios de SQL sobre ella, y los datos están escritos para que haya algo que encontrar, como los clientes que nunca han pedido.