एक सबक्वेरी को एक क्वेरी के भीतर एक क्वेरी के रूप में सबसे अच्छी तरह से परिभाषित किया जाता है। उपश्रेणियाँ आपको क्वेरी लिखने में सक्षम बनाती हैं जो मानदंड के लिए डेटा पंक्तियों का चयन करती हैं जो वास्तव में तब विकसित होती हैं जब क्वेरी रनटाइम पर निष्पादित होती है। अधिक औपचारिक रूप से, यह किसी अन्य चयन कथन के किसी एक खंड के अंदर एक चयन कथन का उपयोग होता है। वास्तव में, एक सबक्वेरी को किसी अन्य सबक्वेरी के अंदर समाहित किया जा सकता है, जो कि किसी अन्य सबक्वेरी के अंदर है, और आगे भी। एक सबक्वेरी को INSERT, UPDATE और DELETE स्टेटमेंट्स के अंदर भी नेस्ट किया जा सकता है। उपश्रेणियों को कोष्ठक में संलग्न किया जाना चाहिए।
एक सबक्वेरी का उपयोग किसी भी स्थान पर किया जा सकता है जहां एक एक्सप्रेशन की अनुमति दी जाती है बशर्ते वह एक ही मान लौटाए। इसका मतलब यह है कि एक सबक्वेरी जो एकल मान लौटाती है, उसे FROM क्लॉज लिस्टिंग में एक ऑब्जेक्ट के रूप में भी सूचीबद्ध किया जा सकता है। इसे एक इनलाइन व्यू कहा जाता है क्योंकि जब एक सबक्वेरी का उपयोग FROM क्लॉज के हिस्से के रूप में किया जाता है, तो इसे वर्चुअल टेबल या व्यू की तरह माना जाता है। एक सबक्वेरी को या तो FROM क्लॉज, WHERE क्लॉज या मुख्य क्वेरी के HAVING क्लॉज में रखा जा सकता है। इसे आंतरिक क्वेरी या आंतरिक चयन भी कहा जाता है और जिस क्वेरी में सबक्वेरी होती है उसे बाहरी क्वेरी या बाहरी चयन या कंटेनर क्वेरी कहा जाता है। निम्नलिखित इसकी सामान्य श्रेणियां हैं -
स्केलर सबक्वेरी
स्केलर सबक्वेरी डेटा के एक कॉलम के साथ एकल मान यानी एक पंक्ति लौटाती है। एक स्केलर सबक्वेरी एक साधारण ऑपरेंड है और हम इसे लगभग कहीं भी इस्तेमाल कर सकते हैं, एक कॉलम या शाब्दिक कानूनी है। इसे स्पष्ट करने के लिए हम 'कार', 'ग्राहक' और 'आरक्षण' तालिकाओं का उपयोग कर रहे हैं जिनमें निम्नलिखित डेटा हैं -
mysql> कारों से * चुनें;+------+--------------+--------+| आईडी | नाम | कीमत |+----------+--------------+-----------+| 1 | नेक्सा | 750000 || 2 | मारुति स्विफ्ट | 450000 || 3 | बीएमडब्ल्यू | 4450000 || 4 | वोल्वो | 2250000 || 5 | ऑल्टो | 250000 || 6 | स्कोडा | 1250000 || 7 | टोयोटा | 240000 || 8 | फोर्ड | 1100000 |+------+--------------+-----------+8 पंक्तियों में सेट (0.02 सेकंड)mysql> ग्राहकों से * चुनें; +---------------+----------+| Customer_Id | नाम |+---------------+----------+| 1 | राहुल || 2 | यशपाल || 3 | गौरव || 4 | वीरेंद्र |+---------------+----------+4 पंक्तियों में सेट (0.00 सेकंड)mysql> आरक्षण से * चुनें; +------ +---------------+---------------+| आईडी | Customer_id | दिन |+------+-------------+-----------+| 1 | 1 | 2017-12-30 || 2 | 2 | 2017-12-28 || 3 | 2 | 2017-12-29 || 4 | 1 | 2017-12-25 || 5 | 3 | 2017-12-26 |+----------+-------------+---------------+5 पंक्तियाँ सेट में (0.00 सेकंड)पूर्व>जैसा कि हम जानते हैं कि स्केलर सबक्वेरी एक मान लौटाएगी, निम्नलिखित एक स्केलर सबक्वेरी है -
mysql> ग्राहकों से नाम चुनें जहां Customer_id =(आरक्षण से Customer_id चुनें जहां आईडी =5);+--------+| नाम |+-----------+| गौरव |+----------+1 पंक्ति में सेट (0.06 सेकंड)टेबल सबक्वेरी
एक टेबल सबक्वेरी डेटा के एक या अधिक कॉलम वाली एक या अधिक पंक्तियों के साथ एक परिणाम देता है। टेबल 'कार', 'ग्राहक' और 'आरक्षण' से डेटा का उपयोग करते हुए निम्नलिखित क्वेरी टेबल सबक्वेरी का एक उदाहरण है -
mysql> उन ग्राहकों से नाम चुनें जहां Customer_id IN (रिजर्वेशन से DISTINCT Customer_id चुनें);+---------+| नाम |+------------+| राहुल || यशपाल || गौरव |+-----------+3 पंक्तियाँ सेट में (0.05 सेकंड)सहसंबंधित सबक्वेरी
एक सहसंबद्ध सबक्वेरी एक सबक्वेरी है जो अपने WHERE क्लॉज में बाहरी क्वेरी के मानों का उपयोग करती है। टेबल 'कार्स' से डेटा का उपयोग करते हुए निम्नलिखित क्वेरी एक सहसंबद्ध सबक्वेरी का एक उदाहरण है -
mysql> कारों से नाम चुनें जहां कीमत <(कार से औसत (कीमत) चुनें);+--------------+| नाम |+--------------+| नेक्सा || मारुति स्विफ्ट || ऑल्टो || स्कोडा || फोर्ड |+--------------+5 पंक्तियों में सेट (0.00 सेकंड)mysql> कारों से नाम चुनें जहां मूल्य> (कारों से औसत (मूल्य) चुनें);+---- ----+| नाम |+-----------+| बीएमडब्ल्यू || वोल्वो || टोयोटा |+----------+3 पंक्तियों में सेट (0.00 सेकंड)