SQL: WHERE-Befehl mit mehreren Bedingungen

Bei den meisten Datenbankabfragen reicht eine einzelne Bedingung im WHERE-Befehl nicht aus, meistens müssen mehrere Bedingungen miteinander verknüpft werden. Um mehrere Bedingungen zu verknüpfen kannst du eine Kombination von logischen Operatoren nutzen.

Exkurs: Logische Operatoren

Ein Logischer Operator ist eine Funktion, die einen Wahrheitswert „WAHR“ oder „FALSCH“ liefert. Die Datenbankabfrage kann durch die Kombination von logischen Operatoren präzisiert werden. Es können zum Beispiel bestimmten Datensätze ausgeschlossen werden (NOT) oder es werden nur Datensätze ausgegeben, die mehrere Bedingungen erfüllen (AND). Somit wird die Abfrage wesentlich vereinfacht und eindeutiger. Folgende logische Operatoren haben wir in SQL zur Verfügung: AND, OR, XOR, NOT.

Operator: AND

Eine Bedingung, die durch eine AND-Verknüpfung gebildet wird, ist genau dann WAHR, wenn alle Bedingungen erfüllt sind.  Die allgemeine Syntax lautet:

SELECT Columnname FROM Table WHERE Columnname = value A AND value B;

Z. B. wollen wir alle Schauspieler mit dem Nachnamen ‚Allen‘ UND einem Vornamen der mit den Buchstaben A-K beginnt (also < L) abfragen:

SELECT first_name, last_name AS name FROM actor WHERE last_name = ‚ALLEN‘ AND first_name < ‚L‘;

Operator: OR

Eine Bedingung, die durch eine OR-Verknüpfung gebildet wird, ist genau dann WAHR, wenn mindestens eine Bedingung erfüllt ist. Die allgemeine Syntax lautet:

SELECT Columnname FROM Table WHERE Columnname = value A OR value B;

Z. B. fragen wir nun alle Schauspieler mit dem Nachnamen ‚Allen‘ ODER einem Vornamen der mit A-K beginnt (also < L) ab:

SELECT first_name, last_name AS name FROM actor WHERE last_name = ‚ALLEN‘ OR first_name < ‚L‘;

Operator: XOR

Eine Bedingung, die durch eine XOR-Verknüpfung (ein ausschließendes Oder) gebildet wird, ist genau dann WAHR, wenn nur eine Bedingung erfüllt ist.

SELECT Columnname FROM Table WHERE Columnname = value A XOR value B;

Z. B. fragen wir ENTWEDER alle Schauspieler mit dem Nachnamen ‚Allen‘ ODER einem Vornamen der mit A-K beginnt (also < L) ab:

SELECT first_name, last_name AS name FROM actor WHERE last_name = ‚ALLEN‘ XOR first_name < ‚L‘;

Operator: NOT

Dieser Operator kehrt das Ergebnis um. Alles was nicht abgefragt wird, wird ausgegeben. Die allgemeine Syntax lautet:

SELECT Columnname FROM Table WHERE NOT condition;

SELECT first_name, last_name AS name FROM actor WHERE NOT ( last_name = ‚ALLEN‘ OR first_name < ‚L‘);

Zum besseren Verständnis habe ich ein Venn-Diagramm der Datenbankabfragen
erstellt:

Das Rechteck stellt die Datenmenge der 200 Schauspieler dar.
Die blaue Teilmenge umfasst die Schauspieler mit dem Nachnamen „Allen“ und die
lila Teilmenge sind die Schauspieler mit einem Vornamen < „L“.

(Visited 38.820 times, 1 visits today)

3 Antworten auf „SQL: WHERE-Befehl mit mehreren Bedingungen“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert