أسبقية AND وOR ووضع الأقواس
أكثر أخطاء التصفية شيوعًا التي يضعها مسؤولو المقابلات في أسئلتهم
أسبقية AND وOR ووضع الأقواس درس مجاني في SQL Interview Prep على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.
المشكلة التي يضعها المحاورون
تبدو أكثر مشكلات التصفية شيوعًا في المقابلات صحيحةً للوهلة الأولى. يُطلب منك: العثور على الطلبات من العميل 5 التي تكون إما قيد الانتظار أو مشحونة. فيكتب أحد المرشحين عبارة WHERE تخلط بين AND وOR، فتُعاد له صفوف إضافية.
لماذا؟ لأن AND تتمتع بأسبقية أعلى من OR. فتقيّم قاعدة البيانات جميع أزواج AND أولًا، ثم عوامل OR. يجعل هذا الدرس القاعدة تلقائية لديك حتى لا تخسر نقاطًا بسببها مرة أخرى.
أسبقية العوامل في جملة واحدة
في كل لهجات SQL، ترتبط العوامل المنطقية بهذا الترتيب: NOT أولًا، ثم AND، ثم OR أخيرًا.
- يتمتع
NOTبأعلى أسبقية - يأتي
ANDفي المنتصف - يتمتع
ORبأدنى أسبقية
لذلك تُقرأ A OR B AND C على أنها A OR (B AND C)، وليس (A OR B) AND C مطلقًا. ويعتمد المحاور على نسيانك لهذه القاعدة.
الاستعلام الخاطئ
إليك الاستعلام الذي يكتبه المرشح للبحث عن العميل 5، وحالته قيد الانتظار أو مشحونة. يبدو صحيحًا لكنه خاطئ.
لأن AND تتمتع بأسبقية أعلى، تقرأ SQL الاستعلام على النحو التالي: (customer_id = 5 AND status = 'pending') OR status = 'shipped'. لا يحتوي الفرع الثاني على أي تصفية للعميل، ولذلك يعيد الطلبات المشحونة من جميع العملاء.
SELECT *
FROM orders
WHERE customer_id = 5
AND status = 'pending'
OR status = 'shipped';الحل: الأقواس
ضع فرع OR بين قوسين حتى ينطبق مرشح العميل على كلتا الحالتين. تتجاوز الأقواس الأسبقية وتجعل القصد واضحًا.
تقيّم SQL الآن مجموعة OR أولًا، ثم تطبق customer_id = 5 على المجموعة بأكملها. يضيف المراجعون ذوو الخبرة الأقواس حتى عندما تؤدي الأسبقية بالفعل إلى النتيجة الصحيحة، وذلك لمجرد تحسين سهولة القراءة.
SELECT *
FROM orders
WHERE customer_id = 5
AND (status = 'pending' OR status = 'shipped');تتبّع جدول الحقيقة
لنفترض وجود طلب مشحون من العميل 9. تتبّع النسخة الخاطئة:
- تكون
customer_id = 5false - تكون
status = 'pending'false - تكون
false AND falsefalse - تكون
false OR (status = 'shipped' is true)true
يُعاد الصف رغم أنه لا يخص العميل 5. إن تتبّع صف ملموس واحد بصوت مسموع هو بالضبط ما يريد المحاورون رؤيته.
تتمتع NOT بأعلى أسبقية
تنطبق NOT على الشرط الذي يليها مباشرةً فقط. لذلك تعني NOT status = 'open' AND priority = 'high' التعبير (NOT status = 'open') AND priority = 'high'.
إذا كنت تقصد نفي العبارة بأكملها، فيجب وضعها بين قوسين: NOT (status = 'open' AND priority = 'high'). ووفقًا لقانون دي مورغان، يساوي ذلك status <> 'open' OR priority <> 'high'.
SELECT *
FROM tickets
WHERE NOT (status = 'open' AND priority = 'high');مثال بثلاثة شروط
ابحث عن المنتجات التي تكون (إلكترونيات أو أجهزة منزلية) ومتوفرة في المخزون. من دون الأقواس، سيتصل عامل التصفية الخاص بالتوفر في المخزون بالأجهزة المنزلية فقط.
يُقرأ الاستعلام المجمّع أدناه بوضوح: اختر إحدى الفئتين، ثم اشترط توفرها في المخزون. القاعدة الذهنية: عندما يجمع الاستعلام بين AND وOR، تحتاج تقريبًا دائمًا إلى وضع الأقواس حول مجموعة OR.
SELECT *
FROM products
WHERE (category = 'electronics' OR category = 'appliances')
AND in_stock = true;IN كبديل أوضح
تكون السلسلة الطويلة من OR على العمود نفسه عرضة للأخطاء ومطوّلة بلا داعٍ. استبدلها بـ IN، فهو واضح ولا يحتاج إلى أقواس.
الاستعلام أدناه مكافئ تمامًا للاستعلام السابق، لكنه أصعب في كسره. يحب المحاورون رؤية إعادة الهيكلة هذه لأنها تُظهر أنك تفهم الصحة وقابلية القراءة معًا.
SELECT *
FROM products
WHERE category IN ('electronics', 'appliances')
AND in_stock = true;أسبقية العمليات في عوامل التصفية المحسوبة
تنطبق الأسبقية أيضًا عند الجمع بين العمليات الحسابية والمنطقية. في price * 1.2 > 100 OR discount = 0 AND active = true، تُحسم المقارنة والعملية الحسابية أولًا، ثم AND، ثم OR.
لذلك يُقرأ التعبير هكذا: (price * 1.2 > 100) OR ((discount = 0) AND (active = true)). عند الشك، لا تحاول حفظ الجدول تحت الضغط، بل ضع الأقواس حول كل مجموعة.
كيفية الإجابة عنه مباشرةً
عندما يعرض عليك المحاور عامل تصفية يجمع بين AND وOR ويسألك ما الذي يعيده هذا الاستعلام؟، نفّذ ثلاثة أمور:
- اذكر قاعدة الأسبقية: يأتي
ANDقبلOR - أعد وضع الأقواس حول الاستعلام بصوت عالٍ لكشف تجميعه الحقيقي
- تتبّع صفًا واحدًا يكشف الخطأ
ثم قدّم النسخة المصححة الموضوعة بين أقواس. يعكس هذا التسلسل صرامة بمستوى مهندس خبير.
عادة وقائية
العادة المهنية هي: ضع الأقواس حول كل مجموعة OR دائمًا. لا يتطلب ذلك سوى حرفين، ويزيل فئة كاملة من الأخطاء وملاحظات المراجعة.
يجب ألا يضطر مراجعو الشيفرة إلى تقييم الأسبقية ذهنيًا للتأكد من صحة عامل التصفية. اجعل التجميع واضحًا. هذه إحدى الحالات القليلة التي تُعد فيها الصياغة الزائدة أسلوبًا جيدًا بإجماع الجميع.
SELECT order_id, status
FROM orders
WHERE customer_id = 5
AND (status = 'pending' OR status = 'shipped');تحقق سريع
فكّر في قاعدة الأسبقية قبل الإجابة.
خلاصة
أهم النقاط:
- الأسبقية المنطقية هي NOT، ثم AND، ثم OR
- تحتاج عوامل التصفية التي تجمع بين
ANDوORتقريبًا دائمًا إلى أقواس حول مجموعةOR - يؤدي فقدان قوس إلى توسيع النتائج بصمت، وغالبًا إلى إسقاط عامل تصفية بالكامل
- استبدل السلاسل الطويلة من
ORعلى عمود واحد بـIN - للإجابة مباشرةً: اذكر القاعدة، وأعد وضع الأقواس، وتتبع صفًا واحدًا، ثم أصلح الاستعلام
ضع الأقواس دائمًا حول مجموعات OR، حتى عندما تكون الأسبقية متوافقة معها بالفعل.
الأسئلة الشائعة
هل درس «أسبقية AND وOR ووضع الأقواس» مجاني؟
نعم — نص درس «أسبقية AND وOR ووضع الأقواس» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.
ماذا ستتعلم في «أسبقية AND وOR ووضع الأقواس»؟
أكثر أخطاء التصفية شيوعًا التي يضعها مسؤولو المقابلات في أسئلتهم تتمرن على SQL Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Interview Prep؟
لا تُشترط خبرة سابقة. SQL Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «أسبقية AND وOR ووضع الأقواس»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Interview Prep هذا؟
نعم. كل درس في SQL Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أسبقية AND وOR ووضع الأقواس
- BETWEEN وIN والحدود الشاملة
- LIKE والرموز البديلة وهروب المحارف
- التصفية حسب القيم المحسوبة