Schlüssel, Anomalien, WHERE und HAVING — 30 Aufgaben rund um Datenbanken.
Dein Fortschritt:
0 / 0 Aufgaben
1
Übungsaufgaben
Dreißig Aufgaben vom Lesen eines Schemas (AFB I) bis zur Abschätzung von Ergebnisgrößen (AFB III). A17 und A23 nutzen dieselbe Beispieltabelle.
A1
Schlüssel erkennen
AFB I
Schema: Mitglied(MNr, Name, ↑AbtKuerzel), Abteilung(Kuerzel, Bezeichnung). Gib alle zutreffenden Aussagen an.
Mehrere Antworten sind richtig. Markiere alle zutreffenden und klicke dann auf „Prüfen“.
Der Fremdschlüssel steht auf der n-Seite: Jedes Mitglied hat genau eine Abteilung, eine Abteilung viele Mitglieder. Für mehrere Abteilungen je Mitglied bräuchte man eine eigene Tabelle.
Frage: Was bedeutet der Pfeil ↑ in der Kurzschreibweise?Warum? Er markiert Fremdschlüssel.
Fünf Aussagen zum SQL-Umfang der Prüfung. Ordne sie als richtig oder falsch ein.
5 Aussagen nacheinander. Eine falsche Einschätzung reicht — dann startest du die Serie mit „Neue Runde“ neu.
Aussage 1 von 5
Zwei Platzhalter, zwei Filter-Orte: _ und %, WHERE und HAVING.
Frage: Wie viele Zeichen ersetzt _?Warum? Genau eins.
Hilfe: WHERE vor dem Gruppieren, HAVING danach.
A3
Wer klettert lange?
AFB II
Eine Kletterhalle speichert Besuch(BNr, Name, Stunden). Gesucht sind die Namen aller Personen, die mindestens einmal länger als 3 Stunden geklettert sind, jede Person einmal.
Tabelle Besuch
BNr
Name
Stunden
1
Ida
4
2
Jonas
2
3
Ida
5
4
Karl
3
5
Lea
6
6
Jonas
2
7
Mo
4
Ordne jede Abfrage mit der Ampel ein: Rot, wenn das Ergebnis falsch ist, Gelb, wenn die Namen stimmen, die Ausgabe aber doppelte Namen oder zusätzliche Spalten enthält, Grün, wenn sie genau das Gesuchte liefert.
Gib jeder Situation eine Ampelfarbe: Klicke auf das passende Licht und prüfe dann. Mit der Tastatur: Tab zur Ampel, ↑/↓ oder 1–3 wählt die Farbe.
Rot: Falsches Ergebnis
Gelb: Richtig, aber unsauber
Grün: Genau das Gesuchte
SELECT Name FROM Besuch WHERE Stunden > 3;
SELECT DISTINCT Name FROM Besuch WHERE Stunden > 3;
SELECT Name FROM Besuch WHERE Stunden >= 3;
SELECT Name FROM Besuch GROUP BY Name HAVING SUM(Stunden) > 3;
SELECT Name FROM Besuch GROUP BY Name HAVING MAX(Stunden) > 3;
SELECT Name, MAX(Stunden) FROM Besuch GROUP BY Name HAVING MAX(Stunden) > 3;
Prüfe zuerst, welche Zeilen die Bedingung trifft, dann, wie oft ein Name vorkommt und welche Spalten ausgegeben werden. Bei GROUP BY entscheidet das Aggregat, nicht der einzelne Besuch.
Rechne bei jeder Abfrage nach, welche Namen herauskommen. Streiche zuerst die Besuche, die gar nicht mehr als 3 Stunden dauern.
Achte auf den Unterschied zwischen einer Bedingung an einzelne Besuche (WHERE, MAX) und einer Bedingung an die Summe (SUM). Jonas war zweimal nur 2 Stunden da.