Also, wir wissen schon, wie man das SELECT-Kommando benutzt. Zumindest haben wir gelernt, wie man Daten aus einer Datenbank holt, die gewünschten Spalten auswählt und Abfragen schreibt, die rohe Daten in nützliche Infos verwandeln. Jetzt ist es Zeit, ein bisschen "Filter" in unsere magische Palette zu bringen. Genau, heute geht’s um Daten filtern mit Vergleichsoperatoren wie =, >, < und <>.
Wenn du mit großen Tabellen arbeitest, willst du wahrscheinlich nicht alle Daten sehen (außer du stehst auf Chaos). Um nur die Zeilen zu bekommen, die du brauchst, gibt’s in SQL das Schlüsselwort WHERE. Damit kannst du Bedingungen festlegen, die jede Zeile erfüllen muss, um ins Ergebnis der Abfrage zu kommen. Für diese Bedingungen nutzt man Vergleichsoperatoren.
Syntax fürs Filtern mit WHERE
SELECT spalte1, spalte2
FROM tabelle
WHERE bedingung;
Ganz easy: Wir packen das Wort WHERE nach dem FROM und schreiben die konkrete Bedingung, die die Zeilen erfüllen sollen.
Als Beispiel schauen wir uns das Auslesen von Daten aus der Tabelle students an:
SELECT name, age
FROM students
WHERE age > 18;
Diese Abfrage holt nur die Studenten (Name und Alter), die älter als 18 sind. Ziemlich simpel, oder? Jetzt tauchen wir tiefer in die Welt der Vergleichsoperatoren ein.
Die wichtigsten Vergleichsoperatoren
In SQL gibt’s ein paar Vergleichsoperatoren, mit denen du die Daten so filtern kannst, wie du willst. Eigentlich kennst du die schon aus Mathe, aber lass uns kurz klären, was wie funktioniert. Hier die meistgenutzten:
=— Gleich.<>— Ungleich (Alternative:!=in manchen DBMS, aber<>ist SQL-Standard).>— Größer.<— Kleiner.>=— Größer oder gleich.<=— Kleiner oder gleich.
Vergleichsoperatoren-Tabelle
| Operator | Bedeutung | Beispiel | Ergebnis |
|---|---|---|---|
= |
Gleich | age = 20 |
Gibt Zeilen zurück, wo das Alter 20 ist |
<> |
Ungleich | age <> 20 |
Gibt Zeilen zurück, wo das Alter nicht 20 ist |
> |
Größer | age > 18 |
Gibt Zeilen zurück, wo das Alter größer als 18 ist |
< |
Kleiner | age < 18 |
Gibt Zeilen zurück, wo das Alter kleiner als 18 ist |
>= |
Größer oder gleich | age >= 18 |
Gibt Zeilen zurück, wo das Alter 18 oder mehr ist |
<= |
Kleiner oder gleich | age <= 18 |
Gibt Zeilen zurück, wo das Alter 18 oder weniger ist |
Beispiele für die Verwendung von Vergleichsoperatoren
Beispiel 1: Studenten über 20 Jahre auslesen
Hier ist unsere Tabelle:
| id | name | age |
|---|---|---|
| 1 | Alex Lin | 22 |
| 2 | Anna Song | 19 |
| 3 | Otto Art | 21 |
SELECT name, age
FROM students
WHERE age > 20;
Hier setzen wir die Bedingung age > 20, um nur die Studenten zu bekommen, die älter als 20 sind. Wenn in der Tabelle jemand mit 19 steht, sorry, der kommt nicht ins Ergebnis.
In unserem Fall bekommen wir dieses Ergebnis:
| name | age |
|---|---|
| Alex Lin | 22 |
| Otto Art | 21 |
Studentin Anna Song ist nicht dabei, weil sie erst 19 ist.
Beispiel 2: Mitarbeiter mit Gehalt mindestens 50.000 auslesen
Hier ist unsere Tabelle employees:
| first_name | last_name | salary |
|---|---|---|
| Julia | Kim | 48000 |
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
Und hier unser SQL-Query:
SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50000;
Diese Abfrage gibt alle Mitarbeiter zurück, deren Gehalt gleich 50.000 oder mehr ist. Gleich zählt auch!
| first_name | last_name | salary |
|---|---|---|
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
Beispiel 3: Produkte mit Preis unter 100 auslesen
| product_name | price |
|---|---|
| USB Cable | 85 |
| Wireless Mouse | 150 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
SELECT product_name, price
FROM products
WHERE price < 100;
Wenn du einen Online-Shop hast, kannst du mit so einer Abfrage alle Produkte raussuchen, die weniger als 100 kosten (zum Beispiel für eine Aktion "Alles für 99!").
| product_name | price |
|---|---|
| USB Cable | 85 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
Beispiel 4: Nutzer mit bestimmtem id ausschließen
SELECT id, username
FROM users
WHERE id <> 1;
Diese Abfrage holt alle Nutzer, außer dem mit id gleich 1. Der Operator <> heißt: "Gib mir alle, die nicht diesen Wert haben".
Tabelle users:
| id | username |
|---|---|
| 1 | admin |
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Ergebnis der Abfrage:
| id | username |
|---|---|
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Typische Fehler beim Filtern mit Vergleichsoperatoren
Gerade am Anfang passieren beim Schreiben von Abfragen mit Filtern oft Fehler. Hier ein paar typische Fälle, die du kennen solltest:
Problem 1: Fehler im Spaltennamen
Wenn du einen Spaltennamen falsch schreibst, gibt PostgreSQL einen Fehler aus. Zum Beispiel:
SELECT name, age
FROM students
WHERE ages > 18; -- Fehler: Spalte "ages" existiert nicht
Check immer die genauen Spaltennamen, bevor du die Abfrage schreibst.
Problem 2: Falsche Verwendung des Vergleichsoperators
Manchmal vertauschen Anfänger versehentlich Operatoren. Zum Beispiel:
SELECT name, age
FROM students
WHERE age => 18; -- Fehler: falscher Operator
Richtig ist >=, nicht =>.
Problem 3: Filtern nach Werten, die es nicht gibt
Wenn du nach einem Wert filterst, der in der Tabelle nicht vorkommt, läuft die Abfrage zwar, gibt aber ein leeres Ergebnis zurück. Zum Beispiel:
SELECT name
FROM students
WHERE age = 999; -- Ergebnis: 0 Zeilen
Das ist kein Syntaxfehler, kann aber verwirren, wenn du Daten erwartest.
Praktische Anwendung
Das Filtern von Daten mit Vergleichsoperatoren wird in vielen Szenarien genutzt:
- Datenanalyse: Zum Beispiel, um alle Kunden zu finden, die mehr als 10.000 Rupien ausgegeben haben.
- Berichte: Mitarbeiter mit Gehalt über dem Durchschnitt auswählen.
- Monitoring: Nutzer tracken, die im letzten Monat nicht aktiv waren.
Mit SQL kannst du super schnell die Daten aus riesigen Tabellen holen, die du brauchst – und Vergleichsoperatoren sind der erste Schritt auf diesem Weg.
GO TO FULL VERSION