SQLite Where句

5273 ワード

SQLite Where句
SQLiteのWHERE句は、1つまたは複数のテーブルからデータを取得する条件を指定するために使用されます.
与えられた条件、すなわち真(true)が満たされた場合、テーブルから特定の値が返されます.WHERE句を使用してレコードをフィルタリングし、必要なレコードのみを取得できます.
WHERE句はSELECT文だけでなくUPDATE文、DELETE文などでも使用できます.
構文
SQLiteのWHERE句付きSELECT文の基本文法は以下の通りである.
SELECT column1, column2, columnN 
FROM table_name
WHERE [condition]

≪インスタンス|Instance|emdw≫
比較演算子または論理演算子を使用して、>、
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

次の例では、SQLite論理演算子の使用方法を示します.次のSELECT文は、AGEが25以上、給与が650000.00以上のすべてのレコードをリストします.
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

次のSELECT文は、AGEが25以上、または賃金が65000,000,000,000以上のすべてのレコードをリストします.
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

次のSELECT文は、AGEがNULLでないすべてのレコードをリストし、結果としてすべてのレコードを表示します.これは、AGEがNULLに等しいレコードが1つもないことを意味します.
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

次のSELECT文には、NAMEが「Ki」で始まるすべてのレコードがリストされています.「Ki」以降の文字は制限されません.
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

次のSELECT文には、NAMEが「Ki」で始まるすべてのレコードがリストされています.「Ki」以降の文字は制限されません.
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

次のSELECT文は、AGEの値が25または27のすべてのレコードをリストします.
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

次のSELECT文は、AGEの値が25でも27でもないすべてのレコードをリストしています.
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

次のSELECT文は、AGEの値が25~27のすべてのレコードをリストします.
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

次のSELECT文はSQLサブクエリを使用し、サブクエリはSALARY>65000のAGEフィールドを持つすべてのレコードを検索し、後のWHERE句はEXISTS演算子とともに使用し、サブクエリからのAGEがサブクエリから返された結果に存在するすべてのレコードをリストします.
sqlite> SELECT AGE FROM COMPANY 
        WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24

次のSELECT文はSQLサブクエリを使用し、サブクエリはSALARY>65000のAGEフィールドを持つすべてのレコードを検索し、後のWHEREサブステートメントは>演算子とともに使用し、サブクエリが返す結果の年齢よりも外部クエリのAGEが大きいすべてのレコードをリストします.
sqlite> SELECT * FROM COMPANY 
        WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0