SQLite WHERE-Klausel

SQLitesWHERE-Klausel wird verwendet, um Bedingungen für das Abrufen von Daten aus einer oder mehreren Tabellen anzugeben.

Wenn die angegebene Bedingung erfüllt ist, d. h. wahr ist, werden bestimmte Werte aus der Tabelle zurückgegeben. Sie können die WHERE-Klausel verwenden, um Datensätze zu filtern und nur die benötigten Datensätze abzurufen.

Die WHERE-Klausel kann nicht nur in SELECT-Anweisungen verwendet werden, sondern auch in UPDATE- und DELETE-Anweisungen usw. Wir werden diese in den folgenden Kapiteln kennenlernen.

Syntax

Die grundlegende Syntax einer SELECT-Anweisung mit einer WHERE-Klausel in SQLite lautet wie folgt:

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition]

Beispiele

Sie können auchVergleichs- oder logische Operatorenverwenden, um Bedingungen anzugeben, wie >, <, =, LIKE, NOT usw. Angenommen, die Tabelle COMPANY enthält die folgenden Datensätze:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Das folgende Beispiel demonstriert die Verwendung von SQLite-logischen Operatoren. Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen AGE größer oder gleich 25andund SALARY größer oder gleich 65000.00 ist:

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen AGE größer oder gleich 25oderund SALARY größer oder gleich 65000.00 ist:

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen AGE nicht NULL ist. Die Ergebnisse zeigen alle Datensätze, was bedeutet, dass kein Datensatz ein AGE gleich NULL hat:

sqlite>  SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Die folgende SELECT-Anweisung listet alle Datensätze auf, deren NAME mit 'Ki' beginnt, ohne Einschränkung der Zeichen nach 'Ki':

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

Die folgende SELECT-Anweisung listet alle Datensätze auf, deren NAME mit 'Ki' beginnt, ohne Einschränkung der Zeichen nach 'Ki':

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen der Wert von AGE 25 oder 27 ist:

sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen der Wert von AGE weder 25 noch 27 ist:

sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen der Wert von AGE zwischen 25 und 27 liegt:

sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

Die folgende SELECT-Anweisung verwendet eine SQL-Unterabfrage. Die Unterabfrage findet alle Datensätze mit dem Feld AGE, bei denen SALARY > 65000. Die anschließende WHERE-Klausel wird zusammen mit dem EXISTS-Operator verwendet, um alle Datensätze aufzulisten, bei denen der AGE-Wert in der äußeren Abfrage in den von der Unterabfrage zurückgegebenen Ergebnissen vorhanden ist:

sqlite> SELECT AGE FROM COMPANY 
        WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24

Die folgende SELECT-Anweisung verwendet eine SQL-Unterabfrage. Die Unterabfrage findet alle Datensätze mit dem Feld AGE, bei denen SALARY > 65000. Die anschließende WHERE-Klausel wird zusammen mit dem >-Operator verwendet, um alle Datensätze aufzulisten, bei denen der AGE-Wert in der äußeren Abfrage größer ist als der AGE-Wert in den von der Unterabfrage zurückgegebenen Ergebnissen:

sqlite> SELECT * FROM COMPANY 
        WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
Andere Erweiterungen