3.4 WHERE

Soll das Abfrageergebnis nur Datensätze enthalten, die eine oder mehrere Bedingungen erfüllen, können diese mit Hilfe der WHERE-Klausel angegeben werden.

Beispiele
  1. Wähle aus der Tabelle Kunde alle Datensätze aus, die in der Spalte Nachname den Wert Maier besitzen.
    SQL
    SELECT *
    FROM Kunde
    WHERE Nachname = "Maier";
    Abb. 3-26: SQL – Auswahl aller Datensätze, die eine bestimmte Bedingung erfüllen

    Abfrageergebnis

    ID Vorname Nachname
    1 Max Maier
    3 Eva Maier
    Abb. 3-27: Abfrageergebnis der SQL-Anweisung aus Abb. 3-26.
  2. Wähle aus der Tabelle Mietvertrag alle Datensätze aus, die in der Spalte Mietdauer einen Wert von höchstens 3 besitzen.
    SQL
    SELECT *
    FROM Mietvertrag
    WHERE Mietdauer <= 3;
    Abb. 3-28: SQL – Auswahl einer Spalte

    Abfrageergebnis

    ID Abschlussdatum Mietbeginn Mietdauer Kunde_ID
    1 2015-08-11 2015-08-12 3 1
    Abb. 3-29: Abfrageergebnis der SQL-Anweisung aus Abb. 3-28.
  3. Wähle aus der Tabelle Mietvertrag alle Datensätze aus, die in der Spalte Mietbeginn einen Datumswert besitzen, der nach dem 12.08.2015 liegt.
    SQL
    SELECT *
    FROM Mietvertrag
    WHERE Mietbeginn > "2015-08-12";
    Abb. 3-30: SQL – Auswahl einer Spalte

    Abfrageergebnis

    ID Abschlussdatum Mietbeginn Mietdauer Kunde_ID
    2 2015-08-13 2015-08-15 5 2
    Abb. 3-31: Abfrageergebnis der SQL-Anweisung aus Abb. 3-30.

Soll das Abfrageergebnis nur Datensätze enthalten, die eine oder mehrere Bedingungen erfüllen, können diese mit Hilfe der WHERE-Klausel angegeben werden.

Enthält eine Bedingung Auswahlkriterien vom Typ Text oder Datum, müssen diese in einfache ('...') oder doppelte ("...") Anführungszeichen eingeschlossen werden.

SQL
SELECT [DISTINCT] spalte [, ...]
FROM tabelle
[WHERE bedingung]
[ORDER BY {spalte [ASC|DESC]} [, ...]];
Abb. 3-32: SQL Syntax – SELECT-Anweisung inklusive WHERE-Abschnitt

MySQL unterstützt folgende Vergleichsoperatoren:

Operator Bedeutung
= gleich
!= ungleich
< kleiner als
> größer als
<= kleiner gleich
>= größer gleich
Abb. 3-32b: Vergleichsoperatoren
Merke: Das Abfrageergebnis enthält nur Datensätze, die die in der WHERE-Klausel angegebenen Bedingungen erfüllen.
Aufgabe

Aufgabe 3-4: Bedingungen

Datenbank Firmenwagen

Erstellen Sie jeweils eine SQL-Anweisung, die als Abfrageergebnis eine Tabelle mit den gewünschten Daten zurückgibt:

  1. alle Reservierungen mit dem Zweck 'Messe', Lösung
    Lösung
    SQL
    SELECT *
    FROM Reservierung
    WHERE Zweck = "Messe";
    Abb. 3-33: SQL-Anweisung
  2. alle Instandhaltungen bei Fahrzeugen mit einem Kilometerstand von unter 12000 km, aufsteigend nach dem Kilometerstand sortiert, Lösung
    Lösung
    SQL
    SELECT *
    FROM Instandhaltung
    WHERE KmStand < 12000
    ORDER BY KmStand ASC;
    Abb. 3-34: SQL-Anweisung
  3. alle Firmenwagen, die seit dem 01.01.2015 angeschafft worden sind, absteigend nach dem Anschaffungsdatum sortiert. Bei gleichem Anschaffungsdatum soll nach der Fahrzeugmodell_ID aufsteigend sortiert werden. Lösung
    Lösung
    SQL
    SELECT *
    FROM Fahrzeug
    WHERE Anschaffungsdatum >= "2015-01-01"
    ORDER BY Anschaffungsdatum DESC, Fahrzeugmodell_ID ASC;
    Abb. 3-35: SQL-Anweisung

