المعاملات Operators في SQL

من موسوعة حسوب
< 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

01100000

-------------

01100000

OR 01101110

01100000

-------------

01101110

XOR 01101110

01100000

-------------

00001110

NOT 01101110

-------------

10010001

معاملات المقارنة 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.

التوافقية

ذُكرت تباعًا في فقراتها المناسبة.

مصادر