عبارة WHERE

من موسوعة حسوب
< SQL
مراجعة 15:10، 14 يناير 2018 بواسطة Nourtam (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تُستخدم عبارة WHERE ضمن استعلام SELECT لتحديد الشروط التي تُعرض أو تحذف السجلات أو تُعدل قيم حقولها وفقًا لها، إذ يُمكن أن تستخدم أيضًا مع استعلامَي DELETE و UPDATE، وتعتمد اعتمادًا أساسيًا على المُعاملات المنطقية والحسابية وبعض المعاملات الأخرى في صياغة تلك الشروط.

الحصول على البيانات وفق شرطٍ بسيط

إن كان الجدول الآتي موجودًا في قاعدة البيانات:

GPA Age Name StudentID
3.68 25 Mona 1024
3.57 24 Radi 1081
2.50 25 Leen 1012
4.00 26 Sarah 1085
1.96 22 Amin 1066
2.87 23 Yusuf 1056

الاستعلام الآتي يُحدد شرط وجود قيمة السلسلة النصية 'Amin' في الحقل Name:

SELECT *
FROM students
WHERE Name=Amin;

وتكون نتيجة تنفيذه:

GPA Age Name StudentID
1.96 22 Amin 1066

حذف السجل المُحقِّق لشرط معين

يمكن حذف سجل أو أكثر إن كان مُحقِّقًا لشرط يُحدد من خلال عبارة WHERE.

إن تنفيذ الاستعلام الآتي يؤدي لحذف جميع سجلات الطلاب بمعدل أقل من 2.5 وذلك بالاعتماد على استعلام DELETE:

DELETE FROM students
WHERE GPA<2.5;

تعديل القيم في السجلات وفق شرطٍ مُحدَّد

تحدد عبارة WHERE الشرط الذي من خلاله ستُحدد السجلات التي ستُعدَّل قيمها بالاستفادة من الاستعلام UPDATE، إذ يمكن تعديل قيمة أو أكثر.

الاستعلام الآتي سيُعدِّل قيمتي العمر والمعدل للسجل الذي يكون فيه الاسم بقيمة Yusuf:

UPDATE students
SET Age = 24, GPA= 3.4
WHERE Name = 'Yusuf';

ويُلاحظ هنا أنه إن لم تُذكر عبارة WHERE في هذا الاستعلام فسيشمل التعديل كافة السجلات الموجودة في الجدول.

ربط الشروط باستخدام المعاملات المنطقية

يُستفاد من المُعاملات المنطقية (AND, OR, NOT) بربط أكثر من شرط أو نفيها ضمن عبارة WHERE.

إن تنفيذ الاستعلام الآتي يُحدد شرط وجود قيمة أكبر من 3.00 في حقل المعدل الوسطيّ وقيمة أكبر من 24 سنة في حقل العمر، ويُرتِّب النتائج بحسب المعدل الوسطيّ ترتيبًا تنازليًا وتصبح تسمية Top Students بدلًا من Name في الجدول بالاستفادة من التسمية عبر الكلمة المفتاحية AS:

SELECT Name AS Top Students, Age, GPA
FROM students
WHERE GPA>3.00 AND age>24
ORDER BY GPA DESC;

وستظهر النتائج الآتية:

GPA Age Top Students
4.00 26 Sarah
3.68 25 Mona

عرض عدد السجلات المُحقِّقَة لشرط معيّن

تمكن معرفة عدد السجلات التي تُحقِّق شرطًا معينًا بالاعتماد على الدالة count، مع تحديد الشرط المطلوب في عبارة WHERE، فلدى تنفيذ الاستعلام الآتي على الجدول السابق (باستخدام المعامل BETWEEN الذي يقوم بتحديد مجال للقيم المحتملة في الحقل Age):

SELECT count(*) AS Count
FROM students
WHERE age BETWEEN 23 AND 25;

ستظهر النتيجة:

Count
4

المعاملات المساعدة في عبارة WHERE

يُوضح الجدول الآتي بعض المعاملات المُستخدمة لدى صياغة الشرط الذي تحدده الكلمة المفتاحية WHERE:

المعامل الوصف
= حالة التساوي
<> حالة عدم التساوي
< أكبر من
> أصغر من
=< أكبر من أو يساوي
=> أصغر من أو يساوي
BETWEEN واقعٌ ضمن مجال محدَّد
LIKE مماثل لنمط محدد يلي الكلمة المفتاحية
IN لتحديد عدة قيم ممكنة للقيمة المأخوذة من العمود

ويُمكن كذلك استخدام المعاملات المنطقية الآتية للربط ما بين عدة شروط أو نفيها:

المعامل الوصف
AND لعرض السجل إذا تحققت كافة الشروط
OR لعرض السجل إذا تحقق واحدٌ من الشروط أو أكثر
NOT إذا تحقق نفي الشرط

التوافقية

SQLServer SQLite Oracle PostgreSQL MySQL
نعم نعم نعم نعم نعم

مصادر