Verknüpfung mehrerer Bedingungen

Mehrere Bedingungen können mit Hilfe der logischen Operatoren AND bzw. OR miteinander verknüpft werden.

Beispiele
  1. Wähle aus der Tabelle Mietvertrag alle Datensätze aus, die in der Spalte Abschlussdatum einen Datumswert vor dem 12.08.2015 oder nach dem 01.09.2015 besitzen.
    SQL
    SELECT *
    FROM Mietvertrag
    WHERE Abschlussdatum < "2015-08-12" OR Abschlussdatum > "2015-09-01";
    Abb. 3-36: SQL – Auswahl aller Datensätze, die eine bestimmte Bedingung erfüllen (Nutzung eines logischen Operators)

    Abfrageergebnis

    ID Abschlussdatum Mietbeginn Mietdauer Kunde_ID
    1 2015-08-11 2015-08-12 3 1
    Abb. 3-37: Abfrageergebnis der SQL-Anweisung aus Abb. 3-36.
  2. Wähle aus der Tabelle Kunde alle Datensätze aus, die in der Spalte Vorname den Wert Eva und in der Spalte Nachname den Wert Maier besitzen.
    SQL
    SELECT *
    FROM Kunde
    WHERE Vorname = "Eva" AND Nachname = "Maier";
    Abb. 3-38: SQL – Auswahl aller Datensätze, die eine bestimmte Bedingung erfüllen (Nutzung eines logischen Operators)

    Abfrageergebnis

    ID Vorname Nachname
    3 Eva Maier
    Abb. 3-39: Abfrageergebnis der SQL-Anweisung aus Abb. 3-38.
Aufgabe

Aufgabe 3-5: Verknüpfung mehrerer Bedingungen

Datenbank Firmenwagen

Erstellen Sie jeweils eine SQL-Anweisung, die als Abfrageergebnis eine Tabelle mit den gewünschten Daten zurückgibt:

  1. alle Fahrzeugmodelle (Bezeichnung, Kraftstoff, Verbrauch) mit einem Dieselmotor, deren Verbrauch höchstens 5 Liter beträgt, Lösung
    Lösung
    SQL
    SELECT Bezeichnung, Kraftstoff, Verbrauch
    FROM Fahrzeugmodell
    WHERE Kraftstoff = "Diesel" AND Verbrauch <= 5;
    Abb. 3-40: SQL-Anweisung
  2. alle Instandhaltungen deren Kosten höchsten 350,00 EUR oder mehr als 600,00 EUR betragen. Lösung
    Lösung
    SQL
    SELECT *
    FROM Instandhaltung
    WHERE Kosten <= 350 OR Kosten > 600;
    Abb. 3-41: SQL-Anweisung

Intervall als Auswahlkriterium

Mit Hilfe von 'BETWEEN ... AND ...' kann als Auswahlkriterium ein Intervall angegeben werden. Dabei sind die angegebene Ober- und Untergrenze Teil des Intervalls.

Beispiel

Wähle aus der Tabelle Mietvertrag alle Datensätze aus, die in der Spalte Mietbeginn einen Datumswert zwischen dem 01.08.2015 und dem 12.08.2015 besitzen.

SQL
SELECT *
FROM Mietvertrag
WHERE Mietbeginn BETWEEN "2015-08-01" AND "2015-08-12";
Abb. 3-42: SQL – Auswahl aller Datensätze, die eine bestimmte Bedingung erfüllen (Nutzung eines Intervalls)

Abfrageergebnis

ID Abschlussdatum Mietbeginn Mietdauer Kunde_ID
1 2015-08-11 2015-08-12 3 1
Abb. 3-43: Abfrageergebnis der SQL-Anweisung aus Abb. 3-42.
Aufgabe

Aufgabe 3-6: Intervall als Auswahlkriterium

Datenbank Firmenwagen

Erstellen Sie eine SQL-Anweisung, die als Abfrageergebnis eine Tabelle zurückgibt, die alle Fahrzeuge (Kennzeichen, Anschaffungskosten) enthält, die in der Anschaffung mindestens 26.000 € und höchsten 30.000 € gekostet haben, absteigend sortiert nach den Anschaffungskosten (absteigend).

