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
sudozugä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 ASerstellst - 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.
- Öffne das Terminal und starte den MySQL-Dienst mit dem folgenden Befehl:
sudo service mysql start
- Greife auf den MySQL-Client zu, indem du folgenden Befehl verwendest:
sudo mysql
- Importiere die Daten aus dem Skript
labex_db_info.sqlin MySQL:
SOURCE /home/labex/project/labex_db_info.sql;
Dadurch werden die erforderlichen Daten in die MySQL-Datenbank importiert.
Erstelle die Lieblingskurse-Tabelle
In diesem Schritt wirst du die Tabelle "Lieblingskurse" erstellen, die die Kurse mit der längsten Studienzeit für jeden Benutzer speichern wird.
- Öffne die Datei
searchForFavoriteCourses.sql. - In der Datei
searchForFavoriteCourses.sqlerstelle 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.
Verifizieren Sie die Lieblingskurse-Tabelle
In diesem Schritt wirst du die Inhalte der Tabelle "Lieblingskurse" überprüfen.
- Im MySQL-Prompt führe folgenden Befehl aus, um das Skript
searchForFavoriteCourses.sqlauszuführen:
SOURCE /home/labex/project/searchForFavoriteCourses.sql;
- 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.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.
