MySQL البرنامج التعليمي للاستعلام الفرعي مع أمثلة

ما هي الاستعلامات الفرعية؟

الاستعلام الفرعي هو استعلام تحديد موجود داخل استعلام آخر. يتم عادةً استخدام استعلام التحديد الداخلي لتحديد نتائج استعلام التحديد الخارجي.

دعونا نلقي نظرة على بناء جملة الاستعلام الفرعي -

MySQL استعلام فرعي

إحدى شكاوى العملاء الشائعة في مكتبة فيديو MyFlix هي قلة عدد عناوين الأفلام. تريد الإدارة شراء أفلام للفئة التي تحتوي على أقل عدد من العناوين.

يمكنك استخدام استعلام مثل

SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);

يعطي نتيجة

MySQL استعلام فرعي

دعونا نرى كيف يعمل هذا الاستعلام

MySQL استعلام فرعي

ما سبق هو شكل من أشكال استعلام فرعي للصففي مثل هذه الاستعلامات الفرعية، يمكن للاستعلام الداخلي أن يعطي نتيجة واحدة فقط. المشغلات المسموح بها عند العمل مع الاستعلامات الفرعية للصفوف هي [=, >, =, <=, ,!=, ]

دعونا ننظر إلى مثال آخر،

لنفترض أنك تريد أسماء وأرقام هواتف أفراد من الأشخاص الذين استأجروا فيلمًا ولم يعيدوه بعد. بمجرد حصولك على الأسماء وأرقام الهواتف، يمكنك الاتصال بهم لتذكيرهم بذلك. يمكنك استخدام استعلام مثل

SELECT full_names,contact_number FROM   members  WHERE  membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );


MySQL استعلام فرعي

دعونا نرى كيف يعمل هذا الاستعلام

MySQL استعلام فرعي

في هذه الحالة، يقوم الاستعلام الداخلي بإرجاع أكثر من نتيجة واحدة. ما ورد أعلاه هو نوع من Tقادرة على الاستعلام الفرعيy.

لقد رأينا حتى الآن استعلامين، فلنرى الآن مثالاً على ذلك استعلام ثلاثي!!!

لنفترض أن الإدارة تريد مكافأة العضو الأعلى أجرًا.

يمكننا تشغيل استعلام مثل

Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));

الاستعلام أعلاه يعطي النتيجة التالية -

MySQL استعلام فرعي

الاستعلامات الفرعية مقابل الانضمامات!

عند مقارنتها بالانضمامات، تكون الاستعلامات الفرعية سهلة الاستخدام وسهلة القراءة. فهي ليست معقدة مثل ينضم

ومن ثم يتم استخدامها بشكل متكرر من قبل مبتدئين SQL.

لكن الاستعلامات الفرعية بها مشكلات في الأداء. يمكن أن يؤدي استخدام صلة بدلاً من استعلام فرعي في بعض الأحيان إلى منحك تعزيزًا في الأداء يصل إلى 500 مرة.

عند الاختيار، يوصى باستخدام JOIN عبر استعلام فرعي.


يجب استخدام الاستعلامات الفرعية فقط كحل احتياطي عندما لا تتمكن من استخدام عملية JOIN لتحقيق ما سبق

الاستعلامات الفرعية مقابل الانضمامات

الملخص

  • الاستعلامات الفرعية هي استعلامات مضمنة داخل استعلام آخر. يُعرف الاستعلام المضمن بالاستعلام الداخلي ويُعرف استعلام الحاوية بالاستعلام الخارجي.
  • الاستعلامات الفرعية سهلة الاستخدام، وتوفر مرونة كبيرة ويمكن تقسيمها بسهولة إلى مكونات منطقية واحدة تشكل الاستعلام وهو أمر مفيد للغاية عندما الاختبار وتصحيح الاستعلامات.
  • MySQL يدعم ثلاثة أنواع من الاستعلامات الفرعية، الاستعلامات الفرعية العددية والصف والجدول.
  • تقوم الاستعلامات الفرعية العددية بإرجاع صف واحد وعمود واحد فقط.
  • تقوم الاستعلامات الفرعية للصف بإرجاع صف واحد فقط ولكن يمكن أن تحتوي على أكثر من عمود واحد.
  • يمكن للاستعلامات الفرعية للجدول إرجاع صفوف متعددة بالإضافة إلى أعمدة.
  • يمكن أيضًا استخدام الاستعلامات الفرعية في استعلامات INSERT وUPDATE وDELETE.
  • بالنسبة لمشاكل الأداء، عندما يتعلق الأمر بالحصول على البيانات من جداول متعددة، فمن المستحسن بشدة استخدام JOINs بدلاً من الاستعلامات الفرعية. يجب استخدام الاستعلامات الفرعية فقط لسبب وجيه.