Was muss noch verschickt werden?
Sie arbeiten seit Montag im Kundenservice von Nordwind Rad, einem kleinen Online-Fahrradladen in Hamburg. Eine Kundin ruft an: Ihr Fahrradschloss ist noch nicht da.
Ihre Teamleiterin fragt: Welche Bestellungen sind bezahlt, aber noch nicht unterwegs? Alle Bestellungen liegen in einer Datenbank. Sie könnten sie einzeln durchlesen. Oder Sie stellen der Datenbank eine kurze Frage.
Am Ende dieser Lektion
Notiz
Ich kann mit SQL die Zeilen finden, die eine Bedingung erfüllen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Tabelle | Daten in Zeilen und Spalten | |
| Zeile | ein Datensatz, zum Beispiel eine Bestellung | |
| Spalte | eine Angabe, die jede Zeile hat | |
| Abfrage | eine Frage an die Datenbank | |
| Bedingung | ein Test, den jede Zeile besteht oder nicht | status = 'bezahlt' |
| SQL | die Sprache für Fragen an eine Datenbank |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
SELECT nennt die Spalten
Eine Datenbank ordnet ihre Angaben in Tabellen. Der Laden hat eine Tabelle bestellungen. Jede Zeile ist eine Bestellung.
Eine Abfrage beginnt mit SELECT. Danach nennen Sie die gewünschten Spalten, getrennt durch Kommas. FROM sagt, welche Tabelle gelesen wird. Der Stern * steht für alle Spalten. SELECT liest nur. Die Tabelle bleibt unverändert.
Probieren Sie es: Spalten wählen
-- Alle Spalten aller Bestellungen.
SELECT * FROM bestellungen;
-- Nur die zwei Spalten, die das Lager braucht.
SELECT kunde, stadt FROM bestellungen;
WHERE wählt die Zeilen
SELECT wählt Spalten. WHERE wählt Zeilen.
Nach WHERE schreiben Sie eine Bedingung. Die Datenbank prüft jede Zeile damit. Sie behält die Zeilen, die die Bedingung erfüllen, und lässt die anderen weg. So behält WHERE status = 'bezahlt' nur die bezahlten Bestellungen.
Probieren Sie es: nur bezahlte Bestellungen
-- Die Bestellungen, die bezahlt sind.
-- In dieser Datenbank stehen die Status ohne Umlaut und in Kleinbuchstaben.
SELECT id, kunde, betrag FROM bestellungen
WHERE status = 'bezahlt';
-- Ersetzen Sie 'bezahlt' durch 'versendet' und starten Sie noch einmal.
Ein Beispiel Schritt für Schritt: status = 'bezahlt'
| Bestellung | status | Behalten? |
|---|---|---|
| 1 | versendet | Nein |
| 2 | bezahlt | Ja |
| 3 | bezahlt | Ja |
| 4 | versendet | Nein |
| 5 | bezahlt | Ja |
| 6 | storniert | Nein |
| 7 | bezahlt | Ja |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele glauben, WHERE stadt = Hamburg funktioniert. Das stimmt nicht. Text steht in Hochkommas: stadt = 'Hamburg'. Ohne sie sucht die Datenbank eine Spalte namens Hamburg. Zahlen schreiben Sie ohne Hochkommas: betrag > 100.
AND und OR verbinden zwei Tests
Eine echte Frage hat oft zwei Teile. „Bezahlte Bestellungen über 100 Euro“ enthält zwei Tests.
AND behält eine Zeile nur, wenn beide Tests bestanden sind. OR behält sie, wenn mindestens einer bestanden ist. Bei Zahlen heißt > größer als und < kleiner als.
Probieren Sie es: zwei Tests zugleich
-- Bezahlte Bestellungen über 100 Euro.
SELECT id, kunde, betrag FROM bestellungen
WHERE status = 'bezahlt' AND betrag > 100;
-- Bestellungen, die nach Bremen oder nach Lübeck gehen.
SELECT id, kunde, stadt FROM bestellungen
WHERE stadt = 'Bremen' OR stadt = 'Lübeck';