इनर जॉइन बनाम आउटर जॉइन
इनर जॉइन और आउटर जॉइन दो SQL जॉइनिंग मेथड हैं जिनका उपयोग डेटाबेस के लिए क्वेरी प्रोसेसिंग में किया जाता है। वे जॉइन क्लॉज के परिवार से संबंधित हैं (अन्य दो लेफ्ट और राइट जॉइन हैं)। हालांकि, एक सेल्फ जॉइन है जिसका उपयोग विशेष परिस्थितियों के लिए किया जा सकता है। Join का उद्देश्य दो तालिकाओं में सामान्य मानों का उपयोग करके फ़ील्ड को संयोजित करना है। ये एक डेटाबेस में कई तालिकाओं से रिकॉर्ड को जोड़ते हैं। यह परिणामी सेट बनाता है, जिसे दूसरी तालिका के रूप में सहेजा जा सकता है।
इनर जॉइन क्या है?
सबसे अधिक इस्तेमाल किया जाने वाला SQL जॉइन ऑपरेशन इनर जॉइन है।इसे अनुप्रयोगों में उपयोग किए जाने वाले डिफ़ॉल्ट प्रकार के जुड़ाव के रूप में माना जा सकता है। इनर जॉइन दो टेबल को मिलाने के लिए जॉइन-प्रेडिकेट का उपयोग करता है। मान लें कि दो टेबल ए और बी हैं, तो जॉइन-प्रेडिकेट ए और बी की पंक्तियों की तुलना उन सभी युग्मों को खोजने के लिए करेगा जो विधेय को संतुष्ट करते हैं। परिणाम बनाने के लिए ए और बी टेबल की सभी संतुष्ट पंक्तियों के कॉलम मानों को जोड़ा जाता है। इसे पहले सभी रिकॉर्ड्स के क्रॉस जॉइन (कार्टेशियन उत्पाद) के रूप में देखा जा सकता है और फिर केवल उन रिकॉर्ड्स को लौटाया जा सकता है जो जॉइन-प्रेडिकेट को संतुष्ट करते हैं। हालांकि, वास्तव में, कार्टेशियन उत्पाद की गणना नहीं की जाती है क्योंकि यह बहुत अक्षम है। इसके बजाय हैश जॉइन या सॉर्ट-मर्ज जॉइन का उपयोग किया जाता है।
आउटर जॉइन क्या है?
विपरीत, इनर जॉइन, आउटर जॉइन सभी रिकॉर्ड रखता है, भले ही वह मेल खाने वाला रिकॉर्ड न ढूंढ सके। इसका मतलब है कि बाहरी जुड़ाव को परिणाम में प्रदर्शित होने के लिए एक मिलान रिकॉर्ड खोजने के लिए एक रिकॉर्ड की आवश्यकता होती है। इसके बजाय, यह सभी रिकॉर्ड लौटाएगा, लेकिन बेजोड़ रिकॉर्ड में शून्य मान होंगे। बाहरी जुड़ाव को तीन उप श्रेणियों में बांटा गया है।वे बाएँ बाहरी जोड़, दाएँ बाहरी जोड़ और पूर्ण बाहरी जोड़ हैं। यह विभेद इस आधार पर होता है कि बेजोड़ रिकॉर्ड मिलने पर किस तालिका (बाएं तालिका, दाएँ तालिका या दोनों तालिकाओं) की पंक्ति को बरकरार रखा जाता है। लेफ्ट आउटर जॉइन (जिसे सिंपल लेफ्ट जॉइन के रूप में भी जाना जाता है) लेफ्ट टेबल के सभी रिकॉर्ड को बरकरार रखता है। इसका मतलब है, भले ही संख्या मिलान रिकॉर्ड शून्य हो, फिर भी परिणाम तालिका में रिकॉर्ड होंगे, लेकिन बी के सभी कॉलम के लिए शून्य मान होंगे। दूसरे शब्दों में, बाएं तालिका से सभी मान मिलान किए गए मानों के साथ दाएं से लौटाए जाते हैं तालिका (या बेजोड़ होने पर शून्य मान)। यदि बाएँ तालिका से एकाधिक पंक्तियों के मानों का मिलान दाएँ तालिका से एकल पंक्ति से किया जाता है, तो दाएँ तालिका से पंक्ति को आवश्यकतानुसार दोहराया जाएगा। दायां बाहरी जुड़ाव काफी हद तक बाएं बाहरी जुड़ाव के समान है, लेकिन तालिकाओं का उपचार पूजनीय है। इसका मतलब है कि परिणाम में दाएं टेबल की सभी पंक्तियां कम से कम एक बार मिलान किए गए बाएं टेबल मानों (और बेजोड़ दाएं मानों के लिए शून्य मान) के साथ होंगी। बाएँ और दाएँ बाहरी जोड़ दोनों की तुलना में पूर्ण बाहरी जुड़ाव अधिक व्यापक है।यह बाएँ और दाएँ बाहरी दोनों को एक साथ मिलाने के प्रभाव के संयोजन में परिणत होता है।
इनर जॉइन और आउटर जॉइन में क्या अंतर है?
इनर जॉइन परिणाम में बेजोड़ पंक्तियों को नहीं रखता है, लेकिन बाहरी जुड़ाव कम से कम एक टेबल से सभी रिकॉर्ड रखेगा (जिसके आधार पर बाहरी जुड़ाव का उपयोग किया गया है)। इसलिए, परिणाम तालिका में बेजोड़ पंक्तियों पर मौजूद कोई जानकारी नहीं होने का व्यवहार अवांछनीय है, आपको हमेशा बाहरी जुड़ाव (आंतरिक जुड़ाव के स्थान पर) में से एक का उपयोग करने की आवश्यकता होती है। यदि कोई मिलान नहीं मिलता है तो आंतरिक जुड़ाव परिणाम नहीं दे सकता है। लेकिन बाहरी जुड़ाव हमेशा परिणामी तालिका का उत्पादन करेगा, यहां तक कि बिना मिलान वाली पंक्तियों के भी। आंतरिक जुड़ाव हमेशा मूल्यों के साथ तालिकाएँ लौटाएगा (यदि लौटाया गया है)। लेकिन बाहरी जुड़ाव के परिणामस्वरूप रिक्त मान वाली तालिकाएँ हो सकती हैं।