English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite WHEREالجملة تستخدم لتحديد الشروط عند الحصول على بيانات من إحدى أو أكثر من الجداول.
إذا كانت الشروط المحددة صحيحة، فهي صحيحة، وسيتم العودة إلى القيم المحددة من الجدول. ستحتاج إلى استخدام WHERE لفرز السجلات واستخراج السجلات الضرورية فقط.
WHERE يمكن استخدامها ليس فقط في SELECT، ولكن أيضًا في UPDATE، DELETE وما إلى ذلك، وسيتم شرح ذلك في الفصول اللاحقة.
هذه هي الجملة الأساسية لـ SELECT SQLite التي تحتوي على WHERE.
SELECT column1, column2, columnN FROM table_name WHERE [condition]
يمكنك استخدامعناصر حسابية منطقية أو منطقية (مثلاً >، <، =، LIKE، NOT وما إلى ذلك) لتعريف الشروط. انظر إلى TABLE (الجدول) COMPANY التالية مع السجلات التالية-
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 بول 32 كاليفورنيا 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 و SALARY (الراتب) أكبر أو يساوي 65000.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 أو جميع السجلات التي تحتوي على SALARY (الراتب) أكبر أو يساوي 65000.00.
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 بول 32 كاليفورنيا 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.
sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 بول 32 كاليفورنيا 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'، بغض النظر عن أي سجلات أخرى.
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%'; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 South-Hall 45000.0
في SELECT التالية، تم قائمة جميع السجلات التي تبدأ بـ NAME (الاسم) بـ '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 بول 32 كاليفورنيا 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大于子查询返回结果中的AGE的所有记录。
sqlite> SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000); ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 بول 32 كاليفورنيا 20000.0