Поиск избранных курсов

SQLSQLBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь создавать таблицу "избранное" в базе данных MySQL. Таблица "избранное" будет хранить курсы с наибольшим временем изучения для каждого пользователя в таблице "usercourse".

👀 Предварительный просмотр

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 rows in set (0.000 sec)

🎯 Задачи

В этом проекте вы научитесь:

  • Как обращаться к базе данных MySQL с использованием команды sudo
  • Как импортировать данные из SQL-скрипта в базу данных MySQL
  • Как создавать новую таблицу с определенными столбцами с использованием инструкции CREATE TABLE AS
  • Как объединять несколько таблиц для получения необходимых данных для таблицы "избранное"

🏆 Достижения

После завершения этого проекта вы сможете:

  • Разобраться, как управлять базой данных MySQL с использованием командной строки
  • Реализовать SQL-запрос для создания новой таблицы на основе данных из нескольких существующих таблиц
  • Применить концепцию поиска максимального значения для каждой группы в таблице
  • Показать свою способность работать с SQL-инструкциями для выполнения определенной задачи управления данными

Доступ к MySQL и импорт базы данных

В этом шаге вы научитесь как получить доступ к базе данных MySQL и импортировать необходимые данные.

  1. Откройте терминал и запустите службу MySQL с использованием следующей команды:
sudo service mysql start
  1. Получите доступ к клиенту MySQL с использованием следующей команды:
sudo mysql
  1. Импортируйте данные из скрипта labex_db_info.sql в MySQL:
SOURCE /home/labex/project/labex_db_info.sql;

Это импортирует необходимые данные в базу данных MySQL.

Создайте таблицу favorite

В этом шаге вы создадите таблицу "избранное", которая будет хранить курсы с наибольшим временем изучения для каждого пользователя.

  1. Откройте файл searchForFavoriteCourses.sql.

  2. В файле searchForFavoriteCourses.sql создайте таблицу "избранное" со следующими столбцами:

    • id (первичный ключ)
    • user_name (имя пользователя)
    • course_name (название курса)
    • study_time (время изучения)
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

Этот запрос создает таблицу "избранное", объединяя таблицы "usercourse" и "user", чтобы получить имя пользователя, а затем объединяя таблицу "course", чтобы получить название курса. Таблица хранит курсы с наибольшим временем изучения для каждого пользователя.

Проверьте таблицу favorite

В этом шаге вы проверите содержимое таблицы "избранное".

  1. В提示符 MySQL выполните следующую команду для выполнения скрипта searchForFavoriteCourses.sql:
SOURCE /home/labex/project/searchForFavoriteCourses.sql;
  1. Выполните следующий запрос, чтобы отобразить первые 10 строк таблицы "избранное":
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 rows in set (0.000 sec)

Этот запрос отобразит первые 10 строк таблицы "избранное", показывая имя пользователя, название курса и время изучения для каждой записи.

Поздравляем! Вы успешно создали таблицу "избранное" и проверили ее содержимое.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.