انتقل إلى محتوى الدرس

Operator Precedence AND Before OR أولوية تنفيذ AND قبل OR

تجنّب أخطاء التصفية الشائعة بفهم أن MySQL ينفذ NOT أولاً ثم AND وأخيراً OR.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

كما أن عملية الضرب تسبق الجمع في الحساب، تتبع المعاملات المنطقية في SQL تسلسلاً صارماً للأولوية: يُنفَّذ NOT أولاً، يليه AND، وأخيراً OR.

  • التجميع الضمني التلقائي: يفسّر محرك MySQL العبارة cond_a OR cond_b AND cond_c تلقائياً على أنها cond_a OR (cond_b AND cond_c).
  • خطر تسرب السجلات: نسيان أولوية AND قبل OR يؤدي غالباً إلى إرجاع صفوف غير مقصودة بمجرد تحقق طرف OR الأول دون تطبيق شرط AND عليها.

لذلك يجب دائماً مراجعة ترتيب تقييم الشروط المركّبة بدقة قبل اعتمادها في التقارير المالية أو الأمنية.

SQL
-- Watch how AND binds tighter than OR without parentheses
SELECT product_id, category, price, is_published
FROM products
WHERE category = 'Books'
   OR category = 'Courses' AND is_published = 1;