Lektion 4: Weitere Vergleichsopertoren zur Auswahl von Datensätzen
Kundinnen und Kunden oder Betreiber eines Onlineshops könnten folgende Fragen interessieren: Welche Kommentare zu Produkten enthalten den Begriff 'gut'? Welche Bestellnummern beginnen mit 'B2023'? Und welche Bestellungen wurden zwischen Oktober 2022 und März 2023 aufgegeben? Um solche Fragen zu beantworten, lernen Sie in dieser Lektion, weitere Vergleichoperatoren zur Formulierung von Bedingungen zu verwenden.
Kurzbeschreibung der Datenbank Onlineshop
Die Datenbank enthält eine Tabelle Kunden und eine Tabelle Produkte mit Daten zu den Kundinnen und Kunden eines fiktiven Onlineshops bzw. zu den angebotenen Produkten.
In zwei weiteren Tabellen Bestellungen und Bestellpositionen werden die Daten zu den Bestellungen der Kundinnen und Kunden verwaltet. Die Tabelle Bestellungen enthält Daten, die die gesamte Bestellung betreffen, während die Tabelle Bestellpositionen einen Datensatz für jedes bestellte Produkt mit der entsprech Menge enthält und dieses einer Bestellung zuordnet.
Kundinnen und Kunden können Produkte auf einer Skala von 1 bis 5 bewerten und einen Kommentar dazu erstellen. Die entsprechenden Daten speichert die Tabelle Bewertungen.
Die Daten, die in der Datenbank gespeichert sind, stellen eine exemplarische, aber fiktive Auswahl typischer Daten dar, die in einer Datenbank eines Onlineshops zu finden sind.
Eine Übersicht über die Attribute der einzelnen Tabellen zeigt das realtionale Datenbankschema.
Lernaufgaben zur Datenbank Onlineshop
Mit dem Vergleichsoperator LIKE kann in Zeichenketten nach einem bestimmten Muster gesucht werden. Für die Angabe eines Musters werden die Platzhalter % für beliebig viele Zeichen und _ für genau ein Zeichen verwendet.
Mit der Bedingung Kommentar like '%gut%' kann beispielsweise nach allen Kommentaren gesucht werden, die das Wort 'gut' enthalten: SELECT Produkt_ID, Bewertung, Kommentar FROM Bewertungen WHERE Kommentar LIKE '%gut%'
Ändert man das Muster in 'gut%' wird hingegen nur nach Kommentaren gesucht, die mit dem Wort 'gut' anfangen.
I) Geben Sie einen SQL-Befehl ein, der alle Produkte ausgibt, deren Name mit dem Zusatz 'Stück' endet.
Tipp
Verwenden Sie die Beispielanfrage als Vorlage. Der Wert des Attributs Name darf vor dem Wort 'Stück' beliebig viele weitere Zeichen enthalten.
mögliche Lösung
SELECT Name FROM Produkte WHERE Name LIKE '%Stück'
Der Unterstrich _ steht als Platzhalter für genau ein beliebiges Zeichen.
II) Geben Sie einen SQL-Befehl ein, der alle Kundennummern ausgibt, bei denen an zweiter Stelle ein B steht.
Tipp
Verwenden Sie eine WHERE-Klausel, die nach dem Muster '_B%' sucht.
mögliche Lösung
SELECT Kunden_Nr FROM Kunden WHERE Kunden_Nr LIKE '_B%'
Der Vergleichsoperator BETWEEN prüft, ob sich ein Attributwert zwischen zwei Grenzen befindet. Die Bedingung schießt die Gleichheit mit einem der Grenzwerte mit ein.
Eine entsprechende Bedingung wird nach dem Muster AttributBETWEENUntergrenzeANDObergrenze formuliert. III) Geben Sie einen SQL-Befehl ein, der alle Bestellungen zwischen dem 01.10.2022 und dem 31.03.2023 ausgibt.Hinweis: Datumsangaben haben das Format JJJJ-MM-TT.
Tipp
Verwenden Sie in der WHERE-Klausel eine Bedingung der Form BestelldatumBETWEENUntergrenzeANDObergrenze.
mögliche Lösung
SELECT * FROM Bestellungen WHERE Bestelldatum BETWEEN '2022-10-01' AND '2023-03-31'
Der Operator NOT verneint eine Bedingung. IV) Geben Sie einen SQL-Befehl ein, der alle Bestellungen ausgibt, die nicht zwischen dem 01.02.2022 und dem 31.10.2022 erfolgt sind. Sortieren Sie die Bestellungen nach Bestelldatum.Hinweis: Datumsangaben haben das Format JJJJ-MM-TT.
Tipp
Formulieren Sie in der WHERE-Klausel zunächst die Bedingung, dass das Bestelldatum zwischen dem 01.02.2022 und dem 31.10.2022 liegt und setzen Sie anschließend ein NOT vor die Bedingung.
mögliche Lösung
SELECT * FROM Bestellungen WHERE NOT Bestelldatum BETWEEN '2022-02-01' AND '2022-10-31' ORDER BY Bestelldatum
Der Vergleichsoperator IN prüft, ob der Wert eines Attributs zu einer Menge von Werten gehört. Die Menge der Werte wird in runden Klammern durch Komma getrennt angegeben.
V) Geben Sie einen SQL-Befehl ein, der alle Kunden mit Vorname, Nachname und Stadt ausgibt, die in einer der Städte Braunschweig, Hannover oder Wolfsburg wohnen. Sortieren Sie die Datensätze nach dem Attribut Stadt.
Tipp
Geben Sie in der WHERE-Klausel eine Bedingung der Form AttributIN(Wert1, Wert2, Wert3) an.
mögliche Lösung
SELECT Vorname, Nachname, Stadt FROM Kunden WHERE Stadt IN ('Hannover', 'Braunschweig', 'Wolfsburg') ORDER BY Stadt
Wenn in einem Datensatz für ein Attribut kein Wert definiert ist, kann dafür stellvertretend der Wert null eingetragen werden. Der Vergleichsoperator IS NULL prüft, ob ein Datensatz für ein Attribut den Standardwert null enthält. Der Vergleichsoperator IS NOT NULL findet hingegen alle Datensätze, die einen anderen Wert als null für das angegebene Attribut haben. VI) Geben Sie einen SQL-Befehl ein, mit dem Sie prüfen können, ob es in der Tabelle Bewertungen Datensätze gibt, für die kein Kommentar hinterlegt ist.
Tipp
Geben Sie in der WHERE-Klausel eine Bedingung der Form AttributIS NULL an.