Informatik

Rückblick

Vier Lektionen, ein Satzbau: SELECT … FROM … WHERE … ORDER BY … LIMIT. Alles, was in diesem Kapitel dazukam, hängt an einer dieser fünf Stellen. Wenn du das im Kopf hast, kannst du jede Abfrage über eine Tabelle schreiben.

Das kann ich jetzt

  • Ich kann Spalten auswählen (Projektion) und ihnen mit AS einen Namen geben. (2.1)
  • Ich kann Zeilen auswählen (Selektion) und Bedingungen mit AND, OR, NOT verknüpfen – mit Klammern, wo nötig. (2.2)
  • Ich kann mit LIKE, IN und BETWEEN umgehen. (2.2)
  • Ich kann Ergebnisse sortieren, Doppelte entfernen und die Ausgabe begrenzen. (2.3)
  • Ich kann in einer Abfrage rechnen und weiß, wann eine Division ganzzahlig wird. (2.4)
  • Ich kann den Unterschied zwischen einem Syntax- und einem Semantikfehler an einem Beispiel erklären. (2.1)

Gemischte Aufgaben

Aufgabe 1: Fünf Abfragen

a) Name und Kapazität aller Bühnen, die mindestens 1000 Menschen fassen – die größte zuerst.

b) Alle vorkommenden Ticketkategorien mit ihrem Preis, jede nur einmal, teuerste zuerst.

c) Alle Bands aus Deutschland oder Oesterreich, die nach 2010 gegründet wurden, alphabetisch nach Namen.

d) Alle Auftritte, die länger als 60 Minuten dauern: Datum, Beginn und die Dauer in Stunden, auf eine Nachkommastelle gerundet.

e) Die fünf Auftritte mit den meisten Zuschauern – Datum, Beginn und Zuschauerzahl.

Tipp 1: In welcher Reihenfolge denke ich?

Immer dieselben vier Fragen, in dieser Reihenfolge:

  1. Aus welcher Tabelle? → FROM
  2. Welche Zeilen? → WHERE
  3. Welche Spalten? → SELECT
  4. In welcher Ordnung, wie viele? → ORDER BY, LIMIT
Tipp 2: zu b) und d)

Zu b): „Jede nur einmal" ist das Stichwort für DISTINCT. Achte darauf, dass sich DISTINCT auf die ganze Zeile bezieht, nicht nur auf die erste Spalte.

Zu d): Minuten in Stunden heißt teilen durch 60. Schreib 60.0 statt 60, sonst rechnet SQLite ganzzahlig und alles wird 1 oder 2.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 2: Vier fehlerhafte Abfragen

Jede dieser Abfragen ist falsch. Sag für jede: Ist es ein Syntaxfehler oder ein Semantikfehler? Was ist die Wirkung, und wie lautet die richtige Fassung?

-- a)
SELECT name FROM band WHERE herkunftsland = Deutschland;
 
-- b)
SELECT name, kapazitaet FROM buehne ORDER BY kapazitaet WHERE kapazitaet > 1000;
 
-- c)
SELECT name FROM band WHERE gruendungsjahr > 2010 OR gruendungsjahr < 2020;
 
-- d)
SELECT datum, zuschauer FROM auftritt LIMIT 3;

Zu d) gehört die Frage: Die Abfrage läuft fehlerfrei. Warum ist sie als Antwort auf „Zeig mir die drei bestbesuchten Auftritte" trotzdem falsch?

Tipp

Syntaxfehler heißt: Das Datenbanksystem versteht den Satz nicht und weigert sich. Semantikfehler heißt: Es versteht ihn, führt ihn aus – und liefert etwas anderes, als du wolltest. Die zweite Sorte ist die gefährliche.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 3: Abfragen lesen

Formuliere für jede Abfrage einen deutschen Satz, der sagt, wonach sie sucht. Sag außerdem voraus, wie viele Zeilen etwa herauskommen – wenige, etwa die Hälfte oder fast alle.

-- a)
SELECT vorname, nachname FROM person WHERE nachname LIKE '%er';
 
-- b)
SELECT DISTINCT herkunftsland FROM band ORDER BY herkunftsland;
 
-- c)
SELECT kategorie, preis, ROUND(preis * 0.9, 2) AS ermaessigt
  FROM ticket
 WHERE preis BETWEEN 50 AND 200;
 
-- d)
SELECT name FROM band WHERE LENGTH(name) > 12 ORDER BY name;

Prüfe deine Vorhersagen danach im Übungsbereich.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Selbsttest

Rückblick

Teilbare URL erstellen

Abschnitte auswählen