المعاملات Operators في SQL
المعاملات الرياضية Arithmetic Operators
تستخدم لإجراء العمليات الحسابية على البيانات العددية في الجداول، وهي:
المعامل | المهمة |
---|---|
+
|
الجمع |
-
|
الطرح |
*
|
الضرب |
/
|
القسمة |
%
|
باقي القسمة |
ويضاف إليها المعامل ^
في محرك PostgreSQL للقيام بعملية الرفع إلى قوة.
مثال
إن كان الجدول الآتي items موجودًا في قاعدة البيانات:
DiscountPercent | No | Price | ItemID |
---|---|---|---|
20 | 2 | 25 | 157 |
10 | 2 | 5 | 203 |
30 | 3 | 10 | 109 |
فيمكن حساب قيمة الشراء النهائية من خلال إجراء العملية الحسابية وجمع النتائج باستخدام الدالة التجميعية SUM() كما في الاستعلام الآتي:
SELECT SUM((Price * No) - (Price * No * DiscountPercent * 0.01)) AS FinalBill
From items;
لتظهر النتيجة الآتية:
FinalBill |
---|
70 |
ملاحظة
يمكن استخدام المعامل + للربط ما بين السلاسل النصية فمثلًا في الاستعلام الآتي:
SELECT (FirstName + LastName) AS FullName
FROM students;
يقوم معامل + بالربط ما بين العمودين FirstName و LastName وعرضهما في عمود واحد باسم FullName.
وهذا مختلف في محركات Oracle و SQLite و PostgreSQL إذ يستخدم المعامل || للربط ما بين السلاسل النصية بدلًا من +، أما في محرك MySQL فإن المعامل || يستخدم للعملية المنطقية OR.
المعاملات الثنائية Bitwise Operators
تستخدم للقيام بالعمليات الثنائية على البيانات العددية الصحيحة، إذ تُحوّل القيم الصحيحة إلى خانات ثنائية bits توافق القيم لتُجرى عليها العمليات ثم تُحول النتيجة إلى قيمة صحيحة من جديد، وهي:
المعامل | المهمة |
---|---|
&
|
AND (تصبح الخانة بقيمة 1 إن كانت الخانتان المتقابلتان بقيمة 1) |
|
|
OR (تصبح الخانة بقيمة 1 إن كانت الخانتان المتقابلتان أو إحداهما بقيمة 1) |
^
|
XOR (تصبح الخانة بقيمة 1 إن كانت خانة واحدة فقط من الخانتين المتقابلتين بقيمة 1) |
~
|
NOT (تعكس حالة الخانة من 0 إلى 1 أو بالعكس) |
ويضاف لها في محركات MySQL و SQLite و Postgresql المعاملَين:
- المعامل
<<
للإزاحة نحو اليسار بعدد الخانات المحدد بالعدد بعد المعامل. - المعامل
>>
للإزاحة نحو اليمين بعدد الخانات المحدد بالعدد بعد المعامل.
أما في محرك PostgreSQL فإن المعامل #
يقوم بالعملية الثنائية XOR للخانات.
أمثلة
لدى تنفيذ العمليات السابقة على العددين 110 (بالتمثيل الثنائي 01101110) و 96 (بالتمثيل الثنائي 01100000) يعطي النتائج الآتية:
AND
|
01101110
|
OR
|
01101110
|
XOR
|
01101110
|
NOT
|
01101110
|
معاملات المقارنة Comparison Operators
تستخدم للمقارنة ما بين قيمتين من أي نوع من أنواع البيانات باستثناء السلاسل النصية، وتكون قيمة النتيجة قيمة بوليانية إما TRUE أو FALSE، وهي:
المعامل | المهمة |
=
|
يساوي |
<
|
أصغر من |
>
|
أكبر من |
<=
|
أصغر من أو يساوي |
>=
|
أكبر من أو يساوي |
<>
|
لا يساوي |
مثال
ليكن الجدول الآتي students موجودًا في قاعدة البيانات:
RegDate | CourseID | LastName | FirstName | StudentID |
---|---|---|---|---|
07-JUL-2017 | 0206 | Najjar | Rama | 1147 |
08-NOV-2017 | 0604 | Kordi | Jenan | 1148 |
07-JUL-2017 | 0206 | Bitar | Rahaf | 1149 |
20-AUG-2017 | 0607 | Taweel | Farah | 1150 |
08-NOV-2017 | 0610 | Arab | Rami | 1151 |
24-OCT-2017 | 0803 | Akkad | Aya | 1152 |
إن تنفيذ الاستعلام الآتي:
SELECT *
FROM students
WHERE StudentID >= 1150 AND FirstName <> Rami;
سيجلب السجلات التي يكون الرقم التسلسلي فيها أكبر من أو يساوي القيمة 1150 باستثناء السجلات التي يكون فيها الاسم الأول للطالب Rami، لتظهر النتائج الآتية:
RegDate | CourseID | LastName | FirstName | StudentID |
---|---|---|---|---|
20-AUG-2017 | 0607 | Taweel | Farah | 1150 |
24-OCT-2017 | 0803 | Akkad | Aya | 1152 |
المعاملات المركبة مع الإسناد Compound Operators
تستخدم لإجراء العمليات على القيمة المخزنة بالمتحول وإعادة تخزين القيمة الجديدة بالمتحول نفسه، وهي:
المعامل | المهمة |
+=
|
الجمع والإسناد |
-=
|
الطرح والإسناد |
*=
|
الضرب والإسناد |
/=
|
القسمة والإسناد |
%=
|
باقي القسمة والإسناد |
&=
|
العملية الثنائية AND والإسناد |
|=
|
العملية الثنائية OR والإسناد |
^=
|
العملية الثنائية XOR والإسناد |
المعاملات المنطقية Logical Operators
وتشمل:
AND و OR و NOT
BETWEEN و IN
ALL و ANY و SOME
UNION و INTERSECT و EXCEPT
LIKE
EXISTS
IS NULL
ON
UNIQUE
أولوية المعاملات
عند وجود أكثر من معامل معًا في نفس العبارة تُحدِّد أولويةُ المعاملات الترتيبَ الذي تتم العمليات وفقًا له، وعند وجود أكثر من معامل ضمن نفس مستوى الأولوية تنفذ العمليات بحسب ورودها بدءًا من اليسار إلى اليمين.
أولوية المعاملات في محرك SQL Server
مستوى الأولوية | المعاملات |
---|---|
1 | المعامل الثنائي للنفي ~ |
2 | الضرب * والقسمة / وباقي القسمة % |
3 | + (لتحديد قيمة موجبة أو الجمع أو ربط السلاسل النصية)
- (لتحديد قيمة سالبة أو الطرح) المعاملات الثنائية & و | و ^ |
4 | معاملات المقارنة = و > و < و >= و <= و <> |
5 | NOT |
6 | AND |
7 | ALL, ANY, BETWEEN, IN, LIKE, OR, SOME |
8 | معامل الإسناد = |
أولوية المعاملات في محرك SQLite
مستوى الأولوية | المعاملات |
---|---|
1 | معامل الربط || |
2 | الضرب * والقسمة / وباقي القسمة % |
3 | + (الجمع)
- (الطرح) |
4 | المعاملات الثنائية & و |
معاملات الإزاحة << و >> |
5 | معاملات المقارنة = و > و < و >= و <= |
6 | معاملات المقارنة = و <>
IN, LIKE |
7 | AND |
8 | OR |
أولوية المعاملات في محرك Oracle
مستوى الأولوية | المعاملات | |
---|---|---|
1 | المعاملات الأحادية + و - (لتحديد إشارة العدد الموجب أو السالب) | |
2 | الضرب * والقسمة / | |
3 | + (الجمع)
- (الطرح) معامل ربط السلاسل النصية |
|
4 | كافة معاملات المقارنة | |
5 | NOT | |
6 | AND | |
7 | OR |
أولوية المعاملات في محرك MySQL
مستوى الأولوية | المعاملات |
---|---|
1 | المعاملات الأحادية + و - (لتحديد إشارة العدد الموجب أو السالب) |
2 | المعامل الثنائي ^ |
3 | الضرب * والقسمة / وباقي القسمة % |
4 | + (الجمع) و - (الطرح) |
5 | معاملات الإزاحة << و >> |
6 | المعامل الثنائي & |
7 | المعامل الثنائي | |
8 | معاملات المقارنة = و > و < و >= و <= و <>
المعاملات IS, LIKE, IN |
9 | BETWEEN, CASE, WHEN, THEN, ELSE |
10 | NOT |
11 | AND |
12 | XOR |
13 | OR |
14 | معامل الإسناد = |
أولوية المعاملات في محرك Postgresql
مستوى الأولوية | المعاملات |
---|---|
1 | المعامل الأحادي - (لتحديد إشارة العدد السالب) |
2 | المعامل ^ للرفع إلى قوة |
3 | الضرب * والقسمة / وباقي القسمة % |
4 | + (الجمع) و - (الطرح) |
5 | IS |
6 | IN |
7 | BETWEEN |
8 | LIKE |
9 | معاملات المقارنة |
10 | = معامل الإسناد والتساوي |
11 | NOT |
12 | AND |
13 | OR |
مثال
في عبارة WHERE الآتية:
WHERE salary-tax*0.5 BETWEEN 500 AND 550
ستُنفذ عملية الضرب *
ثم الطرح -
ثم تحديد المجال للقيمة الناتجة عبر المعامل BETWEEN
.
التوافقية
ذُكرت تباعًا في فقراتها المناسبة.