الأربعاء، 28 نوفمبر 2018

الدرس الواحد والعشرون عبارة WHERE

تعتبر عبارة WHERE من أهم عناصر برمجة قواعد البيانات. الغرض الأساسي من هذه العبارة هي تصفية ( فلترة ) البيانات التي تعيدها عبارة SELECT. يمكن استخدام عبارة WHERE بشكل منفرد او استخدامها مع عبارات أخرى مثل عبارة IN او عبارة NOT IN او مع عوامل تصفية مثل (= ، <،>،<= ، >= ) والعوامل المنطقية مثل ( AND , OR) وعوامل أخرى مثل (BETWEEN , LIKE , NOT LIKE) سوف نشرح لاحقا هذه الاستخدامات بشكل مفصل.

كذلك تستخدم عبارة WHERE في عمليات معالجة البيانات DML مثلا تستخدم مع عبارة UPDATE لحصر الاسطر التي نيرد تطبيق التحديثات عليها و تستخدم مع عبارة DELETE لحصر الاسطر التي نريد حذفها من قاعدة البيانات. 

الصيغة المبسطة لأستخدام عبارة WHERE هي كما يلي

SELECT * FROM TABLE1 WHERE CONDITIONS 

الشروط او conditions هي التي سوف تستخدمها عبارة WHERE في عملية تصفية اسطر البيانات . فذا كانت الاسطر تتوافق مع الشروط سوف يقوم نظام قواعد البيانات بتضمين هذه الاسطر ضمن مجموعة الاسطر التي تعيدها عبارة SELECT واذا كانت الاسطر غير متوافقة مع الشروط سوف يتم اهمال هذه الاسطر. 

في المثال التالي سوف نستخدم عبارة WHERE للحصول على كل الطلبيات الخاصة بزبون معين (معرف الزبون = 29825)

SELECT * FROM [AdventureWorks2014].[Sales].[SalesOrderHeader] WHERE [CustomerID]='29825'


كما نشاهد في الصورة السابقة قام  نظام قواعد البيانات بتضمين فقط الاسطر التي تطابق الشرط و الشرط في هذه الحالة هو ان قيمة حقل معرف الزبون تساوي 29825  ([CustomerID]='29825'). اي بمعني اخر يمكن ترجمة الاستعلام البرمجي السابق بلعبارة التالية
نريد كل الاسطر التي تعود للزبون رقم 29825

في المثال التالي سوف نستخدم عامل اخر في عملية تصفية البيانات وهو اكبر >


SELECT * FROM [AdventureWorks2014].[Sales].[SalesOrderHeader] WHERE [TotalDue] >150000


كما نشاهد في الصورة السابقة قام  نظام قواعد البيانات بتضمين فقط الاسطر التي تطابق الشرط و الشرط في هذه الحالة هو ان قيمة المبلغ الاجمالي اكبر من 150000 الف
اي بمعني اخر يمكن ترجمة الاستعلام البرمجي السابق بلعبارة التالية
نريد كل الاسطر التي يكون المبلغ الاجمالي اكبر من 150000

ملاحظة: بما اننا استخدمنا معامل اكبر فقط بدون مساواة فأذا كان هناك سطر يمتلك قيمة مبلغ اجمالي تساوي بلضبط 150000 سوف لا يتم تضمين هذا السطر لانه لا يطابق الشرط.

في المثال التالي سوف نستخدم عامل اخر في عملية تصفية البيانات وهو اكبر او يساوي  >=

SELECT * FROM [AdventureWorks2014].[Sales].[SalesOrderHeader] WHERE [TotalDue] >=150000
سوف يقوم نظام قواعد البيانات بتضمين فقط الاسطر التي تطابق الشرط و الشرط في هذه الحالة هو ان قيمة المبلغ الاجمالي اكبر او تساوي  150000 الف
اي بمعني اخر يمكن ترجمة الاستعلام البرمجي السابق بلعبارة التالية
نريد كل الاسطر التي يكون المبلغ الاجمالي اكبر او تساوي 150000

ملاحظة: بما اننا استخدمنا معامل اكبر مع المساواة  فأذا كان هناك سطر يمتلك قيمة مبلغ اجمالي تساوي بلضبط 150000 سوف يتم تضمين هذا السطر لانه  يطابق الشرط.

في المثال التالي سوف نستخدم عاملين عملية تصفية البيانات وهو اصغر < و اصغر أو يساوي <=


SELECT * FROM [AdventureWorks2014].[Sales].[SalesOrderHeader] WHERE [TotalDue] <10

اي بمعني اخر يمكن ترجمة الاستعلام البرمجي السابق بلعبارة التالية
نريد كل الاسطر التي يكون المبلغ الاجمالي أصغر من 10

SELECT * FROM [AdventureWorks2014].[Sales].[SalesOrderHeader] WHERE [TotalDue] <=10

اي بمعني اخر يمكن ترجمة الاستعلام البرمجي السابق بلعبارة التالية
نريد كل الاسطر التي يكون المبلغ الاجمالي أصغر أو يساوي 10

في المثال الاخير سوف نستخدم عامل عدم المساواة < > 

 SELECT * FROM [AdventureWorks2014].[Sales].[SalesOrderHeader] WHERE OnlineOrderFlag <>0

سوف يقوم نظام قواعد البيانات بتضمين فقط الاسطر التي تطابق الشرط و الشرط في هذه الحالة هو ان قيمة حقل OnlineOrderFlag لا تساوي صفر. طبعا هذا حقل خاص يستخدم للتمييز بين الطلبات التي يتم استلامها من الزبائن اثناء زيارتهم للمتجر (OnlineOrderFlag =0) او الطلبات التي يتم استلامها من خلال الانترنت (OnlineOrderFlag =1)

اي بمعني اخر يمكن ترجمة الاستعلام البرمجي السابق بلعبارة التالية
نريد كل الطلبات التي تم أستلامها من خلال الانترنت

ليست هناك تعليقات:

إرسال تعليق