3. Daten filtern und sortieren

In diesem Kapitel lernst du, wie du Daten präzise filterst und sortierst. Wir behandeln Vergleichsoperatoren, logische Operatoren und spezielle Klauseln wie IN, BETWEEN und LIKE. Zudem zeigen wir dir, wie du diese Tools kombinierst, um komplexe Abfragen zu erstellen.

3.1 Vergleichsoperatoren

Vergleichsoperatoren sind das Grundwerkzeug der WHERE-Klausel. Sie helfen dir, Daten basierend auf mathematischen oder logischen Bedingungen auszuwählen.

Wichtige Vergleichsoperatoren

OperatorBedeutungBeispiel-AnwendungErklärung
=GleichWHERE alter = 25Gibt Zeilen mit dem Alter von exakt 25 Jahren zurück
!=/<>UngleichWHERE stadt != 'Berlin'Gibt alle Zeilen zurück, deren Stadt nicht Berlin ist.
>Größer alsWHERE preis > 50Zeigt Produkte über 50 €
<Kleiner alsWHERE alter < 18Findet Minderjährige
>=Größer oder gleichWHERE bestand >= 100Bestände ab 100 Einheiten
<=Kleiner oder gleichWHERE 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 Produktnummer
  • name: Der Name des Produkts
  • preis: Der Preis des Produkts in Euro
  • kategorie: Die Produktkategorie (z. B. „Elektronik“, „Bücher“, „Kleidung“)

 

Tabelle: Produkte

Wir möchten in der Tabelle produkte alle teuren Elektronikartikel finden. Das bedeutet, wir suchen nach Produkten, die:

  1. Mehr als 500 € kosten

  2. 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 Tabelle produkte.
  • 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:

Tabelle: Teure Produkte

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

Diese speziellen Klauseln erweitern die Möglichkeiten der WHERE-Klausel und machen deine Abfragen noch flexibler.

IN

Die IN-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';
kannst du mit der IN-Klausel eine elegantere Lösung verwenden:
SELECT * 
FROM produkte 
WHERE kategorie IN ('Möbel', 'Bücher');
Diese Abfrage gibt dir alle Zeilen aus der Tabelle produkte zurück, bei denen die Spalte Kategorie entweder den Wert Möbel oder Bücher enthält. Wichtig:
  • 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:

  1. Welcher Operator wird verwendet, um sicherzustellen, dass alle Bedingungen erfüllt sind?

    • a) OR

    • b) AND

    • c) NOT

  2. Wie filterst du Daten, die in einer Liste von Werten enthalten sind?

    • a) Mit BETWEEN

    • b) Mit IN

    • c) Mit LIKE

  3. Welcher Platzhalter wird verwendet, um beliebig viele Zeichen in der LIKE-Klausel darzustellen?

    • a) _

    • b) %

    • c) *