In SQL-Sprachen wird die where Bedingung genutzt, um relevante Daten aus einer größeren Menge von Daten zu filtern. Die where-Bedingung findet bei allen Abfragen (Select), Änderungen (Update) und Löschen (Delete) von Datensätzen Anwendung.

Syntaxbeispiele:

select * from employees where last_name = ‚King‘;
delete from employees where last_name = ‚King‘;
update employees set last_name = ‚Queen‘ where last_name = ‚King‘;

Die where-Bedingung kommt meist nach der Aufzählung der Tabelle (hier: employees) aus der Daten abgefragt/gelöscht werden sollen.

Operatoren der where-Bedingung:

Operator Beschreibung
= Das Attribut muss gleich einem bestimmten Wert sein
<>, !=, ^=, ~= Das Attribut muss ungleich einem bestimmten Wert sein
< Das Attribut muss kleiner als ein bestimmter Wert sein
> Das Attribut muss größer als ein bestimmter Wert sein
<= Das Attribut muss kleiner oder gleich als ein bestimmter Wert sein
>= Das Attribut muss größer oder gleich als ein bestimmter Wert sein
like Das Attribut muss ähnlich zu einem bestimmten Wert sein, wobei durch ‚%‘ (mehrere Zeichen) und ‚_‘ (genau ein Zeichen) Platzhalter definiert sind
not like Das Attribut darf nicht ähnlich zu einem bestimmten Wert sein, wobei durch ‚%‘ (mehrere Zeichen) und ‚_‘ (genau ein Zeichen) Platzhalter definiert sind
is null Das Attribut muss leer sein (null)
is not null Das Attribut darf nicht leer sein
between Der Wert des Attributs muss zwischen zwei Werten liegen. Analog zu <= und >=
in Der Wert des Attributs muss einem der angegeben Werte entsprechen
not in Der Wert des Attributs darf nicht einem der angegeben Werte entsprechen

 

Sollen in einer where-Bedingung mehrere Attribute geprüft werden, sind diese Vergleiche entweder mit ‚and‘ oder mit ‚or‘ zu verknüpfen. Wurden Attribute in einer where-Bedingung mit ‚and‘ verknüpft, so müssen beide Bedingungen zutreffen damit der Datensatz gültig ist. Bei einer ‚or‘ Verknüpfung muss einer der beiden Ausdrücke zutreffen. Am Ende können beliebig viele Attribute mit ‚and‘ bzw. ‚or‘ verknüpft werden. Einzig bei der Kombination von ‚and‘ und ‚or‘ muss darauf geachtet werden, dass Klammerung bei Vergleichen genutzt um sicher zu gehen, dass die richtigen Einschränkungen geprüft werden.

Beispiel: select * from employees where last_name = ‚King‘ or last_name = ‚Austin‘ and first_name = ‚Steven‘;

Im Beispiel wird nicht sicher klar, ob der Vorname ‚Steven‘ bei beiden Einschränkungen auf den Nachnamen ‚King‘ bzw. ‚Austin‘ gelten oder nur für den Nachnamen ‚Austin‘. Daher sollte immer eine Klammerung bei kritischen Ausdrücken in where-Bedinungen genutzt werden, um verständlichere Abfragen zu schreiben:

select * from employees where (last_name = ‚King‘ or last_name = ‚Austin‘) and first_name = ‚Steven‘;
select * from employees where last_name = ‚King‘ or (last_name = ‚Austin‘ and first_name = ‚Steven‘);

Beispiele der where-Bedingung:

SQL Beschreibung
select * from employees where last_name = ‚King‘; Abfrage aller Mitarbeiter mit Nachnamen ‚King‘
select * from employees where last_name = ‚King‘ and first_name = ‚Steven‘; Abfrage aller Mitarbeiter mit Nachnamen ‚King‘ und der Vorname muss ‚Steven‘ sein
select * from employees where last_name = ‚King‘ or first_name = ‚Steven‘; Abfrage aller Angestellten welche ‚King‘ als Nachnamen haben oder mit Vornamen ‚Steven‘ heißen
select * from employees where last_name != ‚King‘; Abfrage aller Mitarbeiter deren Nachname nicht ‚King‘ ist
select * from employees where last_name in (‚King‘, ‚Austin‘); Abfrage aller Mitarbeiter deren Nachname entweder ‚King‘ oder ‚Austin‘ ist
select * from employees where last_name not in (‚King‘, ‚Austin‘); Abfrage aller Mitarbeiter deren Nachname weder ‚King‘ noch ‚Austin‘ ist
select * from employees where salary < 10000; Abfrage aller Mitarbeiter deren Gehalt kleiner als 10000 ist
select * from employees where salary <= 10000; Abfrage aller Mitarbeiter deren Gehalt kleiner oder gleich 10000 ist
select * from employees where salary >10000; Abfrage aller Mitarbeiter deren Gehalt größer als 10000 ist
select * from employees where salary >= 10000; Abfrage aller Mitarbeiter deren Gehalt größer oder gleich 10000 ist
select * from employees where salary between 10000 and 20000; Abfrage aller Mitarbeiter deren Gehalt zwischen 10000 und 20000 liegt
select * from employees where last_name like ‚A%‘; Abfrage aller Mitarbeiter deren Nachname mit einem ‚A‘ beginnen
select * from employees where last_name not like ‚A%‘; Abfrage aller Mitarbeiter deren Nachname nicht mit einem ‚A‘ beginnen
select * from employees where last_name like ‚%a‘; Abfrage aller Mitarbeiter deren Nachname mit einem ‚a‘ endet
select * from employees where last_name like ‚Ba_da‘; Abfrage aller Mitarbeiter der Nachname mit ‚Ba‘ beginnt, an dritter Stelle ein beliebiges Zeichen haben und der Nachname anschließend auf ‚da‘ endet
select * from employees where phone_number is null; Abfrage aller Mitarbeiter die keine Telefonnummer besitzen
select * from employees where phone_number is not null; Abfrage aller Mitarbeiter die eine Telefonnummer besitzen

 

Es können ebenfalls Funktionen in where-Bedingungen von SQLs genutzt werden, z.B. wandelt die Funktion upper alle Zeichen in Großbuchstaben um:

select * from employees where upper(last_name) = ‚KING‘; oder select * from employees where upper(last_name) = upper(‚King‘);

Kommentare sind derzeit nicht möglich.

   
Impressum Suffusion theme by Sayontan Sinha