Lösung
Lösung
SQL
SELECT Kennzeichen, Anschaffungskosten
FROM Fahrzeug
WHERE Anschaffungskosten BETWEEN 26000 AND 30000
ORDER BY Anschaffungskosten DESC;
Abb. 3-44: SQL-Anweisung

Werteliste als Auswahlkriterium

Mit Hilfe von IN( ... ) kann für eine Spalte als Auswahlkriterium eine Menge von Werten angegeben werden. Das Abfrageergebnis enthält dann alle Datensätze, die in der betreffenden Spalte einen der angegebenen Werte enthalten.

Beispiel

Wähle aus der Tabelle Kunde alle Datensätze aus, die in der Spalte Vorname einen der folgenden Werte besitzen: Fritz, Eva oder Anja.

SQL
SELECT *
FROM Kunde
WHERE Vorname IN ("Fritz", "Eva", "Anja");
Abb. 3-44a: SQL – Auswahl aller Datensätze, die eine bestimmte Bedingung erfüllen (Nutzung einer Werteliste)

Abfrageergebnis

ID Vorname Nachname
2 Fritz Haug
3 Eva Maier
4 Anja Sommer
Abb. 3-44b: Abfrageergebnis der SQL-Anweisung aus Abb. 3-42.
Aufgabe

Aufgabe 3-7: Werteliste als Auswahlkriterium

Datenbank Firmenwagen

Erstellen Sie eine SQL-Anweisung, die als Abfrageergebnis eine Tabelle zurückgibt, die die Daten der Fahrzeuge mit den folgenden Kennzeichen enthält: HN-AB-45, TBB-A-678, TBB-D-9781, WÜ-A-2435.

Lösung
Lösung
SQL
SELECT *
FROM Fahrzeug
WHERE Kennzeichen IN ("HN-AB-45", "TBB-A-678", "TBB-D-9781", "WÜ-A-2435");
Abb. 3-44c: SQL-Anweisung

Platzhalter

Der LIKE-Operator erlaubt bei Auswahlkriterien vom Typ Text die Verwendung von Platzhaltern. In MySQL dient das Prozentzeichen ("%") dabei als Platzhalter für beliebig viele Zeichen, der Unterstrich ("_") als Platzhalter für genau ein Zeichen.

Beispiel

Wähle aus der Tabelle Kunde alle Datensätze aus, die in der Spalte Nachname einen Wert besitzen, der mit einem M beginnt.

SQL
SELECT *
FROM Kunde
WHERE Nachname LIKE "M%";
Abb. 3-45: SQL – Auswahl aller Datensätze, die eine bestimmte Bedingung erfüllen (Nutzung eines Platzhalters)

Abfrageergebnis

ID Vorname Nachname
1 Max Maier
3 Eva Maier
Abb. 3-46: Abfrageergebnis der SQL-Anweisung aus Abb. 3-45.
Aufgabe

Aufgabe 3-8: Platzhalter

Datenbank Firmenwagen

Erstellen Sie jeweils eine SQL-Anweisung, die als Abfrageergebnis eine Tabelle mit den gewünschten Daten zurückgibt:

  1. alle Fahrzeuge, die im Landkreis Main-Tauber-Kreis zugelassen sind, Lösung
    Lösung
    SQL
    SELECT *
    FROM Fahrzeug
    WHERE Kennzeichen LIKE "TBB%";
    Abb. 3-47: SQL-Anweisung
  2. alle Fahrzeugmodelle (Bezeichnung, Kraftstoff, Verbrauch), in deren Modellbezeichnung das Kürzel 'TDI' vorkommt, Lösung
    Lösung
    SQL
    SELECT Bezeichnung, Kraftstoff, Verbrauch
    FROM Fahrzeugmodell
    WHERE Bezeichnung LIKE "%TDI%";
    Abb. 3-48: SQL-Anweisung
  3. alle Fahrzeuge, die im Landkreis Main-Tauber-Kreis zugelassen sind und in deren Kennzeichen die Ziffernkombination '73' vorkommt, Lösung
    Lösung
    SQL
    SELECT *
    FROM Fahrzeug
    WHERE Kennzeichen LIKE "TBB%73%";
    Abb. 3-49: SQL-Anweisung