Where

Die WHERE-Bedingung in einer SQL-Abfrage dient dazu, bestimmte Datensätze auszuwählen, die bestimmte Kriterien erfüllen. Es ermöglicht es, nur die Daten zu selektieren, die für eine Anforderungen relevant sind.

Die WHERE-Bedingung wird nach dem FROM-Schlüsselwort verwendet und muss eine logische Bedingung enthalten.

MYSQL/SQLite
SELECT * FROM Tabellenname WHERE Alter > 18;

Dieser Befehl würde alle Datensätze aus der Tabelle „Tabellenname“ auswählen, bei denen das Alter größer als 18 ist.

Wenn nach Werten vom Datentyp Text gefragt wird, muß der Wert in Anführungszeichen (Einfache- oder Doppelte-Anführungszeichen) stehen.

MYSQL/SQLite
SELECT * FROM Tabellenname WHERE name = 'John';
--oder
SELECT * FROM Tabellenname WHERE name = "John";

Vergleichsoperatoren

Für die Formulierung der Bedingungen stehen folgende Vergleichsoperatoren zur Verfügung:

Operator

Beschreibung

Beispiel

=

Gleich

WHERE Alter = 25

<>

Nicht gleich

WHERE Alter <> 25

>

Größer als

WHERE Alter > 25

<

Kleiner als

WHERE Alter < 25

>=

Größer oder gleich

WHERE Alter >= 25

<=

Kleiner oder gleich

WHERE Alter <= 25

BETWEEN

Zwischen einem Bereich (inklusive)

WHERE Alter BETWEEN 20 AND 30

NOT BETWEEN

Nicht zwischen einem Bereich (inklusive)

WHERE Alter NOT BETWEEN 20 AND 30

IN

In einer Liste von Werten

WHERE Alter IN (20, 25, 30)

NOT IN

Nicht in einer Liste von Werten

WHERE Alter NOT IN (20, 25, 30)

LIKE

Suchen nach einem bestimmten Muster
% ersetzt beliebig viele Zeichen
_ ersetzt genau ein Zeichen

WHERE Name LIKE Hansen
WHERE Name LIKE M%
WHERE Name LIKE _a%

NOT LIKE

Suchen nach einem bestimmten Muster das nicht passt (Benutzung von % als Wildcard)

WHERE Name NOT LIKE M%

IS NULL

Prüfen ob ein Wert NULL ist

WHERE Name IS NULL

IS NOT NULL

Prüfen ob ein Wert nicht NULL ist

WHERE Name IS NOT NULL

Logische Operatoren

Es können auch mehrere Bedingungen in der WHERE-Klausel verwendet werden und diese miteinander verknüpfen, indem man die logischen Operatoren wie AND, OR, NOT verwendet.

MYSQL/SQLite
SELECT * FROM Tabellenname WHERE Alter > 18 AND Geschlecht = 'weiblich';

Dieser Befehl würde alle Datensätze aus der Tabelle „Tabellenname“ auswählen, bei denen das Alter größer als 18 ist und das Geschlecht „weiblich“ ist.

Operator

Beschreibung

Beispiel

AND

Alle Bedingungen müssen erfüllt sein

WHERE Alter = 25 AND Geschlecht = m

OR

Mindestens eine Bedingung muss erfüllt sein

WHERE Alter = 25 OR Alter = 30

NOT

Negiert eine Bedingung

WHERE NOT Alter = 25

Wahrheitstabelle

Wert 1

Wert 2

AND

OR

True

True

True

True

True

False

False

True

False

True

False

True

False

False

False

False