مرشحات WHERE: عوامل المقارنة والمنطق
رشّح الصفوف باستخدام = و<> و وAND وOR وNOT، وافهم أسبقية العوامل والأقواس.
مرشحات WHERE: عوامل المقارنة والمنطق درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
دور WHERE
تصفّي WHERE الصفوف قبل التجميع أو التجميع الحسابي. ولا تُعاد إلا الصفوف التي تكون قيمة المسند فيها TRUE.
عوامل المقارنة
تعمل المقارنات القياسية مع جميع الأنواع القابلة للمقارنة:
SELECT * FROM products WHERE price > 100;
SELECT * FROM products WHERE price >= 100;
SELECT * FROM products WHERE price < 50;
SELECT * FROM products WHERE price <= 50;
SELECT * FROM products WHERE category = 'books';
SELECT * FROM products WHERE category <> 'books'; -- != also worksAND وOR وNOT
ادمج المسندات باستخدام العوامل المنطقية:
-- Both true:
SELECT * FROM products
WHERE category = 'books' AND price < 50;
-- Either true:
SELECT * FROM products
WHERE category = 'books' OR category = 'music';
-- Negation:
SELECT * FROM products
WHERE NOT (category = 'books');أولوية العوامل
الأولوية (من الأعلى إلى الأدنى): NOT ← AND ← OR. ضع المسندات المعقدة دائمًا بين قوسين لتوضيحها:
-- Without parens — almost certainly wrong:
SELECT * FROM orders
WHERE status = 'open' OR status = 'pending' AND total > 100;
-- means: status = open OR (status = pending AND total > 100)
-- With parens — clearer:
SELECT * FROM orders
WHERE (status = 'open' OR status = 'pending') AND total > 100;IN وNOT IN
اختصار لعدة عوامل OR:
SELECT * FROM users
WHERE country IN ('US', 'CA', 'GB', 'AU');
-- Equivalent to:
SELECT * FROM users
WHERE country = 'US' OR country = 'CA' OR country = 'GB' OR country = 'AU';BETWEEN
فحص نطاق شامل للحدود:
SELECT * FROM orders
WHERE total BETWEEN 100 AND 500;
-- Equivalent to: total >= 100 AND total <= 500عوامل التصفية الآمنة مع NULL
تُنتج المقارنات مع NULL القيمة NULL (وليس FALSE)، وتحذف WHERE الصفوف التي تحتوي على NULL. استخدم IS NULL / IS NOT NULL صراحةً عند الحاجة:
-- Returns users where deleted_at is unknown:
SELECT * FROM users WHERE deleted_at IS NULL;
-- IS DISTINCT FROM treats NULL as a comparable value:
SELECT * FROM events WHERE status IS DISTINCT FROM 'closed';الأعمدة المنطقية
لا يحتاج عمود BOOLEAN إلى مقارنة:
SELECT * FROM tasks WHERE done; -- = TRUE
SELECT * FROM tasks WHERE NOT done; -- = FALSE or NULL
SELECT * FROM tasks WHERE done IS NOT TRUE; -- FALSE or NULL onlyمطابقة الأنماط باستخدام LIKE
يطابق % أي سلسلة نصية، بينما يطابق _ محرفًا واحدًا بالضبط:
SELECT * FROM users WHERE email LIKE '%@gmail.com';
SELECT * FROM products WHERE sku LIKE 'A_-___';
-- Case-insensitive in PostgreSQL:
SELECT * FROM users WHERE email ILIKE '%@GMAIL.com';المرشحات والأداء
في عبارات WHERE تظهر فائدة الفهارس الحقيقية. فالمرشحات التي تستخدم المساواة (=) والنطاق (< وBETWEEN) على الأعمدة المفهرسة تحوّل عمليات فحص الجدول الكامل إلى عمليات بحث تستغرق أجزاء من الثانية.
ترتيب التقييم
منطقيًا، تقيّم قاعدة البيانات الاستعلام بهذا الترتيب: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. لذلك يرى WHERE الصفوف الخام، ولا تكون الأسماء المستعارة للأعمدة من SELECT معرّفة بعد.
-- This fails — alias not visible in WHERE:
SELECT total * 0.9 AS discounted
FROM orders WHERE discounted > 100; -- ERROR
-- Repeat the expression instead, or wrap in a subquery.مراجعة
تُعد WHERE أداتكم الأساسية لاختيار الصفوف.
- استخدموا عوامل المقارنة والعوامل المنطقية القياسية
- ضعوا AND وOR المختلطين بين قوسين
- استخدموا IS NULL — ولا تستخدموا = NULL مطلقًا
- يكون WHERE سريعًا عند استخدامه مع الأعمدة المفهرسة
تحقق سريع
أي شرط يُبقي فقط على الصفوف التي يكون فيها العمر أكبر من أو يساوي 18، وتكون الدولة US؟
الأسئلة الشائعة
هل درس «مرشحات WHERE: عوامل المقارنة والمنطق» مجاني؟
نعم — نص درس «مرشحات WHERE: عوامل المقارنة والمنطق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «مرشحات WHERE: عوامل المقارنة والمنطق»؟
رشّح الصفوف باستخدام = و<> و وAND وOR وNOT، وافهم أسبقية العوامل والأقواس. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «مرشحات WHERE: عوامل المقارنة والمنطق»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- اختيار الأعمدة والتعبيرات
- مرشحات WHERE: عوامل المقارنة والمنطق
- ترتيب عمود واحد أو عدة أعمدة باستخدام ORDER BY
- أساسيات LIMIT وOFFSET وتقسيم الصفحات