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