In diesem Kapitel wirst du Schritt für Schritt lernen, wie du Daten in einer Datenbank präzise filtern und sinnvoll sortieren kannst. Dabei gehen wir zunächst auf die grundlegenden Vergleichsoperatoren ein, mit denen du Daten nach exakten Werten oder bestimmten Bedingungen auswählen kannst. Anschließend betrachten wir die logischen Operatoren, die es dir ermöglichen, mehrere Bedingungen miteinander zu verknüpfen und so komplexere Filterregeln zu erstellen.
Darüber hinaus stellen wir dir spezielle SQL-Klauseln wie IN, BETWEEN und LIKE vor, mit denen du deine Abfragen noch flexibler gestalten kannst – zum Beispiel um Datensätze aus einer Liste auszuwählen, Werte innerhalb eines bestimmten Bereichs zu finden oder nach Mustern zu suchen.
Abschließend zeigen wir dir, wie du all diese Werkzeuge geschickt kombinierst, um auch komplexe Abfragen zu formulieren, die genau die Daten liefern, die du benötigst. So wirst du in der Lage sein, selbst anspruchsvolle Datenbankabfragen effizient und präzise zu gestalten.
3.1 Vergleichsoperatoren
Vergleichsoperatoren sind das Grundwerkzeug der WHERE-Klausel. Sie helfen dir, Daten basierend auf mathematischen oder logischen Bedingungen auszuwählen.
Wichtige Vergleichsoperatoren
| Operator | Bedeutung | Beispiel-Anwendung | Erklärung |
|---|---|---|---|
= | Gleich | WHERE alter = 25 | Gibt Zeilen mit dem Alter von exakt 25 Jahren zurück |
!=/<> | Ungleich | WHERE stadt != 'Berlin' | Gibt alle Zeilen zurück, deren Stadt nicht Berlin ist. |
> | Größer als | WHERE preis > 50 | Zeigt Produkte über 50 € |
< | Kleiner als | WHERE alter < 18 | Findet Minderjährige |
>= | Größer oder gleich | WHERE bestand >= 100 | Bestände ab 100 Einheiten |
<= | Kleiner oder gleich | WHERE datum <= '2023-12-31' | Daten bis Ende 2023 |
Beispiel: Teure Elektronikartikel filtern
Wir haben eine Tabelle namens produkte, die verschiedene Artikel enthält.
Diese Tabelle besitzt folgende Spalten:
id: Eine eindeutige Produktnummername: Der Name des Produktspreis: Der Preis des Produkts in Eurokategorie: Die Produktkategorie (z. B. „Elektronik“, „Bücher“, „Kleidung“)
Wir möchten in der Tabelle produkte alle teuren Elektronikartikel finden. Das bedeutet, wir suchen nach Produkten, die:
Mehr als 500 € kosten
Zur Kategorie „Elektronik“ gehören
Dazu formulieren wir folgendes SQL-Statement:
SELECT * FROM produkte WHERE preis > 500 AND kategorie = 'Elektronik';
Das Statement setzt sich aus den folgenden Elementen zusammen:
SELECT *: Wähle alle Spalten aus.FROM produkte: Aus der Tabelleprodukte.WHERE: Filtere nach folgenden Bedingungen:preis > 500: Preis muss über 500 € liegen.AND: Beide Bedingungen müssen erfüllt sein.kategorie = 'Elektronik': Nur Produkte aus der Kategorie „Elektronik“.
Die Ergebnistabelle enthält nur Zeilen, die beide Bedingungen erfüllen und sieht in unserem Beispiel wie folgt aus:
Hier sind weitere Beispiele zum Umgang mit den Vergleichsoperatoren:
Beispiel 1: Produkte über 500 €
SELECT * FROM produkte WHERE preis > 500;
Beispiel 2: Produkte unter 100 €
SELECT name, preis FROM produkte WHERE preis < 100;
Beispiel 3: Produkte aus der Kategorie „Elektronik“
SELECT * FROM produkte WHERE kategorie = 'Elektronik';
Beispiel 4: Teure Elektronik (Preis > 500 € UND Kategorie = Elektronik)
SELECT * FROM produkte WHERE preis > 500
AND kategorie = 'Elektronik';
Beispiel 5: Produkte, die nicht Elektronik sind
SELECT * FROM produkte WHERE kategorie != 'Elektronik' ;
Beispiel 6: Produkte zwischen 100 € und 500 € (Grenzwerte einschließlich)
SELECT * FROM produkte WHERE preis BETWEEN 100 AND 500;
Beispiel 7: Produkte, deren Name „Smart“ enthält
SELECT * FROM produkte WHERE name LIKE '%Smart%';
3.2 Logische Operatoren
Logische Operatoren ermöglichen es dir, mehrere Bedingungen in einer Abfrage zu kombinieren. Die wichtigsten logischen Operatoren sind AND, OR und NOT.
AND
Der AND-Operator wird verwendet, um sicherzustellen, dass alle Bedingungen erfüllt sind. Die einzelnen Bedingungen werden mit dem AND-Operator verknüpft.
Beispiel:
Um alle Produkte abzurufen, die günstiger sind als 200 EUR und zur Kategorie Bücher gehören:
SELECT * FROM produkte WHERE preis < 200
AND kategorie = 'Bücher';
OR
Der OR-Operator wird verwendet, wenn mindestens eine der Bedingungen erfüllt sein soll.
Beispiel:
Um alle Produkte abzurufen, die entweder zur Kategorie Bücher oder Möbel gehören, schreibst du:
SELECT * FROM produkte WHERE kategorie = 'Bücher'
OR kategorie = 'Möbel';
NOT
Der NOT-Operator kehrt eine Bedingung um. Er wird verwendet, um Daten auszuschließen, die einer bestimmten Bedingung entsprechen.
Beispiel:
Um alle Benutzer abzurufen, die nicht zur Kategorie Elektronik gehören, schreibst du:
SELECT * FROM produkte WHERE NOT kategorie = 'Elektronik';
3.3 IN, BETWEEN und LIKE
WHERE-Klausel und machen deine Abfragen noch flexibler.
IN
DieIN-Klausel in SQL ist besonders praktisch, wenn du Datensätze basierend auf mehreren möglichen Werten in einer Spalte filtern möchtest. Anstatt mehrere Bedingungen mit OR zu verknüpfen, kannst du einfach eine Liste von Werten angeben – das spart nicht nur Schreibarbeit, sondern macht den Code auch deutlich übersichtlicher.
Beispiel:
Angenommen, du möchtest alle Produkte anzeigen, die entweder in der Kategorie Möbel oder Bücher sind. Statt so etwas zu schreiben:SELECT * FROM produkte WHERE kategorie = 'Möbel' OR kategorie = 'Bücher';
IN-Klausel eine elegantere Lösung verwenden:
SELECT * FROM produkte WHERE kategorie IN ('Möbel', 'Bücher');
- Die Werte in der Klammer müssen vom gleichen Datentyp sein wie die Spalte, die du filterst.
- Du kannst beliebig viele Werte in der Liste angeben.
- Die
IN-Klausel kann auch mit einer Unterabfrage kombiniert werden.
BETWEEN
BETWEEN-Klausel in SQL wird verwendet, um Daten zu filtern, die innerhalb eines bestimmten Wertebereichs liegen. Dabei sind beide Grenzwerte inklusive, also der Anfangs- und der Endwert werden ebenfalls berücksichtigt. Das ist besonders praktisch, wenn du nach Zahlenwerten (z. B. Preise, Mengen, IDs) oder nach Datumswerten filtern möchtest, die in einem bestimmten Intervall liegen.Beispiel:
Um alle Produkte mit einem Preis zwischen 100 und 400 Euro abzurufen, schreibst du:SELECT* FROM produkte WHERE preis BETWEEN 100 AND 400;Diese Abfrage gibt dir alle Zeilen zurück, bei denen der Wert in der Spalte
preis größer oder gleich 100 und gleichzeitig kleiner oder gleich 400 ist.
Das wäre funktional identisch mit:
SELECT * FROM produkte WHERE preis >= 100 AND preis <= 400;Aber
BETWEEN ist kürzer, leichter zu lesen und besser geeignet, wenn du Bereiche vergleichen willst.
Hinweise zur Verwendung von BETWEEN:
- Grenzwerte inklusive: Sowohl der untere als auch der obere Grenzwert zählen mit.
- Datentyp beachten: Die BETWEEN-Klausel funktioniert mit Zahlen, Text (alphabetisch sortiert), Datums- und Zeitwerten.
- Mit Textwerten: Auch Strings können gefiltert werden – z. B. alle Namen zwischen ‚Anna‘ und ‚Laura‘. Dabei wird die alphabetische Reihenfolge berücksichtigt:
SELECT * FROM kunden WHERE name BETWEEN 'Anna' AND 'Laura';
- Mit Datumswerten: Du kannst auch Zeiträume abfragen, z. B.:
SELECT * FROM bestellungen WHERE bestelldatum BETWEEN '2024-01-01' AND '2024-12-31';
LIKE
Die LIKE-Klausel in SQL hilft dir dabei, Textwerte zu filtern, die einem bestimmten Muster entsprechen. Das bedeutet: Du musst nicht genau wissen, wie ein Textfeld aussieht – es reicht, wenn du weißt, wie es ungefähr beginnt, endet oder was drin vorkommt.
Im Gegensatz zu = (was nach exakten Übereinstimmungen sucht), ist LIKE deutlich flexibler – besonders nützlich bei Suchfunktionen oder bei der Auswertung von Texten in Datenbanken.
Platzhalter in LIKE
Um Muster zu definieren, kannst du zwei wichtige Platzhalter verwenden:
- % (Prozentzeichen): Steht für beliebig viele Zeichen – egal wie viele und auch kein Zeichen.
- _ (Unterstrich): Steht für genau ein einzelnes Zeichen.
Mit diesen beiden Platzhaltern kannst du gezielt nach Texten suchen, die einem bestimmten Schema folgen.
Beispiel:
Angenommen, du möchtest aus einer Produkttabelle alle Einträge abrufen, deren Name mit dem Buchstaben „M“ anfängt – z. B. Monitor, Maus, Matte usw. Dann schreibst du:SELECT * FROM produkte WHERE name LIKE 'M%';Was passiert hier?
- ‚M%‘ bedeutet: Der Name soll mit „M“ anfangen, und danach dürfen beliebig viele Zeichen folgen.
- Es werden also alle Produktnamen ausgewählt, die mit einem großen M starten – egal, was danach kommt.
Weitere Beispiele für LIKE
1. Name endet mit „er“:WHERE name LIKE '%er';
Findet z. B. Drucker, Beamer, Lautsprecher.
2. Name enthält „top“ irgendwo im Wort:
WHERE name LIKE '%top%';
Findet z. B. Laptop, Desktop, Stoptaste.
3. Name hat ein „a“ an zweiter Stelle:
WHERE name LIKE '_a%';
Findet z. B. Lampe, Tasche, Radio (weil der erste Buchstabe egal ist, der zweite ein „a“ sein muss, und danach wieder beliebig viele Zeichen erlaubt sind).
3.4 Kombination von Klauseln
Du kannst die verschiedenen Klauseln kombinieren, um komplexe Abfragen zu erstellen.
Beispiel:
Um alle Produkte abzurufen, die teurer sind als 250 EUR und aus der Kategorie Elektronik stammen und deren Name mit ‚A‘ beginnt, schreibst du:
SELECT * FROM produkte WHERE preis > 250 AND kategorie = 'Elektronik' AND name LIKE 'A%';
3.5 Zusammenfassung
In diesem Kapitel hast du gelernt:
Wie du Vergleichsoperatoren verwendest, um Daten zu filtern.
Wie du logische Operatoren (
AND,OR,NOT) kombinierst.Wie du IN, BETWEEN und LIKE für spezielle Filterungen einsetzt.
Wie du komplexe Abfragen erstellst, indem du mehrere Klauseln kombinierst.
Im nächsten Kapitel werden wir uns mit Daten manipulieren beschäftigen und lernen, wie du Daten in einer Datenbank einfügst, aktualisierst und löschst.
Quiz zu Daten filtern und sortieren
Teste dein Wissen mit diesen Fragen:
Welcher Operator wird verwendet, um sicherzustellen, dass alle Bedingungen erfüllt sind?
a)
ORb)
ANDc)
NOT
Wie filterst du Daten, die in einer Liste von Werten enthalten sind?
a) Mit
BETWEENb) Mit
INc) Mit
LIKE
Welcher Platzhalter wird verwendet, um beliebig viele Zeichen in der
LIKE-Klausel darzustellen?a)
_b)
%c)
*
Antworten:
1. b) AND
2. b) IN
3. b) %
Timeouts, Deadlocks & Co – was tun bei Problemen?
In datenbankgestützten Anwendungen gehören Timeouts und Deadlocks zu den häufigsten...
Artikel lesenWas ist ein SQL Execution Plan – einfach erklärt
Hattest du schon mal eine SQL-Abfrage, die ewig gedauert hat,...
Artikel lesenINSERT INTO – aber richtig! Werte setzen, Spalten weglassen, Defaults nutzen
Viele SQL-Einsteiger – und selbst erfahrene Entwickler – machen bei...
Artikel lesen10 Tipps für lesbare SQL-Abfragen: Schreib Code, den auch du in 6 Monaten noch verstehst
Du öffnest eine SQL-Datei, die du vor einem halben Jahr...
Artikel lesenINNER JOIN vs. OUTER JOIN vs. CROSS JOIN – anschaulich erklärt mit Beispielen
JOINs sind ein zentrales Werkzeug in SQL, mit dem Daten...
Artikel lesenBenutzerrechte richtig verwalten: Das Prinzip der minimalen Privilegien in SQL
Ein falscher Klick, und die Kundentabelle ist weg. Oder eine...
Artikel lesenLocking, Blocking & Deadlocks verstehen: Konflikte im Multi-User-Betrieb lösen
Wenn mehrere Nutzer gleichzeitig auf eine Datenbank zugreifen, entsteht schnell...
Artikel lesenWas ist SQL? Einfach erklärt!
Stell dir vor, du könntest mit ein paar einfachen Befehlen...
Artikel lesen