Lektion 05 - SQL Uebungen
Viele praktische SQL-Aufgaben
Diese Lektion ist dein Trainingsbereich. Du uebst SQL wie in phpMyAdmin: Tabellen erstellen, Daten einfuegen, abfragen, filtern, sortieren, verbinden, gruppieren, aktualisieren und loeschen.
0. Testdaten fuer alle Aufgaben
Nutze diese Tabellen als Grundlage. Du kannst sie im SQL-Tab von phpMyAdmin ausfuehren.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
points INT NOT NULL DEFAULT 0
);
CREATE TABLE courses (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(150) NOT NULL,
topic VARCHAR(100) NOT NULL
);
CREATE TABLE lessons (
id INT AUTO_INCREMENT PRIMARY KEY,
course_id INT NOT NULL,
title VARCHAR(150) NOT NULL,
sort_order INT NOT NULL,
FOREIGN KEY (course_id) REFERENCES courses(id)
);
INSERT INTO users (name, email, points) VALUES
('Mina', 'mina@example.com', 80),
('Alex', 'alex@example.com', 45),
('Sam', 'sam@example.com', 120);
INSERT INTO courses (title, topic) VALUES
('Dart Einstieg', 'Programming'),
('SQL Grundlagen', 'Database');
INSERT INTO lessons (course_id, title, sort_order) VALUES
(1, 'Variablen', 1),
(1, 'Klassen', 2),
(2, 'SELECT', 1),
(2, 'JOIN', 2);
1. SELECT-Uebungen
- Zeige alle User an.
- Zeige nur
nameundpointsan. - Zeige alle Kurse an.
- Zeige alle Lektionen an.
- Zeige alle User, die mindestens 50 Punkte haben.
SELECT * FROM users;
SELECT name, points
FROM users;
SELECT *
FROM users
WHERE points >= 50;
2. WHERE, LIKE, BETWEEN
- Finde User mit exakt 80 Punkten.
- Finde User, deren Name mit
Abeginnt. - Finde User zwischen 40 und 100 Punkten.
- Finde Kurse mit Thema
Database. - Finde Lektionen mit
sort_ordergroesser als 1.
SELECT *
FROM users
WHERE name LIKE 'A%';
SELECT *
FROM users
WHERE points BETWEEN 40 AND 100;
3. ORDER BY und LIMIT
- Sortiere User nach Punkten absteigend.
- Sortiere User nach Namen aufsteigend.
- Zeige nur den User mit den meisten Punkten.
- Sortiere Lektionen nach
course_idundsort_order.
SELECT *
FROM users
ORDER BY points DESC
LIMIT 1;
4. INSERT-Uebungen
- Fuege einen neuen User ein.
- Fuege einen neuen Kurs
PHP Datenbankenein. - Fuege zwei Lektionen fuer diesen Kurs ein.
- Teste danach mit
SELECT, ob die Daten existieren.
INSERT INTO users (name, email, points)
VALUES ('Lina', 'lina@example.com', 0);
5. UPDATE-Uebungen
- Erhoehe Minas Punkte um 10.
- Setze Alex Punkte auf 55.
- Aendere den Titel eines Kurses.
- Aendere eine Lektion von
JOINzuINNER JOIN. - Teste jede Aenderung mit einem
SELECT.
UPDATE users
SET points = points + 10
WHERE email = 'mina@example.com';
6. DELETE-Uebungen
- Fuege einen Test-User ein und loesche ihn danach.
- Loesche eine Lektion mit bestimmter ID.
- Teste, was passiert, wenn du einen Kurs loeschen willst, zu dem noch Lektionen gehoeren.
- Erklaere, warum Fremdschluessel Loeschfehler verhindern koennen.
DELETE FROM users
WHERE email = 'test@example.com';
7. JOIN-Uebungen
- Zeige jede Lektion mit Kurstitel.
- Zeige nur Lektionen aus dem Kurs
SQL Grundlagen. - Sortiere die Lektionen je Kurs nach
sort_order. - Gib Spalten aliasiert aus:
course_title,lesson_title.
SELECT courses.title AS course_title, lessons.title AS lesson_title
FROM lessons
JOIN courses ON lessons.course_id = courses.id
ORDER BY courses.title, lessons.sort_order;
8. GROUP BY und COUNT
- Zaehle alle User.
- Berechne den Durchschnitt der Punkte.
- Zaehle Lektionen pro Kurs.
- Zeige nur Kurse mit mindestens zwei Lektionen.
SELECT courses.title, COUNT(lessons.id) AS lesson_count
FROM courses
LEFT JOIN lessons ON lessons.course_id = courses.id
GROUP BY courses.id, courses.title;
9. Kombi-Aufgaben
- Erstelle einen Kurs, fuege drei Lektionen ein und frage sie sortiert ab.
- Erstelle einen User, erhoehe Punkte, zeige ihn sortiert in der Rangliste.
- Schreibe eine Abfrage fuer alle Kurse inklusive Anzahl Lektionen.
- Schreibe eine Abfrage fuer alle User mit Status: ab 50 Punkten
bestanden. - Dokumentiere drei SQL-Befehle in eigenen Worten.