SQL Erste Schritte

Prädikate

Mit Hilfe von Prädikaten können Sie Bedingungen konstruieren, damit nur die Zeilen verarbeitet werden, die diese Bedingungen erfüllen. Die Prädikate BASIC werden unter Auswählen von Zeilen erläutert. Der vorliegende Abschnitt behandelt die Prädikate IN, BETWEEN, LIKE, EXISTS und Prädikate QUANTIFIED.

Verwenden des Prädikats IN

Mit dem Prädikat IN können Sie einen Wert mit mehreren anderen Werten vergleichen. Beispiel:

     SELECT NAME
        FROM STAFF
        WHERE DEPT IN (20, 15)       

Dieses Beispiel entspricht der folgenden Anweisung:

     SELECT NAME
        FROM STAFF
        WHERE DEPT = 20  OR DEPT = 15 

Die Operatoren IN und NOT IN können Sie verwenden, wenn eine Unterabfrage eine Gruppe von Werten zurückgibt. Beispielsweise listet die folgende Abfrage die Familiennamen der Mitarbeiter auf, die für die Projekte MA2100 und OP2012 verantwortlich sind:

     SELECT LASTNAME
        FROM EMPLOYEE
        WHERE EMPNO IN
           (SELECT RESPEMP
               FROM PROJECT
               WHERE PROJNO = 'MA2100'
               OR PROJNO = 'OP2012')

Die Unterabfrage wird einmal ausgewertet, und die resultierende Liste wird direkt in die übergeordnete Abfrage eingesetzt. Wenn die oben dargestellte Unterabfrage beispielsweise die Personalnummern 10 und 330 auswählt, wird die übergeordnete Abfrage so ausgewertet, als ob sie die folgende Klausel WHERE enthielte:

     WHERE EMPNO IN (10, 330)

Die durch die Unterabfrage zurückgegebene Liste von Werten kann keinen, einen oder mehrere Werte enthalten.

Verwenden des Prädikats BETWEEN

Das Prädikat BETWEEN vergleicht einen einzelnen Wert mit einem (im Prädikat BETWEEN benannten) inklusiven Wertebereich.

Das folgende Beispiel sucht nach den Namen der Mitarbeiter, die zwischen $ 10.000 und $ 20.000 verdienen:

     SELECT LASTNAME
        FROM EMPLOYEE
        WHERE SALARY BETWEEN 10000 AND 20000

Dies entspricht der folgenden Anweisung:

     SELECT LASTNAME
        FROM EMPLOYEE
        WHERE SALARY >= 10000 AND SALARY <= 20000

Das nächste Beispiel sucht nach den Namen der Mitarbeiter, die weniger als $ 10.000 oder mehr als $ 20.000 verdienen:

     SELECT LASTNAME
        FROM EMPLOYEE
        WHERE SALARY NOT BETWEEN 10000 AND 20000

Verwenden des Prädikats LIKE

Mit dem Prädikat LIKE können Sie nach Zeichenfolgen suchen, die bestimmte Muster aufweisen. Das Muster wird durch Prozentzeichen und Unterstreichungszeichen angegeben.

Im folgenden Beispiel werden die Namen der Mitarbeiter mit einer Länge von sieben Zeichen und dem Anfangsbuchstaben S ausgewählt:

     SELECT NAME
        FROM STAFF
        WHERE NAME LIKE 'S _ _ _ _ _ _'

Das nächste Beispiel wählt die Namen der Mitarbeiter aus, die nicht mit dem Buchstaben S beginnen:

     SELECT NAME
        FROM STAFF
        WHERE NAME  NOT LIKE 'S%'

Verwenden des Prädikats EXISTS

Mit einer Unterabfrage können Sie überprüfen, ob eine Zeile vorhanden ist, die eine bestimmte Bedingung erfüllt. In diesem Fall wird die Unterabfrage durch das Prädikat EXISTS oder NOT EXISTS mit der übergeordneten Abfrage verbunden.

Wenn Sie eine Unterabfrage durch ein Prädikat EXISTS mit einer übergeordneten Abfrage verbinden, gibt die Unterabfrage keinen Wert zurück. Statt dessen ist das Prädikat EXISTS dann wahr (= zutreffend), wenn die Antwortgruppe der Unterabfrage eine oder mehrere Zeilen enthält, und falsch (= nicht zutreffend), wenn die Antwortgruppe keine Zeilen enthält.

Das Prädikat EXISTS wird häufig bei Unterabfragen mit Korrelationsbezug verwendet. Das folgende Beispiel listet die Abteilungen auf, für die in der Tabelle PROJECT gegenwärtig keine Einträge vorhanden sind:

     SELECT DEPTNO, DEPTNAME
        FROM DEPARTMENT X
        WHERE NOT EXISTS
                 (SELECT *
                     FROM PROJECT
                     WHERE DEPTNO = X.DEPTNO)
        ORDER BY DEPTNO

Sie können die Prädikate EXISTS und NOT EXISTS mit anderen Prädikaten verbinden, indem Sie die Operatoren AND und OR in der Klausel WHERE der übergeordneten Abfrage verwenden.

Prädikate QUANTIFIED

Ein Prädikate QUANTIFIED vergleicht einen Wert mit einer Gruppe von Werten. Wenn eine Gesamtauswahl mehr als einen Wert zurückgibt, müssen Sie die Vergleichsoperatoren in Ihrem Prädikat durch Anfügen des Suffixes ALL, ANY oder SOME modifizieren. Diese Suffixe legen fest, wie die zurückgegebene Gruppe von Werten im übergeordneten Prädikat behandelt werden soll. Der Vergleichsoperator > wird als Beispiel verwendet (die folgenden Anmerkungen gelten gleichfalls für die anderen Operatoren):

Ausdruck > ALL (Gesamtauswahl)
Das Prädikat ist wahr, wenn der Ausdruck größer als alle Einzelwerte ist, die durch die Gesamtauswahl zurückgegeben werden. Gibt die Gesamtauswahl keine Werte zurück, ist das Prädikat wahr. Das Ergebnis ist falsch, wenn die angegebene Beziehung für mindestens einen Wert falsch ist. Bitte beachten Sie, daß das Prädikat QUANTIFIED <>ALL äquivalent zum Prädikat NOT IN ist.

Das folgende Beispiel verwendet eine Unterabfrage und einen Vergleich > ALL, um den Namen und den Beruf aller Mitarbeiter zu ermitteln, die mehr als alle Führungskräfte verdienen:

     SELECT LASTNAME, JOB
        FROM EMPLOYEE
        WHERE SALARY > ALL
        (SELECT SALARY
            FROM EMPLOYEE
            WHERE JOB='MANAGER')

Ausdruck > ANY (Gesamtauswahl)
Das Prädikat ist wahr, wenn der Ausdruck größer als mindestens einer der Werte ist, die durch die Gesamtauswahl zurückgegeben werden. Gibt die Gesamtauswahl keine Werte zurück, ist das Prädikat falsch. Bitte beachten Sie, daß der Vergleichsoperator =ANY äquivalent zum Prädikat IN ist.

Ausdruck > SOME (Gesamtauswahl)
SOME ist gleichbedeutend mit ANY.

Weitere Informationen zu Prädikaten und Operatoren finden Sie im Handbuch SQL Reference.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]