Bereiche mit BETWEEN
Bereiche wie preis >= 15 AND preis <= 20 sind so häufig, dass SQL eine kürzere Schreibweise dafür hat, BETWEEN … AND …:
SELECT titel, preis
FROM spiele
WHERE preis BETWEEN 15 AND 20
ORDER BY preis, titel;| titel | preis |
|---|---|
| Bakery Story | 15 |
| Ocean Deep | 15 |
| Pixel Racer | 15 |
| Lost Temple | 20 |
| Moon Farm | 20 |
Beide Enden gehören zum Bereich: Die Spiele für 15 € und für 20 € sind im Ergebnis. preis BETWEEN 15 AND 20 bedeutet genau preis >= 15 AND preis <= 20, ist nur kürzer und leichter zu lesen. Das AND darin gehört zu BETWEEN; es verbindet nicht zwei Bedingungen.
BETWEEN funktioniert auch mit Daten, da sie als Text richtig verglichen werden. Die Bestellungen vom Sommer 2024, vom 1. Juni bis zum 31. August:
SELECT id, bestellt_am
FROM bestellungen
WHERE bestellt_am BETWEEN '2024-06-01' AND '2024-08-31'
ORDER BY bestellt_am;| id | bestellt_am |
|---|---|
| 7 | 2024-06-01 |
| 8 | 2024-06-18 |
| 9 | 2024-07-07 |
| 10 | 2024-08-23 |
Bestellung 7 vom 1. Juni ist im Ergebnis: Der erste Tag des Bereichs ist eingeschlossen, der letzte auch. (Würden die Daten auch eine Uhrzeit enthalten, würde der letzte Tag wieder wegfallen, wie du in der vorigen Übung gesehen hast: '2024-08-31 18:30' ist größer als '2024-08-31'. Verwende für solche Daten >= und < mit dem nächsten Tag.)
NOT BETWEEN findet die Werte außerhalb des Bereichs. Die Spiele, die weniger als 10 € oder mehr als 50 € kosten:
SELECT titel, preis
FROM spiele
WHERE preis NOT BETWEEN 10 AND 50
ORDER BY preis;| titel | preis |
|---|---|
| Cube Logic | 5 |
| Knight's Oath | 60 |
Typischer Fehler: der größere Wert zuerst. preis BETWEEN 20 AND 15 ist kein Fehler, findet aber nichts: Kein Preis ist gleichzeitig mindestens 20 und höchstens 15. Der kleinere Wert steht immer zuerst, bei Daten das frühere.
So schreibst du es:
Anweisungen
- 1
Zeige den Titel und den Preis der Spiele, die von 25 € bis 35 € kosten, beide eingeschlossen. Verwende
BETWEENund sortiere die Spiele nach dem Preis und dann nach dem Titel. Das Ergebnis beginnt so:titel preis Mystery Manor 25 Shadow Ninja 25 Tiny Kingdoms 25 Castle Siege 30 … … - 2
Zeige darunter die ID und das Datum der Bestellungen vom Dezember 2024, vom 1. bis zum 31. Dezember, die ältesten zuerst:
id bestellt_am 13 2024-12-05 14 2024-12-20 15 2024-12-23