Buscar cursos favoritos

SQLBeginner
Practicar Ahora

Introducción

En este proyecto, aprenderás a crear una tabla "favorita" en una base de datos MySQL. La tabla "favorita" almacenará los cursos con el mayor tiempo de estudio para cada usuario en la tabla "usercourse".

👀 Vista previa

MariaDB [labex]> select * from favorite limit 10;
+----+-----------+-------------+------------+
| id | user_name | course_name | study_time |
+----+-----------+-------------+------------+
|  2 | user_01   | English     |        101 |
|  3 | user_02   | Chinese     |        102 |
|  4 | user_03   | Chemical    |        103 |
|  5 | user_04   | Physics     |        104 |
|  6 | user_05   | Biology     |        105 |
|  7 | user_06   | Painting    |        106 |
|  8 | user_07   | Music       |        107 |
|  9 | user_08   | Computer    |        108 |
| 10 | user_09   | History     |        109 |
| 11 | user_10   | Math        |        110 |
+----+-----------+-------------+------------+
10 filas en el conjunto (0,000 segundos)

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo acceder a la base de datos MySQL utilizando el comando sudo
  • Cómo importar datos de un script SQL en la base de datos MySQL
  • Cómo crear una nueva tabla con columnas específicas utilizando la instrucción CREATE TABLE AS
  • Cómo unir múltiples tablas para recuperar los datos necesarios para la tabla "favorita"

🏆 Logros

Después de completar este proyecto, podrás:

  • Comprender cómo administrar una base de datos MySQL utilizando la línea de comandos
  • Implementar una consulta SQL para crear una nueva tabla basada en datos de múltiples tablas existentes
  • Aplicar el concepto de encontrar el valor máximo para cada grupo en una tabla
  • Demostrar tu capacidad para trabajar con instrucciones SQL para lograr una tarea específica de gestión de datos

Acceder a MySQL e importar la base de datos

En este paso, aprenderás cómo acceder a la base de datos MySQL e importar los datos necesarios.

  1. Abra la terminal y inicie el servicio MySQL utilizando el siguiente comando:
sudo service mysql start
  1. Acceda al cliente MySQL utilizando el siguiente comando:
sudo mysql
  1. Importe los datos del script labex_db_info.sql en MySQL:
SOURCE /home/labex/project/labex_db_info.sql;

Esto importará los datos necesarios en la base de datos MySQL.

✨ Revisar Solución y Practicar

Crear la tabla favorite

En este paso, crearás la tabla "favorite", que almacenará los cursos con el mayor tiempo de estudio para cada usuario.

  1. Abre el archivo searchForFavoriteCourses.sql.
  2. En el archivo searchForFavoriteCourses.sql, crea la tabla "favorite" con las siguientes columnas:
    • id (clave primaria)
    • user_name (nombre de usuario)
    • course_name (nombre del curso)
    • study_time (tiempo de estudio)
create table favorite as
SELECT t1.id, t1.user_name, t2.course_name, t1.study_time
FROM (
         SELECT a.id, a.course_id, a.study_time, b.user_name
         FROM (
                  SELECT t0.id, t0.user_id, t0.course_id, t0.study_time
                  FROM usercourse t0
                  INNER JOIN (
                      SELECT user_id, MAX(study_time) AS max_study_time
                      FROM usercourse
                      GROUP BY user_id
                  ) t_max ON t0.user_id = t_max.user_id AND t0.study_time >= t_max.max_study_time
              ) a LEFT JOIN user b ON a.user_id = b.user_id
) t1 LEFT JOIN course t2 ON t1.course_id = t2.course_id

Esta consulta crea la tabla "favorite" uniendo las tablas "usercourse" y "user" para obtener el nombre de usuario y luego uniendo la tabla "course" para obtener el nombre del curso. La tabla almacena los cursos con el mayor tiempo de estudio para cada usuario.

✨ Revisar Solución y Practicar

Verificar la tabla favorite

En este paso, verificaras el contenido de la tabla "favorite".

  1. En el prompt de MySQL, ejecuta el siguiente comando para ejecutar el script searchForFavoriteCourses.sql:
SOURCE /home/labex/project/searchForFavoriteCourses.sql;
  1. Ejecuta la siguiente consulta para mostrar las primeras 10 filas de la tabla "favorite":
MariaDB [labex]> select * from favorite limit 10;
+----+-----------+-------------+------------+
| id | user_name | course_name | study_time |
+----+-----------+-------------+------------+
|  2 | user_01   | English     |        101 |
|  3 | user_02   | Chinese     |        102 |
|  4 | user_03   | Chemical    |        103 |
|  5 | user_04   | Physics     |        104 |
|  6 | user_05   | Biology     |        105 |
|  7 | user_06   | Painting    |        106 |
|  8 | user_07   | Music       |        107 |
|  9 | user_08   | Computer    |        108 |
| 10 | user_09   | History     |        109 |
| 11 | user_10   | Math        |        110 |
+----+-----------+-------------+------------+
10 filas en el conjunto (0.000 segundos)

Esta consulta mostrará las primeras 10 filas de la tabla "favorite", mostrando el nombre de usuario, el nombre del curso y el tiempo de estudio para cada registro.

¡Felicitaciones! Has creado con éxito la tabla "favorite" y verificado su contenido.

✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.