MySQL उदाहरणों के साथ सबक्वेरी ट्यूटोरियल

उप-प्रश्न क्या हैं?

उप क्वेरी एक चयन क्वेरी है जो किसी अन्य क्वेरी के अंदर समाहित होती है। आंतरिक चयन क्वेरी का उपयोग आमतौर पर बाहरी चयन क्वेरी के परिणामों को निर्धारित करने के लिए किया जाता है।

आइये उप क्वेरी सिंटैक्स पर नजर डालें –

MySQL सबक्वेरी

माईफ्लिक्स वीडियो लाइब्रेरी में ग्राहकों की एक आम शिकायत मूवी टाइटल की कम संख्या है। प्रबंधन ऐसी श्रेणी के लिए फिल्में खरीदना चाहता है जिसमें टाइटल की संख्या सबसे कम हो।

आप इस प्रकार की क्वेरी का उपयोग कर सकते हैं

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 क्वेरीज़ में भी किया जा सकता है।
  • प्रदर्शन संबंधी समस्याओं के लिए, जब कई तालिकाओं से डेटा प्राप्त करने की बात आती है, तो सबक्वेरीज़ के बजाय JOIN का उपयोग करने की दृढ़ता से अनुशंसा की जाती है। सबक्वेरीज़ का उपयोग केवल अच्छे कारण से ही किया जाना चाहिए।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: