WHERE übernimmt nur Zeilen, deren Bedingung wahr ist. AND verlangt alle Teilbedingungen, OR mindestens eine; NOT kehrt den Wahrheitswert um. Nutze Klammern für die beabsichtigte Verknüpfung. BETWEEN schließt beide Grenzen ein. IN prüft Mitgliedschaft in einer Werteliste. LIKE verwendet % für beliebig viele und _ für genau ein Zeichen. Ein fehlender Wert ist weder 0 noch leerer Text: Teste ihn mit IS NULL oder IS NOT NULL. Normale Vergleiche mit NULL sind unbekannt und werden von WHERE nicht als wahr ausgewählt.
WHERE
AND
OR
NOT
BETWEEN
IN
LIKE
IS NULL
Beispiel
SELECT titel FROM medium
WHERE (standort IN ('A1', 'B2') OR standort IS NULL)
AND titel LIKE 'D%';
Typische Fehler
Mit = NULL nach fehlenden Werten suchen
Bei AND und OR die Klammerung vergessen
Die Grenzwerte bei BETWEEN ausschließen
Den Monat prüfen, aber das Jahr übersehen
Kurz zusammengefasst
Formuliere zuerst die fachliche Bedingung, übersetze ihre Teile und prüfe dann Grenzfälle und NULL. WHERE filtert einzelne Zeilen vor späteren Gruppierungen.
Abi-Bezug
Begründe bei einer Selektion, warum Grenzwerte enthalten oder ausgeschlossen sind. Trenne fehlende Informationen ausdrücklich von bekannten Zahlenwerten.
Jetzt selbst ausprobieren
Prüfe deine Lösung automatisch. Bei Bedarf helfen dir ein Tipp und anschließend die Musterlösung.
BPE 6J11 Punkteleicht
Der Bestand reicht für fünf Personen
Noch nicht begonnen
Aufgabenstellung
Gib Bezeichnung und Bestand aller Artikel mit mindestens fünf verfügbaren Stück aus.
Ergebnisspalten in dieser Reihenfolge: bezeichnung, bestand. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
Mindestens fünf schließt genau fünf ein.
Die Bedingung betrifft bestand, nicht den Preis.
Lösung anzeigen
SELECT bezeichnung, bestand FROM artikel WHERE bestand >= 5;
BPE 6J11 Punkteleicht
Ein Preisintervall mit Randwerten
Noch nicht begonnen
Aufgabenstellung
Gib Bezeichnung und Preis für Artikel von 2 bis einschließlich 3 Euro aus. Verwende ein inklusives Intervall.
Ergebnisspalten in dieser Reihenfolge: bezeichnung, preis. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
BETWEEN untergrenze AND obergrenze schließt beide Grenzen ein.
Auch die Artikel für genau 2 und genau 3 Euro sind gesucht.
Lösung anzeigen
SELECT bezeichnung, preis FROM artikel WHERE preis BETWEEN 2 AND 3;
BPE 6J12 Punktemittel
Zwei gewünschte Kategorien
Noch nicht begonnen
Aufgabenstellung
Gib Bezeichnung und Kategorie aller Artikel aus den Kategorien Papier oder Ablage aus. Eine Werteliste mit IN bietet sich an.
Ergebnisspalten in dieser Reihenfolge: bezeichnung, kategorie. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
IN vergleicht einen Wert mit einer geklammerten Liste möglicher Werte.
Textwerte wie Papier müssen in einfachen Anführungszeichen stehen.
Lösung anzeigen
SELECT bezeichnung, kategorie FROM artikel WHERE kategorie IN ('Papier', 'Ablage');
BPE 6J12 Punktemittel
Bezeichnungen mit M am Anfang
Noch nicht begonnen
Aufgabenstellung
Gib die Bezeichnungen aller Artikel aus, deren Bezeichnung mit M beginnt.
Ergebnisspalten in dieser Reihenfolge: bezeichnung. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
LIKE prüft ein Muster, = würde den vollständigen Text vergleichen.
Das Prozentzeichen erlaubt hinter M beliebig viele weitere Zeichen.
Lösung anzeigen
SELECT bezeichnung FROM artikel WHERE bezeichnung LIKE 'M%';
BPE 6J12 Punktemittel
Verfügbare Papierartikel oder Stifte
Noch nicht begonnen
Aufgabenstellung
Gib Bezeichnung und Bestand aus. Ein Artikel muss zur Kategorie Papier oder Stifte gehören und zugleich einen Bestand größer als 0 haben.
Ergebnisspalten in dieser Reihenfolge: bezeichnung, bestand. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
Fasse die beiden erlaubten Kategorien mit Klammern zusammen.
Der positive Bestand gilt für Papier genauso wie für Stifte.
Lösung anzeigen
SELECT bezeichnung, bestand FROM artikel WHERE (kategorie = 'Papier' OR kategorie = 'Stifte') AND bestand > 0;
BPE 6J12 Punktemittel
Nicht aus der Stiftegruppe und ausverkauft
Noch nicht begonnen
Aufgabenstellung
Gib Bezeichnung und Kategorie der ausverkauften Artikel aus, die nicht zur Kategorie Stifte gehören.
Ergebnisspalten in dieser Reihenfolge: bezeichnung, kategorie. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
NOT negiert hier die Zugehörigkeit zur Stiftegruppe.
Ausverkauft bedeutet genau Bestand 0 und ist eine zusätzliche AND-Bedingung.
Lösung anzeigen
SELECT bezeichnung, kategorie FROM artikel WHERE NOT (kategorie = 'Stifte') AND bestand = 0;
BPE 6J13 Punkteanspruchsvoll
Fehlende Lieferantenzuordnung finden
Noch nicht begonnen
Aufgabenstellung
Gib die ID und Bezeichnung aller Artikel aus, deren Lieferant noch nicht zugeordnet ist.
Ergebnisspalten in dieser Reihenfolge: id, bezeichnung. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
Fehlende Information steht in diesen Daten als NULL.
Verwende IS NULL statt eines Gleichheitsvergleichs.
Lösung anzeigen
SELECT id, bezeichnung FROM artikel WHERE lieferant_id IS NULL;
BPE 6J13 Punkteanspruchsvoll
Nur Bestellungen aus März 2026
Noch nicht begonnen
Aufgabenstellung
Gib ID und Datum aller Bestellungen aus März 2026 aus, aufsteigend nach ID. Jahr und Monat müssen beide passen. SQLite nutzt dafür strftime('%Y', datum) und strftime('%m', datum); diese liefern Text.
Ergebnisspalten in dieser Reihenfolge: id, datum. Die angegebene Zeilensortierung wird geprüft. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE bestellung (id INTEGER PRIMARY KEY, region TEXT NOT NULL, status TEXT NOT NULL, betrag INTEGER NOT NULL, datum TEXT NOT NULL);
Startdaten: bestellung
id
region
status
betrag
datum
1
Nord
bezahlt
40
2026-03-01
2
Nord
offen
20
2026-03-10
3
Sued
bezahlt
30
2026-03-12
4
Sued
bezahlt
70
2026-04-01
5
West
storniert
50
2026-03-20
6
West
bezahlt
10
2025-03-15
7
Nord
bezahlt
60
2026-04-15
8
Ost
offen
20
2026-03-31
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
Die Monatsprüfung allein würde auch März 2025 auswählen.
Verknüpfe die Textvergleiche mit AND; der Monat ist zweistellig als 03 gespeichert.
Lösung anzeigen
SELECT id, datum FROM bestellung WHERE strftime('%Y', datum) = '2026' AND strftime('%m', datum) = '03' ORDER BY id;