30- كورس شرح قواعد البيانات MYSQL – MySQL ANY, ALL

شرح مفصل عن MySQL ANY وALL مع أمثلة متعددة

في MySQL، تعتبر الكلمات المفتاحية ANY وALL أدوات قوية تستخدم في الاستعلامات الفرعية (Subqueries) لتوفير مرونة أكبر في استخراج البيانات. تساعد هذه الأدوات في تنفيذ العمليات المنطقية على مجموعة من القيم، مما يسمح للمستخدمين بإجراء مقارنات أكثر تعقيدًا.

1. استخدام الكلمة المفتاحية ANY

تستخدم ANY لمقارنة قيمة مع أي قيمة في مجموعة من النتائج. إذا كان أي من القيم في المجموعة الفرعية يحقق الشرط، فإن الشرط يعتبر محققًا.

# مثال على استخدام ANY:

لنفترض أن لدينا جدولين: `employees` و`departments`. يحتوي جدول `employees` على الأعمدة التالية: `id`, `name`, و`salary`. ويحتوي جدول `departments` على الأعمدة: `id`, `name`, و`location`.

إذا أردنا استخراج أسماء الموظفين الذين يتقاضون رواتب أعلى من أي موظف في قسم معين، يمكننا استخدام الاستعلام التالي:

SELECT name 
FROM employees 
WHERE salary > ANY (SELECT salary FROM employees WHERE department_id = 2);

في هذا المثال، سيقوم الاستعلام الفرعي باستخراج جميع الرواتب من القسم الذي معرفته تساوي 2، وسيتم مقارنة راتب كل موظف مع أي من هذه الرواتب.

2. استخدام الكلمة المفتاحية ALL

على النقيض من ANY، تستخدم ALL لمقارنة قيمة مع جميع القيم في مجموعة من النتائج. يجب أن تحقق القيمة الشرط مع كل القيم في المجموعة الفرعية لتعتبر محققة.

# مثال على استخدام ALL:

باستخدام نفس الجداول، إذا أردنا استخراج أسماء الموظفين الذين يتقاضون رواتب أعلى من جميع الموظفين في قسم معين، يمكننا استخدام الاستعلام التالي:

SELECT name 
FROM employees 
WHERE salary > ALL (SELECT salary FROM employees WHERE department_id = 2);

في هذا المثال، سيقوم الاستعلام الفرعي باستخراج جميع الرواتب من القسم الذي معرفته تساوي 2، ويجب أن يكون راتب الموظف أعلى من كل هذه الرواتب ليتم اعتباره [شركة برمجة مصرية] في النتيجة النهائية.

الفرق بين ANY وALL

– **ANY**: الشرط يعتبر محققًا إذا كانت القيمة تحقق الشرط مع أي قيمة واحدة على الأقل في المجموعة الفرعية.
– **ALL**: الشرط يعتبر محققًا فقط إذا كانت القيمة تحقق الشرط مع جميع القيم في المجموعة الفرعية.

أمثلة إضافية:

# مثال على استخدام ANY مع عامل المقارنة =:

SELECT name 
FROM employees 
WHERE department_id = ANY (SELECT id FROM departments WHERE location = 'New York');

في هذا المثال، نستخرج أسماء الموظفين الذين يعملون في أي قسم يقع في نيويورك.

# مثال على استخدام ALL مع عامل المقارنة <:

SELECT name 
FROM employees 
WHERE salary < ALL (SELECT salary FROM employees WHERE department_id = 3);

هذا الاستعلام يستخرج أسماء الموظفين الذين يتقاضون رواتب أقل من جميع الموظفين في القسم الذي معرفته تساوي 3.

الخلاصة

توفر ANY وALL في MySQL مرونة كبيرة عند التعامل مع الاستعلامات الفرعية، مما يسمح بإجراء مقارنات معقدة على مجموعات من البيانات. من خلال فهم كيفية استخدام هذه الأدوات بشكل صحيح، يمكنك تحسين قدرات [شركة برمجة مصرية] الاستعلام لديك وتحقيق نتائج دقيقة وفعالة في إدارة قواعد البيانات.