SQL - WHERE-Klausel
Willkommen, zukünftige Datenbank-Zauberer! Heute tauchen wir in eines der kraftvollsten Werkzeuge in eurem SQL-Werkzeugkasten ein: die WHERE-Klausel. Als dein freundlicher Nachbarschaftsinformatiklehrer bin ich hier, um dich durch diese aufregende Reise zu führen. Also, hol dir deine virtuellen Zauberstäbe (Tastaturen) und lasst uns ein bisschen SQL-Zauber zaubern!
Die SQL WHERE-Klausel
Stell dir vor, du bist in einer riesigen Bibliothek mit Millionen von Büchern. Du suchst nach einem bestimmten Buch über Drachen. Würdest du jedes einzelne Buch durchsuchen? Natürlich nicht! Du würdest die Bibliothekarin bitten, dir Bücher über Drachen zu helfen finden. In SQL ist die WHERE-Klausel deine hilfreiche Bibliothekarin.
Die WHERE-Klausel ermöglicht es uns, Daten basierend auf spezifischen Bedingungen zu filtern. Es ist, als würde man der Datenbank sagen: "Hey, ich möchte nur diese bestimmte Information sehen, die diesen Kriterien entspricht."
Hier ist die grundlegende Syntax:
SELECT spalte1, spalte2, ...
FROM tabelle_name
WHERE bedingung;
Macht euch keine Sorgen, wenn das etwas einschüchternd aussieht. Wir werden es Schritt für Schritt auseinandernehmen, und bald werdet ihr Daten wie ein Profi filtern können!
WHERE-Klausel mit SELECT-Anweisung
Lassen wir mit einem einfachen Beispiel beginnen. Stellen wir uns eine Tabelle namens students
mit den Spalten id
, name
und age
vor. Wir möchten alle Schüler finden, die 18 Jahre alt sind.
SELECT *
FROM students
WHERE age = 18;
In dieser Abfrage:
-
SELECT *
bedeutet, dass wir alle Spalten sehen möchten. -
FROM students
gibt die Tabelle an, die wir abfragen. -
WHERE age = 18
ist unsere Bedingung. Es ist, als würden wir sagen: "Zeige mir nur die Zeilen, bei denen das Alter genau 18 beträgt."
Angenommen, wir möchten nur die Namen dieser 18-jährigen Schüler sehen:
SELECT name
FROM students
WHERE age = 18;
Seht ihr, wie wir *
in name
geändert haben? Jetzt sehen wir nur die Namen, nicht alle Spalten.
WHERE-Klausel mit UPDATE-Anweisung
Die WHERE-Klausel ist nicht nur für SELECT-Anweisungen nützlich. Sie ist auch super hilfreich beim Aktualisieren von Daten. Angenommen, wir möchten das Alter aller Schüler, deren Name "Alice" ist, auf 19 setzen.
UPDATE students
SET age = 19
WHERE name = 'Alice';
Diese Abfrage ändert das Alter auf 19, aber nur für Schüler namens Alice. Ohne die WHERE-Klausel würden wir versehentlich das Alter aller Schüler ändern!
WHERE-Klausel mit IN-Operator
Was wäre, wenn wir Schüler finden möchten, die entweder 18, 19 oder 20 Jahre alt sind? Wir könnten mehrere OR-Bedingungen verwenden, aber es gibt eine elegantere Methode: den IN-Operator.
SELECT *
FROM students
WHERE age IN (18, 19, 20);
Diese Abfrage gibt alle Schüler zurück, deren Alter 18, 19 oder 20 ist. Es ist, als würden wir sagen: "Ist das Alter in dieser Liste von Werten? Wenn ja, inkludiere es!"
WHERE-Klausel mit NOT IN-Operator
Nun, was wäre, wenn wir alle Schüler finden möchten, die NICHT 18, 19 oder 20 Jahre alt sind? Ganz einfach! Wir fügen NOT vor IN ein:
SELECT *
FROM students
WHERE age NOT IN (18, 19, 20);
Dies gibt uns alle Schüler zurück, deren Alter anything anderes als 18, 19 oder 20 ist.
WHERE-Klausel mit LIKE-Operator
Manchmal müssen wir nach Mustern in Textdaten suchen. Da kommt der LIKE-Operator ins Spiel. Stellen wir uns vor, wir möchten alle Schüler finden, deren Namen mit 'A' beginnen:
SELECT *
FROM students
WHERE name LIKE 'A%';
In dieser Abfrage ist '%' ein Joker, der jede Sequenz von Zeichen matched. Also bedeutet 'A%' "beginnt mit A, gefolgt von allem".
Wir können auch nach Namen suchen, die mit 'n' enden:
SELECT *
FROM students
WHERE name LIKE '%n';
Oder Namen, die 'li' irgendwo enthalten:
SELECT *
FROM students
WHERE name LIKE '%li%';
WHERE-Klausel mit AND, OR-Operatoren
Oft müssen wir mehrere Bedingungen kombinieren. Da kommen AND und OR ins Spiel.
Lassen uns alle Schüler finden, die 18 Jahre alt sind UND deren Namen mit 'A' beginnen:
SELECT *
FROM students
WHERE age = 18 AND name LIKE 'A%';
Oder vielleicht Schüler, die entweder 18 Jahre alt sind ODER deren Namen mit 'A' beginnen:
SELECT *
FROM students
WHERE age = 18 OR name LIKE 'A%';
Ihr könnt diese Operatoren kombinieren, um komplexe Bedingungen zu erstellen:
SELECT *
FROM students
WHERE (age = 18 OR age = 19) AND (name LIKE 'A%' OR name LIKE 'B%');
Diese Abfrage findet Schüler, die entweder 18 oder 19 Jahre alt sind UND deren Namen mit 'A' oder 'B' beginnen.
Hier ist eine Tabelle, die die Operatoren zusammenfasst, die wir gelernt haben:
Operator | Beschreibung | Beispiel |
---|---|---|
= | Gleich | WHERE age = 18 |
<> oder != | Ungleich | WHERE age <> 18 |
> | Größer als | WHERE age > 18 |
< | Kleiner als | WHERE age < 18 |
>= | Größer oder gleich | WHERE age >= 18 |
<= | Kleiner oder gleich | WHERE age <= 18 |
IN | Passt zu einem Wert in einer Liste | WHERE age IN (18, 19, 20) |
NOT IN | Passt nicht zu einem Wert in einer Liste | WHERE age NOT IN (18, 19, 20) |
LIKE | Musterabgleich | WHERE name LIKE 'A%' |
AND | Beide Bedingungen müssen wahr sein | WHERE age = 18 AND name LIKE 'A%' |
OR | Entweder Bedingung kann wahr sein | WHERE age = 18 OR name LIKE 'A%' |
Und das war's, Leute! Ihr habt gerade die Ins und Outs der WHERE-Klausel gelernt. Denkt daran, Übung macht den Meister. Versucht, eigene Abfragen zu schreiben, experimentiert mit verschiedenen Bedingungen, und bald werdet ihr Daten wie ein erfahrener Datenbankadministrator filtern können.
Frohes Abfragen und möge eure WHERE-Klauseln immer das finden, was ihr sucht!
Credits: Image by storyset