Zeilen auswählen mit WHERE
Bisher haben deine Abfragen jede Zeile einer Tabelle gezeigt. Meist willst du aber nur einige: die Spiele für kleine Kinder, die Bestellungen eines Kunden, die Bewertungen mit fünf Sternen. Um Zeilen auszuwählen, füge nach FROM ein WHERE und eine Bedingung hinzu:
SELECT titel, altersfreigabe
FROM spiele
WHERE altersfreigabe = 3;| titel | altersfreigabe |
|---|---|
| Pixel Racer | 3 |
| Moon Farm | 3 |
| Cube Logic | 3 |
| Goal Rush | 3 |
| Turbo Karts | 3 |
| Bakery Story | 3 |
| Ice Hockey Pro | 3 |
Die Datenbank geht die Tabelle Zeile für Zeile durch und prüft die Bedingung für jede: Ist die altersfreigabe dieser Zeile 3? Wenn ja, kommt die Zeile ins Ergebnis; wenn nicht, wird sie weggelassen. Das Ergebnis enthält also nur die 7 Spiele, die ab 3 Jahren geeignet sind.
= vergleicht zwei Werte, hier den Wert in der Spalte altersfreigabe mit der Zahl 3. In SQL bedeutet ein einzelnes = „ist gleich“, nicht == wie in anderen Programmiersprachen. (SQLite versteht auch ==, andere Datenbanken aber nicht, bleib also bei =.)
Die Spalte in der Bedingung muss nicht zu den Spalten gehören, die du zeigst. Diese Abfrage zeigt nur den Titel und wählt die Zeile über ihren Primärschlüssel aus, was der sicherste Weg ist, eine bestimmte Zeile zu finden:
SELECT titel
FROM spiele
WHERE id = 7;| titel |
|---|
| Star Pilots |
WHERE hat seinen festen Platz in einer Abfrage: nach FROM und vor ORDER BY und LIMIT. Die Teile einer Abfrage stehen immer in dieser Reihenfolge:
SELECT Spalten
FROM Tabelle
WHERE Bedingung
ORDER BY Spalten
LIMIT Zahl;Nur SELECT und FROM sind immer nötig. Die anderen fügst du hinzu, wenn du sie brauchst, aber immer in dieser Reihenfolge. Die letzten drei arbeiten auch in dieser Reihenfolge: WHERE wählt zuerst die Zeilen aus, ORDER BY sortiert die übrigen, und LIMIT nimmt die ersten davon. Die zwei teuersten Spiele für kleine Kinder:
SELECT titel, preis
FROM spiele
WHERE altersfreigabe = 3
ORDER BY preis DESC
LIMIT 2;| titel | preis |
|---|---|
| Goal Rush | 50 |
| Ice Hockey Pro | 45 |
Typischer Fehler: WHERE nach ORDER BY. Die Abfrage SELECT titel FROM spiele ORDER BY titel WHERE altersfreigabe = 3; endet mit einem Fehler:
Error on line 1: near "WHERE": syntax errorSQLite hat WHERE nach dem Sortieren nicht erwartet. Verschiebe die Bedingung vor ORDER BY.
So schreibst du es:
Anweisungen
- 1
Zeige den Titel und den Preis der Spiele, die genau 30 € kosten, sortiert nach dem Titel:
titel preis Castle Siege 30 Turbo Karts 30 Zombie Town 30 - 2
Füge darunter eine Abfrage hinzu, die die ID und das Datum (
bestellt_am) jeder Bestellung zeigt, die der Kunde mit der ID 3 aufgegeben hat (die Spaltekunde_idder Tabellebestellungen), die neueste Bestellung zuerst:id bestellt_am 29 2025-12-12 17 2025-03-03 8 2024-06-18 3 2024-02-29