Suche nach Lieblingskursen

SQLSQLBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du eine Tabelle "Lieblingskurse" in einer MySQL-Datenbank erstellen kannst. Die Tabelle "Lieblingskurse" wird die Kurse mit der längsten Studienzeit für jeden Benutzer in der Tabelle "Benutzerkurse" speichern.

👀 Vorschau

MariaDB [labex]> select * from favorite limit 10;
+----+-----------+-------------+------------+
| id | user_name | course_name | study_time |
+----+-----------+-------------+------------+
|  2 | user_01   | Englisch    |        101 |
|  3 | user_02   | Chinesisch   |        102 |
|  4 | user_03   | Chemie      |        103 |
|  5 | user_04   | Physik      |        104 |
|  6 | user_05   | Biologie    |        105 |
|  7 | user_06   | Malerei     |        106 |
|  8 | user_07   | Musik       |        107 |
|  9 | user_08   | Informatik  |        108 |
| 10 | user_09   | Geschichte   |        109 |
| 11 | user_10   | Mathematik  |        110 |
+----+-----------+-------------+------------+
10 Zeilen in set (0,000 sec)

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du die MySQL-Datenbank mit dem Befehl sudo zugängst
  • Wie du Daten aus einem SQL-Skript in die MySQL-Datenbank importierst
  • Wie du eine neue Tabelle mit bestimmten Spalten mit dem Befehl CREATE TABLE AS erstellst
  • Wie du mehrere Tabellen verknüpft, um die erforderlichen Daten für die Tabelle "Lieblingskurse" abzurufen

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Zu verstehen, wie du eine MySQL-Datenbank über die Befehlszeile verwaltest
  • Ein SQL-Abfrage umzusetzen, um eine neue Tabelle basierend auf Daten aus mehreren vorhandenen Tabellen zu erstellen
  • Das Konzept der Suche nach dem Maximum für jede Gruppe in einer Tabelle anzuwenden
  • Deine Fähigkeiten bei der Arbeit mit SQL-Befehlen zur Erfüllung einer bestimmten Datenverwaltungstask zu demonstrieren

Zugang zu MySQL und Import der Datenbank

In diesem Schritt lernst du, wie du auf die MySQL-Datenbank zugreifst und die erforderlichen Daten importierst.

  1. Öffne das Terminal und starte den MySQL-Dienst mit dem folgenden Befehl:
sudo service mysql start
  1. Greife auf den MySQL-Client zu, indem du folgenden Befehl verwendest:
sudo mysql
  1. Importiere die Daten aus dem Skript labex_db_info.sql in MySQL:
SOURCE /home/labex/project/labex_db_info.sql;

Dadurch werden die erforderlichen Daten in die MySQL-Datenbank importiert.

Erstellen der Tabelle "Lieblingskurse"

In diesem Schritt wirst du die Tabelle "Lieblingskurse" erstellen, die die Kurse mit der längsten Studienzeit für jeden Benutzer speichern wird.

  1. Öffne die Datei searchForFavoriteCourses.sql.

  2. In der Datei searchForFavoriteCourses.sql erstelle die Tabelle "Lieblingskurse" mit folgenden Spalten:

    • id (Primärschlüssel)
    • user_name (Benutzername)
    • course_name (Kursname)
    • study_time (Studienzeit)
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

Diese Abfrage erstellt die Tabelle "Lieblingskurse", indem sie die Tabellen "Benutzerkurse" und "Benutzer" verknüpft, um den Benutzernamen zu erhalten, und anschließend die Tabelle "Kurs" verknüpft, um den Kursnamen zu erhalten. Die Tabelle speichert die Kurse mit der längsten Studienzeit für jeden Benutzer.

Überprüfen der Tabelle "Lieblingskurse"

In diesem Schritt wirst du die Inhalte der Tabelle "Lieblingskurse" überprüfen.

  1. Im MySQL-Prompt führe folgenden Befehl aus, um das Skript searchForFavoriteCourses.sql auszuführen:
SOURCE /home/labex/project/searchForFavoriteCourses.sql;
  1. Führe folgende Abfrage aus, um die ersten 10 Zeilen der Tabelle "Lieblingskurse" anzuzeigen:
MariaDB [labex]> select * from favorite limit 10;
+----+-----------+-------------+------------+
| id | user_name | course_name | study_time |
+----+-----------+-------------+------------+
|  2 | user_01   | Englisch    |        101 |
|  3 | user_02   | Chinesisch   |        102 |
|  4 | user_03   | Chemie      |        103 |
|  5 | user_04   | Physik      |        104 |
|  6 | user_05   | Biologie    |        105 |
|  7 | user_06   | Malerei     |        106 |
|  8 | user_07   | Musik       |        107 |
|  9 | user_08   | Informatik  |        108 |
| 10 | user_09   | Geschichte   |        109 |
| 11 | user_10   | Mathematik  |        110 |
+----+-----------+-------------+------------+
10 Zeilen in set (0,000 sec)

Diese Abfrage wird die ersten 10 Zeilen der Tabelle "Lieblingskurse" anzeigen und für jede Zeile den Benutzernamen, den Kursnamen und die Studienzeit anzeigen.

Herzlichen Glückwunsch! Du hast die Tabelle "Lieblingskurse" erfolgreich erstellt und ihre Inhalte überprüft.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.