उप प्रश्न क्या हैं?
एक उप क्वेरी एक चुनिंदा क्वेरी है जो किसी अन्य क्वेरी के अंदर निहित होती है। आंतरिक चयन क्वेरी का उपयोग आमतौर पर बाहरी चयन क्वेरी के परिणामों को निर्धारित करने के लिए किया जाता है।
आइए उप क्वेरी सिंटैक्स में देखें -
MyFlix वीडियो लाइब्रेरी में एक आम ग्राहक की शिकायत फिल्म के शीर्षक की कम संख्या है। प्रबंधन एक ऐसी श्रेणी के लिए फिल्में खरीदना चाहता है, जिसमें कम से कम खिताब हों।
आप जैसे क्वेरी का उपयोग कर सकते हैं
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
यह एक परिणाम देता है
आइए देखें कि यह क्वेरी कैसे काम करती है
ऊपर पंक्ति उप-क्वेरी का एक रूप है । ऐसे उप-प्रश्नों में, आंतरिक क्वेरी केवल एक परिणाम दे सकती है। पंक्ति उप-श्रेणियों के साथ काम करने पर अनुमेय ऑपरेटर [=,>, =, <=,,! =!] हैं।
आइए एक और उदाहरण देखें,
मान लीजिए कि आप ऐसे लोगों के नाम और फोन नंबर चाहते हैं, जिन्होंने एक फिल्म किराए पर ली है और उन्हें वापस करना बाकी है। एक बार जब आप नाम और फोन नंबर प्राप्त कर लेते हैं तो आप उन्हें रिमाइंडर देने के लिए कॉल करते हैं। आप जैसे क्वेरी का उपयोग कर सकते हैं
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
आइए देखें कि यह क्वेरी कैसे काम करती है
इस स्थिति में, आंतरिक क्वेरी एक से अधिक परिणाम देती है। उपरोक्त टी सक्षम सब-क्वेर वाई का प्रकार है ।
अब तक हमने दो प्रश्न देखे हैं, अब ट्रिपल क्वेरी का एक उदाहरण देखते हैं !!!
मान लीजिए कि प्रबंधन सबसे अधिक भुगतान करने वाले सदस्य को पुरस्कृत करना चाहता है।
हम एक क्वेरी जैसे चला सकते हैं
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
उपरोक्त क्वेरी निम्न परिणाम देती है -
उप-क्वेरी बनाम जॉइन!
जॉइन के साथ तुलना करने पर, उप-प्रश्न उपयोग में सरल और पढ़ने में आसान होते हैं। वे जोड़ों के रूप में जटिल नहीं हैं
इसलिए अक्सर SQL शुरुआती द्वारा उपयोग किया जाता है।
लेकिन उप-प्रश्नों में प्रदर्शन के मुद्दे हैं। उप-क्वेरी के बजाय किसी जुड़ाव का उपयोग करना कई बार आपको 500 गुना प्रदर्शन बढ़ाने तक दे सकता है।
पसंद को देखते हुए, यह एक उप क्वेरी पर एक JOIN का उपयोग करने के लिए अनुशंसित है।
उप-क्वेरीज़ का उपयोग केवल फ़ॉलबैक समाधान के रूप में किया जाना चाहिए, जब आप ऊपर प्राप्त करने के लिए JOIN ऑपरेशन का उपयोग नहीं कर सकते हैं
सारांश
- उप-प्रश्न एक अन्य प्रश्न के अंदर एम्बेडेड प्रश्न हैं। एम्बेडेड क्वेरी को आंतरिक क्वेरी के रूप में जाना जाता है और कंटेनर क्वेरी को बाहरी क्वेरी के रूप में जाना जाता है।
- उप प्रश्नों का उपयोग करना आसान है, महान लचीलेपन की पेशकश करते हैं और क्वेरी को परीक्षण और डीबग करते समय क्वेरी बनाने वाले एकल तार्किक घटकों में आसानी से टूट सकते हैं।
- MySQL तीन प्रकार की सबक्वेरी, स्केलर, रो और टेबल सबक्वेरी को सपोर्ट करता है।
- स्केलर उप प्रश्न केवल एक पंक्ति और एकल कॉलम लौटाते हैं।
- पंक्ति उप क्वेरी केवल एक पंक्ति लौटाती हैं, लेकिन एक से अधिक कॉलम हो सकती हैं।
- तालिका उपकथाएँ कई पंक्तियों के साथ-साथ स्तंभों को भी लौटा सकती हैं।
- उपकेंद्रों का उपयोग INSERT, UPDATE और DELETE प्रश्नों में भी किया जा सकता है।
- प्रदर्शन के मुद्दों के लिए, जब कई तालिकाओं से डेटा प्राप्त करने की बात आती है, तो यह सबक्वेरी के बजाय जॉइन का उपयोग करने के लिए दृढ़ता से अनुशंसित है। उप प्रश्नों का उपयोग केवल अच्छे कारण के साथ किया जाना चाहिए।