WHERE
تصفية الصفوف بشرط WHERE
WHERE يحدّد أي صفوف يشملها الاستعلام قبل أي تجميع، عبر شرط منطقي يُقيَّم لكل صف على حدة.
WHERE يصفّي الصفوف الخام قبل تنفيذ أي تجميع (GROUP BY) — أي أنه يعمل على مستوى الصف الواحد لا المجموعة. يدعم عوامل المقارنة العادية، وربط شروط متعددة بـ AND وOR وNOT، ونطاقات بـ BETWEEN، وقوائم بـ IN، وتطابق نصي جزئي بـ LIKE.
يختلف عن HAVING الذي يصفّي بعد التجميع على مستوى المجموعات لا الصفوف الفردية — القاعدة العملية: WHERE قبل GROUP BY، وHAVING بعده.
الصياغة
SELECT columns FROM table WHERE condition;
📄 مثال
SELECT name, price FROM products WHERE price BETWEEN 50 AND 200 AND category = 'electronics';
أهم النقاط
| النقطة | الوظيفة |
|---|---|
| = <> > < >= <= | عوامل المقارنة الأساسية بين عمود وقيمة |
| AND / OR / NOT | دمج أو نفي عدّة شروط في جملة واحدة |
| BETWEEN ... AND | نطاق قيم شامل الطرفين |
| IN (...) | تطابق مع أي قيمة من قائمة محدّدة |
| IS NULL / IS NOT NULL | فحص القيم الفارغة — لا يعمل معها عامل = |
💡 نصائح عملية
- استخدم أقواسًا صريحة عند خلط AND مع OR — الأولوية الافتراضية لـ AND قد تُنتج نتيجة غير متوقّعة
- IN مع قائمة قصيرة أوضح وأحيانًا أسرع من سلسلة طويلة من OR
⚠️ أخطاء شائعة
- استخدام column = NULL بدل IS NULL — NULL لا يساوي أي شيء حتى نفسه فتُرجع النتيجة فارغة دائمًا
- وضع منطق يحتاج نتيجة مجموعة (مثل COUNT(*) > 5) في WHERE بدل HAVING
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار SQL الكامل بالعربي.