Logische Verknüpfungen (AND und OR)
Wir können inzwischen Anfragen an die Datenbank senden und dabei sogar bestimmte Information durch verschiedene Operatoren rausfiltern.
Mit den Operatoren "AND
", "OR
", "AND NOT
" und "OR NOT
", können wir mehrere Bedingungen logisch miteinander verknüpfen.
AND
Der logische Verknüpfungsoperator "AND
" verbindet mehrere Bedingungen innerhalb einer "WHERE
"-Klausel, die Ausgabe vom "AND
"-Operator ist nur "true
", wenn alle verknüpften Abfragen "true
" sind.
Bedingung 1 | Bedingung 2 | Ergebnis |
---|---|---|
true | true | true |
false | false | false |
false | true | false |
true | false | false |
In diesem Beispiel wollen wir uns nur die Frauen anzeigen lassen, die aktuell verheiratet sind.
SELECT vorname, nachname, familienstand FROM person WHERE anrede='Frau' AND familienstand='verheiratet';
AND NOT
Der Operator "AND NOT
" gibt nur "true
" aus, wenn die erste Bedingung "true
" ist und die zweite Bedingung "false
" ist.
Bedingung 1 | Bedingung 2 | Ergebnis |
---|---|---|
true | true | false |
false | false | false |
false | true | false |
true | false | true |
Im Beispiel wollen wir uns alle Männer ausgeben lassen, die mal geheiratet haben.
SELECT anrede, vorname, nachname, hochzeitsdatum FROM person WHERE anrede='Herr' AND NOT hochzeitsdatum='NULL';
OR
Der Operator "OR
" gibt "true
" aus, sobald nur eine der Bedingungen "true
" ist.
Egal ob die erste, die zweite, beide oder sogar noch mehr Bedingungen.
Es wird nur "false
" ausgegeben, wenn keine Bedingung "true
" ist.
Bedingung 1 | Bedingung 2 | Ergebnis |
---|---|---|
true | true | true |
false | false | false |
false | true | true |
true | false | true |
Im Beispiel lassen wir uns alle Adressen anzeigen, die entweder eine Hausnummer 20 haben oder einer Stadt zugewiesen sind, die mit B beginnt.
SELECT strasse, hausnummer, ort FROM adresse WHERE hausnummer='20' OR ort LIKE 'B%';
In diesem Beispiel erkennt man gut, dass die Ludwig-Erhard-Allee 20 in Bonn sowohl die eine als auch die andere Bedingung erfüllt.
OR NOT
Für den "OR NOT
"-Operator muss entweder die erste Bedingung "true
" oder die zweite Bedingung "false
" sein, um "true
" zu ergeben.
Bedingung 1 | Bedingung 2 | Ergebnis |
---|---|---|
true | true | true |
false | false | true |
false | true | false |
true | false | true |
Im Beispiel werden wir uns alle Personen ausgeben lassen, die zum männlichen Geschlecht gehören und zusätzlich die Frauen, die nicht verheiratet sind.
SELECT anrede, nachname, familienstand FROM person WHERE anrede='Herr' OR NOT familienstand='Verheiratet';
Vermischte Operatoren
Auch eine Kombination der logischen Operatoren ist kein Problem. Damit können Abfragen erstellt werden, die entweder alle verheirateten Frauen und alle Geschiedenen Männer gleichzeitig ausgeben.
SELECT anrede, nachname, familienstand FROM person WHERE anrede='Frau' AND familienstand='Verheiratet' OR anrede='Herr' AND familienstand='Geschieden';
Weiter mit Sortierte Ausgaben (ORDER BY)