📊 فهم مشغل ALL في SQL: دليل شامل للمبتدئين

مرحباً بك في درس جديد من أكاديمية كودكس! اليوم سنتعرف على أحد المشغلات المهمة في لغة SQL وهو مشغل ALL، الذي يساعدنا في إجراء مقارنات مع جميع القيم في مجموعة نتائج فرعية.


🔍 ما هو مشغل ALL؟

مشغل ALL هو مشغل مقارنة في SQL يُستخدم لمقارنة قيمة مع كل القيم في مجموعة نتائج استعلام فرعي. يعيد القيمة "صحيح" فقط إذا كانت المقارنة صحيحة لجميع القيم في المجموعة.

-- بناء الجملة الأساسي
SELECT column_name
FROM table_name
WHERE column_name operator ALL (subquery);

💡 استخدام ALL مع WHERE

لنفترض أن لدينا جدول "الموظفين" ونريد معرفة الموظفين الذين رواتبهم أكبر من جميع رواتب موظفي قسم "المبيعات":

SELECT name, salary
FROM employees
WHERE salary > ALL (
    SELECT salary
    FROM employees
    WHERE department = 'Sales'
);

-- هذا الاستعلام سيعيد الموظفين الذين رواتبهم أعلى من أعلى راتب في قسم المبيعات


📋 أمثلة عملية على ALL

مثال 1: البحث عن المنتجات التي أسعارها أقل من جميع منتجات فئة "Premium"

SELECT product_name, price
FROM products
WHERE price < ALL (
    SELECT price
    FROM products
    WHERE category = 'Premium'
);

مثال 2: العثور على الطلاب الذين معدلاتهم أعلى من جميع طلاب الصف العاشر

SELECT student_name, average
FROM students
WHERE average > ALL (
    SELECT average
    FROM students
    WHERE grade = 10
);

⚠️ ملاحظات هامة عن استخدام ALL

  1. الاستعلام الفرعي يجب أن يعيد عموداً واحداً فقط
  2. المقارنة يجب أن تكون متوافقة مع نوع البيانات
  3. النتيجة تكون TRUE فقط إذا نجحت المقارنة مع كل القيم
  4. إذا كان الاستعلام الفرعي فارغاً، تكون النتيجة TRUE
-- مثال على مقارنة مع مجموعة فارغة
SELECT name
FROM employees
WHERE salary > ALL (SELECT salary FROM employees WHERE department = 'NonExistent');
-- سيعيد جميع الموظفين لأن الاستعلام الفرعي فارغ

🎯 متى نستخدم ALL؟

  • عند الحاجة لمقارنة قيمة مع مجموعة كاملة من القيم
  • عندما نريد التأكد من أن الشرط ينطبق على كل عناصر المجموعة
  • في تقارير التحليل والمقارنات الشاملة

📝 خلاصة الدرس

تعلمنا اليوم أن مشغل ALL:

  • يُستخدم لمقارنة قيمة مع جميع قيم استعلام فرعي
  • يعيد TRUE فقط إذا نجحت المقارنة مع كل القيم
  • مفيد في إجراء مقارنات شاملة ومتطلبات صارمة
  • يجب أن يعيد الاستعلام الفرعي عموداً واحداً فقط