English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
العمليات هي كلمات محفوظة أو أحرف، تستخدم بشكل رئيسي في جملة WHERE في جمل SQLite لتنفيذ العمليات مثل المقارنة والحسابية.
العمليات تستخدم لتعريف الشروط في جمل SQLite، وفي ربط عدة شروط في الجملة.
عمليات حسابية
عمليات مقارنة
عمليات منطقية
عمليات منطقية
افترض أن المتغير a=10، المتغير b=20، فإن:
运算符 | 描述 | 示例 |
---|---|---|
+ | الجمع - جمع القيم الموجودة على جانبي العنصر | a + b سيمنح 30 |
- | الطرح - طرح العنصر الأيسر من العنصر الأيمن | a - b سيمنح -10 |
* | الضرب - ضرب القيم الموجودة على جانبي العنصر | a * b سيمنح 200 |
/ | القسمة - تقسيم العنصر الأيسر بالعنصر الأيمن | b / a سيمنح 2 |
% | البقية - البقية التي تنتج عن تقسيم العنصر الأيسر بالعنصر الأيمن | b % a سيمنح 0 |
إليك مثال بسيط على عمليات حسابية SQLite:
sqlite> .mode line sqlite> select 10 + 20; 10 + 20 = 30 sqlite> select 10 - 20; 10 - 20 = -10 sqlite> select 10 * 20; 10 * 20 = 200 sqlite> select 10 / 5; 10 / 5 = 2 sqlite> select 12 % 5; 12 % 5 = 2
افترض أن المتغير a=10، المتغير b=20، فإن:
运算符 | 描述 | 示例 |
---|---|---|
== | تحقق من قيمة العنصرين إذا كانت متساوية، إذا كانت كذلك فإن الشرط صحيح. | (a == b) غير صحيح. |
= | تحقق من قيمة العنصرين إذا كانت متساوية، إذا كانت كذلك فإن الشرط صحيح. | (a = b) غير صحيح. |
!== | تحقق من قيمة العنصرين إذا كانت متساوية، إذا لم تكن كذلك فإن الشرط صحيح. | (a != b) صحيح. |
<> | تحقق من قيمة العنصرين إذا كانت متساوية، إذا لم تكن كذلك فإن الشرط صحيح. | (a <> b) صحيح. |
> | تحقق من قيمة العنصر الأيسر إذا كانت أكبر من قيمة العنصر الأيمن، إذا كانت كذلك فإن الشرط صحيح. | (a > b) غير صحيح. |
< | تحقق من قيمة العنصر الأيسر إذا كانت أقل من قيمة العنصر الأيمن، إذا كانت كذلك فإن الشرط صحيح. | (a < b) هو صحيح. |
>= | تحقق من قيمة اليسار إذا كانت أكبر أو تساوي قيمة اليمين، إذا كانت كذلك فإن الشروط تكون صحيحة. | (a >= b) ليس صحيحًا. |
<= | تحقق من قيمة اليسار إذا كانت أقل أو تساوي قيمة اليمين، إذا كانت كذلك فإن الشروط تكون صحيحة. | (a <= b) هو صحيح. |
!< | تحقق من قيمة اليسار إذا كانت أكبر أو تساوي قيمة اليمين، إذا كانت كذلك فإن الشروط تكون صحيحة. | (a !< b) هو خطأ. |
!> | تحقق من قيمة اليسار إذا كانت أقل أو تساوي قيمة اليمين، إذا كانت كذلك فإن الشروط تكون صحيحة. | (a !> b) هو صحيح. |
افترض أن جدول COMPANY يحتوي على السجلات التالية:
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.
في هذا السياق، نستخدم WHERE الفقرة، سيتم شرحها في جزء منفصل لاحق، ولكن يجب أن تفهم الآن أن جملة WHERE تستخدم لتعيين الشروط لجملة SELECT.
هذه الجملة SELECT تظهر جميع السجلات التي تحتوي على SALARY أكبر من 50,000.00.
sqlite> SELECT * FROM COMPANY WHERE SALARY > 50000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
هذه الجملة SELECT تظهر جميع السجلات التي تحتوي على SALARY تساوي 20,000.00.
sqlite> SELECT * FROM COMPANY WHERE SALARY = 20000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0
هذه الجملة SELECT تظهر جميع السجلات التي تحتوي على SALARY غير متساوي مع 20,000.00.
sqlite> SELECT * FROM COMPANY WHERE SALARY != 20000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.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 تظهر جميع السجلات التي تحتوي على SALARY غير متساوي مع 20,000.00.
sqlite> SELECT * FROM COMPANY WHERE SALARY <> 20000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.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 تظهر جميع السجلات التي تحتوي على SALARY تساوي أو تزيد عن 65,000.00.
sqlite> SELECT * FROM COMPANY WHERE SALARY >= 65000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
هذه هي قائمة جميع عمليات الحساب المنطقية في SQLite.
运算符 | 描述 |
---|---|
AND | معملة AND تسمح لوجود عدة شروط في جملة WHERE من جملة SQL. |
BETWEEN | معملة BETWEEN تستخدم للبحث عن القيمة في نطاق بين القيم المحددة. |
EXISTS | معملة EXISTS تستخدم للبحث عن وجود سطر في جدول معين تحت بعض الشروط. |
IN | معملة IN تستخدم لتحديد القيمة مع قائمة من القيم المحددة. |
NOT IN | محدث NOT IN هو العكس من محدث IN، يستخدم لقياس قيمة معينة مع قيمة غير موجودة في قائمة معينة. |
LIKE | يستخدم محدث LIKE لقياس قيمة معينة مع قيمة مشابهة باستخدام محدثات الدوال المعممة. |
GLOB | يستخدم محدث GLOB لقياس قيمة معينة مع قيمة مشابهة باستخدام محدثات الدوال المعممة. يختلف GLOB عن LIKE في أنه حساس لحالة الحروف. |
NOT | محدث NOT هو العكس من جميع محدثات المنطق المستخدمة. مثل NOT EXISTS، NOT BETWEEN، NOT IN، إلخ.هو محدث نفي. |
OR | محدث OR يستخدم لدمج عدة شرط في جملة WHERE من جملة SQL. |
IS NULL | يستخدم محدث NULL لقياس قيمة معينة مع NULL. |
IS | محدث IS يشبه =. |
IS NOT | محدث IS NOT يشبه !=. |
|| | يرتبطان كلمتان مختلفتان ليعطيان كلمة جديدة. |
UNIQUE | محدث UNIQUE يبحث في كل سطر في الجدول المحدد، لضمان الأصالة (بدون تكرار). |
افترض أن جدول COMPANY يحتوي على السجلات التالية:
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 وجميع السجلات التي تحتوي على راتب يزيد عن أو يساوي 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 أوجميع السجلات التي تحتوي على راتب يزيد عن أو يساوي 65000.00:
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:
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 التالية تظهر جميع السجلات التي تبدأ بـ 'Ki' في NAME، لا يوجد تحديد للواحد التالي لـ 'Ki':
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%'; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 South-Hall 45000.0
جملة SELECT التالية تظهر جميع السجلات التي تبدأ بـ 'Ki' في 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 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 بالتحقق من النص، التحقق من النص البحثي يبحث عن جميع السجلات التي تحتوي على حقل AGE مع SALARY > 65000، يستخدم جملة 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 بالتحقق من النص، التحقق من النص البحثي يبحث عن جميع السجلات التي تحتوي على حقل AGE مع SALARY > 65000، يستخدم جملة 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
位运算符作用于位,并逐位执行操作。真值表 & 和 | 如下:
p | q | p & q | p | q |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
假设如果 A = 60,且 B = 13,现在以二进制格式,它们如下所示:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
~A = 1100 0011
下表中列出了 SQLite 语言支持的位运算符。假设变量 A=60,变量 B=13,则:
运算符 | 描述 | 示例 |
---|---|---|
& | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 | (A & B) 将得到 12,即为 0000 1100 |
| | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 | (A | B) 将得到 61,即为 0011 1101 |
~ | 二进制补码运算符是一元运算符,具有"翻转"位效应,即0变成1,1变成0。 | (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。 |
<< | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2 将得到 240,即为 1111 0000 |
>> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A >> 2 将得到 15,即为 0000 1111 |
下面的示例演示了 SQLite 位运算符的用法:
sqlite> .mode line sqlite> select 60 | 13; 60 | 13 = 61 sqlite> select 60 & 13; 60 & 13 = 12 sqlite> select (~60); (~60) = -61 sqlite> select (60 << 2); (60 << 2) = 240 sqlite> select (60 >> 2); (60 >> 2) = 15