Latest web development tutorials

SQLiteのWhere句

SQLiteののWHERE句は、条件の1つまたは複数のテーブルからデータを取得するために指定します。

あなたが与えられた条件を満たしている場合、特定の値を返すために、テーブルから、(真の)真です。 あなただけの必要なレコードを取得し、レコードをフィルタリングするWHERE句を使用することができます。

句はSELECT文でのみならず、使用されている場合、また、我々は以降の章で学ぶなる、というようにDELETE文、UPDATEで使用することができます。

文法

SQLiteのでWHERE句を指定したSELECT文の基本構文は次のとおりです。

SELECT column1の、column2の、columnN 
TABLE_NAME FROM
WHERE [条件]

また、使用することができます比較または論理演算子など>、<、=、LIKE、として指定された基準、 NOT、などを。 仮定COMPANYテーブルには、次のレコードを持っています。

IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
1ポール32カリフォルニア20000.0
2アレン25テキサス15000.0
3テディ23ノルウェー20000.0
4マーク25リッチモンド65000.0
5デイビッド27テキサス85000.0
6金22サウスホール45000.0
7ジェームス・24ヒューストン10000.0

次の例では、SQLiteの論理演算子の使用方法を示しています。 次のSELECT文は、すべてのレコード65000.00ためのAGE 25より大きいか等しいより大きいか等しい賃金示しています。

AGE> = 25 AND SALARY> = 65000会社からのsqlite> SELECT *;
IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
4マーク25リッチモンド65000.0
5デイビッド27テキサス85000.0

次のSELECT文は、すべてのレコード65000.00ためのAGE 25またはより大きいか等しいより大きいか等しい賃金示しています。

AGE> = 25 OR SALARY> = 65000会社からのsqlite> SELECT *;
IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
1ポール32カリフォルニア20000.0
2アレン25テキサス15000.0
4マーク25リッチモンド65000.0
5デイビッド27テキサス85000.0

次のSELECT文は、年齢がすべてのレコードのNULLでないリストし、すべてのレコードがあった、それはAGEのレコードがないことを意味NULLに等しいです。

AGEがNULLでない会社からのsqlite> SELECT *;
IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
1ポール32カリフォルニア20000.0
2アレン25テキサス15000.0
3テディ23ノルウェー20000.0
4マーク25リッチモンド65000.0
5デイビッド27テキサス85000.0
6金22サウスホール45000.0
7ジェームス・24ヒューストン10000.0

すべてのレコードが始まった「氣」にSELECT文リストの名前を次の文字は、「Kiが 'の後には制限はありません。

sqliteの> SELECT * FROM会社WHERE NAME LIKE 'のKi%';
IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
6金22サウスホール45000.0

すべてのレコードが始まった「氣」にSELECT文リストの名前を次の文字は、「Kiが 'の後には制限はありません。

sqliteの> SELECT * FROM会社WHERE NAMEグロブ」のKi * ';
IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
6金22サウスホール45000.0

次のSELECT文は、25または27のすべてのレコードのAGE値を示しています。

AGE IN(25、27)COMPANY SELECT * FROMのsqlite>。
IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
2アレン25テキサス15000.0
4マーク25リッチモンド65000.0
5デイビッド27テキサス85000.0

次のSELECT文は、AGEはどちらも25も全てのレコードの27である値を示します。

AGE NOT IN(25、27)COMPANY SELECT * FROMのsqlite>。
IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
1ポール32カリフォルニア20000.0
3テディ23ノルウェー20000.0
6金22サウスホール45000.0
7ジェームス・24ヒューストン10000.0

次のSELECT文は、値のAGE 25と27の間のすべてのレコードを示しています。

sqliteの> SELECT * FROM COMPANY WHERE 25と27との間のAGE;
IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
2アレン25テキサス15000.0
4マーク25リッチモンド65000.0
5デイビッド27テキサス85000.0

WHERE句は、演算子をEXISTSと組み合わせて使用​​されているの背後に次のSELECTステートメントは、65000を持つすべてのレコード用のSQLサブクエリは、サブクエリのfind SALARY> AGEフィールドを使用し、サブクエリが返すにおける外側のクエリのAGEの存在感を示していますすべてのレコードの結果:

会社からのsqlite> SELECT AGE 
        (SALARY> 65000会社からAGEをSELECT)WHEREをEXISTS。
AGE
----------
32
25
23
25
27
22
24

次のSELECT文は、サブAGEよりも大きいクエリの結果は、外部クエリのリストを返し、句と>演算子を併用するWHERE背後に、SQLのサブクエリは、サブクエリのfind SALARY> 65000を持つすべてのレコードのAGEフィールドを使用しています年齢のすべてのレコード:

会社からのsqlite> SELECT * 
        WHERE AGE>(SALARY> 65000会社からAGEを選択します)。
IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
1ポール32カリフォルニア20000.0