DB Kurs Naechste Lektion

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

  1. Zeige alle User an.
  2. Zeige nur name und points an.
  3. Zeige alle Kurse an.
  4. Zeige alle Lektionen an.
  5. 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

  1. Finde User mit exakt 80 Punkten.
  2. Finde User, deren Name mit A beginnt.
  3. Finde User zwischen 40 und 100 Punkten.
  4. Finde Kurse mit Thema Database.
  5. Finde Lektionen mit sort_order groesser als 1.
SELECT *
FROM users
WHERE name LIKE 'A%';

SELECT *
FROM users
WHERE points BETWEEN 40 AND 100;

3. ORDER BY und LIMIT

  1. Sortiere User nach Punkten absteigend.
  2. Sortiere User nach Namen aufsteigend.
  3. Zeige nur den User mit den meisten Punkten.
  4. Sortiere Lektionen nach course_id und sort_order.
SELECT *
FROM users
ORDER BY points DESC
LIMIT 1;

4. INSERT-Uebungen

  1. Fuege einen neuen User ein.
  2. Fuege einen neuen Kurs PHP Datenbanken ein.
  3. Fuege zwei Lektionen fuer diesen Kurs ein.
  4. Teste danach mit SELECT, ob die Daten existieren.
INSERT INTO users (name, email, points)
VALUES ('Lina', 'lina@example.com', 0);

5. UPDATE-Uebungen

  1. Erhoehe Minas Punkte um 10.
  2. Setze Alex Punkte auf 55.
  3. Aendere den Titel eines Kurses.
  4. Aendere eine Lektion von JOIN zu INNER JOIN.
  5. Teste jede Aenderung mit einem SELECT.
UPDATE users
SET points = points + 10
WHERE email = 'mina@example.com';

6. DELETE-Uebungen

  1. Fuege einen Test-User ein und loesche ihn danach.
  2. Loesche eine Lektion mit bestimmter ID.
  3. Teste, was passiert, wenn du einen Kurs loeschen willst, zu dem noch Lektionen gehoeren.
  4. Erklaere, warum Fremdschluessel Loeschfehler verhindern koennen.
DELETE FROM users
WHERE email = 'test@example.com';

7. JOIN-Uebungen

  1. Zeige jede Lektion mit Kurstitel.
  2. Zeige nur Lektionen aus dem Kurs SQL Grundlagen.
  3. Sortiere die Lektionen je Kurs nach sort_order.
  4. 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

  1. Zaehle alle User.
  2. Berechne den Durchschnitt der Punkte.
  3. Zaehle Lektionen pro Kurs.
  4. 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

  1. Erstelle einen Kurs, fuege drei Lektionen ein und frage sie sortiert ab.
  2. Erstelle einen User, erhoehe Punkte, zeige ihn sortiert in der Rangliste.
  3. Schreibe eine Abfrage fuer alle Kurse inklusive Anzahl Lektionen.
  4. Schreibe eine Abfrage fuer alle User mit Status: ab 50 Punkten bestanden.
  5. Dokumentiere drei SQL-Befehle in eigenen Worten.
Weiter zu PHP & PDO