Zur Auswahl von spezifischen Zeilen aus einer Tabelle geben Sie nach der Anweisung SELECT mit einer Klausel WHERE die Bedingung bzw. die Bedingungen an, die eine Zeile erfüllen muß, um ausgewählt zu werden. Ein Kriterium für die Auswahl von Zeilen aus einer Tabelle wird als Suchbedingung bezeichnet.
Eine Suchbedingung besteht aus einem oder mehreren
Prädikaten. Ein Prädikat gibt eine Bedingung an, die für
eine Zeile wahr oder falsch (bzw. unbekannt) ist. Zur Angabe von
Bedingungen in der Klausel WHERE können Sie die folgenden Prädikate BASIC
verwenden:
Prädikat | Funktion |
---|---|
x = y | x ist gleich y |
x <> y | x ist ungleich y |
x < y | x ist kleiner als y |
x > y | x ist größer als y |
x <= y | x ist kleiner-gleich y |
x >= y | x ist größer-gleich y |
IS NULL/IS NOT NULL | prüft auf Nullwerte |
Beim Erstellen von Suchbedingungen müssen Sie darauf achten, daß Rechenoperationen nur für numerische Datentypen und Vergleiche nur zwischen kompatiblen Datentypen durchgeführt werden. Beispielsweise können Sie Zeichenfolgen nicht mit Zahlen vergleichen.
Wenn Sie Zeilen anhand eines Zeichenwerts auswählen, muß dieser Wert in einfache Anführungszeichen gesetzt werden (z. B. WHERE JOB = 'Clerk'), und jeder Zeichenwert muß exakt so eingegeben werden, wie er in der Datenbank vorhanden ist. Besteht der in der Datenbank enthaltene Datenwert aus Kleinbuchstaben, werden keine Zeilen ausgewählt, wenn Sie ihn in Großbuchstaben eingeben. Bei der Auswahl von Zeilen anhand eines numerischen Werts darf dieser Wert nicht in Anführungszeichen gesetzt werden (Beispiel: WHERE DEPT = 20).
Im folgenden Beispiel werden nur die Zeilen für die Abteilung 20 aus der Tabelle STAFF ausgewählt:
SELECT DEPT, NAME, JOB FROM STAFF WHERE DEPT = 20
Diese Anweisung erzeugt das folgende Ergebnis:
DEPT NAME JOB ------ --------- ----- 20 Sanders Mgr 20 Pernal Sales 20 James Clerk 20 Sneider Clerk
Im nächsten Beispiel wird der Operator AND eingesetzt, um mehr als eine Bedingung anzugeben. Sie können beliebig viele Bedingungen angeben. Das folgende Beispiel wählt die Sachbearbeiter ('Clerk') der Abteilung 20 aus der Tabelle STAFF aus:
SELECT DEPT, NAME, JOB FROM STAFF WHERE JOB = 'Clerk' AND DEPT = 20
Diese Anweisung erzeugt das folgende Ergebnis:
DEPT NAME JOB ------ --------- ----- 20 James Clerk 20 Sneider Clerk
Ein Nullwert tritt auf, wenn kein Wert eingegeben wird und die Spalte keinen Standardwert unterstützt. Er kann außerdem auftreten, wenn der Wert ausdrücklich auf Null gesetzt ist. Ein Nullwert kann nur in Spalten auftreten, die für die Unterstützung von Nullwerten definiert sind. Das Definieren und Unterstützen von Nullwerten in Tabellen wird im Abschnitt Erstellen von Tabellen erörtert.
Mit den Prädikaten IS NULL und IS NOT NULL können Sie überprüfen, ob ein Nullwert vorhanden ist.
Die folgende Anweisung listet die Mitarbeiter auf, deren Provision (Spalte COMM) nicht bekannt ist:
SELECT ID, NAME FROM STAFF WHERE COMM IS NULL
Diese Anweisung erzeugt das folgende Ergebnis:
ID NAME ------ --------- 10 Sanders 30 Marenghi 50 Hanes 100 Plotz 140 Fraye 160 Molinare 210 Lu 240 Daniels 260 Jones 270 Lea 290 Quill
Ein Wert 0 (Null) ist nicht dasselbe wie ein Nullwert. Die folgende Anweisung wählt alle Mitarbeiter aus, deren Provision die Höhe 0 (Null) aufweist:
SELECT ID, NAME FROM STAFF WHERE COMM = 0
Da die Beispieltabelle in der Spalte COMM keine Werte 0 enthält, ist die zurückgegebene Ergebnismenge leer.
Im nächsten Beispiel werden alle Zeilen in der Tabelle STAFF ausgewählt, deren Wert in der Spalte YEARS größer als 9 ist:
SELECT NAME, SALARY, YEARS FROM STAFF WHERE YEARS > 9
Diese Anweisung erzeugt das folgende Ergebnis:
NAME SALARY YEARS --------- --------- ------ Hanes 20659.80 10 Lu 20010.00 10 Jones 21234.00 12 Quill 19818.00 10 Graham 21000.00 13