inner join vs outer join
इनर ज्वाइन Vs आउटर जॉइन: इनर और आउटर जॉइन के बीच सटीक अंतर का पता लगाने के लिए तैयार हो जाएं
इनर ज्वाइन Vs आउटर जॉइन्ट के बीच के अंतरों की खोज करने से पहले, आइए पहले देखते हैं कि SQL JOIN क्या है?
एक ज्वाइन क्लॉज का इस्तेमाल रिकॉर्ड्स को मिलाने या जॉइन कंडीशन के जरिए दो या दो से अधिक टेबलों से रिकॉर्ड्स में हेरफेर करने के लिए किया जाता है। जुड़ने की स्थिति इंगित करती है कि प्रत्येक तालिका के स्तंभ एक दूसरे के खिलाफ कैसे मेल खाते हैं।
सम्मिलित हों इन तालिकाओं के बीच एक संबंधित स्तंभ पर आधारित है। सबसे आम उदाहरण प्राथमिक कुंजी कॉलम और विदेशी कुंजी कॉलम के माध्यम से दो तालिकाओं के बीच जुड़ना है।
मान लीजिए, हमें एक तालिका मिली है जिसमें कर्मचारी वेतन है और एक अन्य तालिका है जिसमें कर्मचारी विवरण शामिल हैं।
इस स्थिति में, कर्मचारी आईडी जैसा एक सामान्य कॉलम होगा जो इन दोनों तालिकाओं में शामिल हो जाएगा। यह कर्मचारी आईडी कॉलम कर्मचारी विवरण तालिका की प्राथमिक कुंजी और कर्मचारी वेतन तालिका में विदेशी कुंजी होगी।
दोनों संस्थाओं के बीच एक सामान्य कुंजी होना बहुत महत्वपूर्ण है। आप एक मेज को एक इकाई के रूप में और दो तालिकाओं के बीच एक आम लिंक के रूप में कुंजी के बारे में सोच सकते हैं जो कि ऑपरेशन में शामिल होने के लिए उपयोग किया जाता है।
दृश्य स्टूडियो टीम फाउंडेशन सर्वर 2015 ट्यूटोरियल
मूल रूप से, SQL में दो प्रकार के Join होते हैं यानी इनर जॉइन और आउटर जॉइन । बाहरी जुड़ाव को तीन प्रकारों में विभाजित किया गया है अर्थात्। लेफ्ट आउटर जॉइन, राइट आउटर जॉइन और फुल आउटर जॉइन।
इस लेख में, हम अंतर देखेंगे इनर जॉइन और आउटर जॉइन विस्तार से। हम इस लेख के दायरे से क्रॉस जॉइन और असमान जॉइन को बाहर रखेंगे।
आप क्या सीखेंगे:
- इनर जॉइन क्या है?
- बाहरी जुड़ाव क्या है?
- इनर और आउटर जॉइन में अंतर
- प्रदर्शन
- एमएस एक्सेस इनर और आउटर जॉइन
- लेफ्ट जॉइन बनाम लेफ्ट आउटर जॉइन
- लेफ्ट आउटर ज्वाइन vs राइट आउटर जॉइन
- Tabular Format में Inner Join और Outer Join में अंतर
- इनर एंड आउटर जॉइन वर्सेस यूनियन
- निष्कर्ष
- अनुशंसित पाठ
इनर जॉइन क्या है?
एक इनर जॉइन केवल उन पंक्तियों को लौटाता है, जिसमें दोनों तालिकाओं में मिलान मूल्य होते हैं (हम यहां पर विचार कर रहे हैं कि दो तालिकाओं के बीच जुड़ाव हो गया है)।
बाहरी जुड़ाव क्या है?
आउटर जॉइन में मेलिंग पंक्तियों के साथ-साथ दो तालिकाओं के बीच गैर-मिलान पंक्तियों में से कुछ भी शामिल हैं। एक बाहरी रूप से शामिल होने वाला आंतरिक रूप से अलग होता है, यह झूठी मिलान स्थिति को कैसे संभालता है।
बाहरी प्रकार के 3 प्रकार हैं:
- बाईं ओर का बाहरी जोड़ : बाएँ तालिका से सभी पंक्तियों और दोनों तालिकाओं के बीच मिलान रिकॉर्ड लौटाता है।
- राइट आउटर जॉइन करें : RIGHT तालिका से सभी पंक्तियों को लौटाता है और दोनों तालिकाओं के बीच मिलान रिकॉर्ड करता है।
- पूर्ण बाहरी सम्मिलित हों : यह लेफ्ट आउटर जॉइन और राइट आउटर जॉइन के परिणाम को जोड़ती है।
इनर और आउटर जॉइन में अंतर
(छवि स्रोत )
जैसा कि ऊपर दिए गए आरेख में दिखाया गया है, दो संस्थाएँ हैं अर्थात् तालिका 1 और तालिका 2 और दोनों तालिकाएँ कुछ सामान्य डेटा साझा करती हैं।
एक इनर जॉइन इन टेबल के बीच के कॉमन एरिया (ऊपर डायग्राम में ग्रीन शेडेड एरिया) को लौटाएगा यानी सभी रिकॉर्ड्स जो टेबल 1 और टेबल 2 के बीच कॉमन हैं।
एक लेफ्ट आउटर जॉइन्ट टेबल 1 से सभी पंक्तियों को वापस कर देगा और केवल टेबल 2 से उन पंक्तियों को जो आम तौर पर टेबल 1 के समान हैं। एक सही बाहरी जुड़ाव इसके ठीक विपरीत होगा। यह तालिका 2 से सभी रिकॉर्ड देगा और तालिका 1 से केवल संबंधित मिलान रिकॉर्ड देगा।
इसके अलावा, एक पूर्ण बाहरी जुड़ाव हमें तालिका 1 और तालिका 2 से सभी रिकॉर्ड देगा।
इसे स्पष्ट करने के लिए एक उदाहरण से शुरू करते हैं।
मान लीजिए हमारे पास दो हैं टेबल: EmpDetails और EmpSalary ।
EmpDetails Table:
कर्मचारी आयडी | कर्मचारी का नाम |
। | लिली |
1 | जॉन |
दो | सामन्था |
३ | कोई नहीं |
४ | रेशमी |
५ | Ram |
६ | Arpit |
। | सीता |
९ | फराह |
१० | जैरी |
कर्मचारी तालिका:
कर्मचारी आयडी | कर्मचारी का नाम | कमणचारी |
---|---|---|
ग्यारह | गुलाब का फूल | 90000 है |
1 | जॉन | 50,000 रु |
दो | सामन्था | 120000 |
३ | कोई नहीं | 75000 है |
४ | रेशमी | 25000 |
५ | Ram | 150000 है |
६ | Arpit | 80000 |
१२ | साक्षी | 45000 रु |
१३ | जैक | 250000 |
आइए हम इन दो तालिकाओं पर एक इनर जॉइन करें और परिणाम देखें:
प्रश्न:
SELECT EmpDetails. EmployeeID, EmpDetails. EmployeeName, EmpSalary. EmployeeSalary FROM EmpDetails INNER JOIN EmpSalary ON EmpDetails. EmployeeID = EmpSalary. EmployeeID;
परिणाम:
कर्मचारी आयडी | कर्मचारी का नाम | कमणचारी |
---|---|---|
। | लिली | शून्य |
1 | जॉन | 50,000 रु |
दो | सामन्था | 120000 |
३ | कोई नहीं | 75000 है |
४ | रेशमी | 25000 |
५ | Ram | 150000 है |
६ | Arpit | 80000 |
उपर्युक्त परिणाम सेट में, आप देख सकते हैं कि इनर जॉइन ने पहले 6 रिकॉर्ड वापस कर दिए हैं जो कि दोनों एम्प्लिट्स और एम्पलरी दोनों में मौजूद थे, जिसमें एक मिलान कुंजी यानी एम्प्लॉईआईडी थी। इसलिए, यदि A और B दो संस्थाएँ हैं, तो इनर जॉइन परिणाम सेट लौटाएगा जो मिलान कुंजी के आधार पर 'A और B' में रिकॉर्ड के बराबर होगा।
आइए अब देखते हैं कि लेफ्ट आउटर जॉइन क्या करेगा।
प्रश्न:
SELECT EmpDetails. EmployeeID, EmpDetails. EmployeeName, EmpSalary. EmployeeSalary FROM EmpDetails LEFT JOIN EmpSalary ON EmpDetails. EmployeeID = EmpSalary. EmployeeID;
परिणाम:
कर्मचारी आयडी | कर्मचारी का नाम | कमणचारी |
---|---|---|
1 | जॉन | 50,000 रु |
दो | सामन्था | 120000 |
३ | कोई नहीं | 75000 है |
४ | रेशमी | 25000 |
५ | Ram | 150000 है |
६ | Arpit | 80000 |
। | सीता | शून्य |
९ | फराह | शून्य |
१० | जैरी | शून्य |
उपरोक्त परिणाम सेट में, आप देख सकते हैं कि बायाँ बाहरी जोड़ लेफ्ट टेबल से सभी 10 रिकॉर्ड्स यानि EmpDetails टेबल पर वापस आ गया है और जैसा कि पहले 6 रिकॉर्ड मिलान कर रहे हैं, इसने इन मिलान रिकॉर्ड के लिए कर्मचारी का वेतन लौटा दिया है।
चूंकि बाकी रिकॉर्ड्स में राइट टेबल, यानी Empalalary टेबल में मैचिंग कुंजी नहीं है, इसलिए उन लोगों के लिए NULL की वापसी हुई है। चूंकि, लिली, सीता, फराह और जेरी के पास एम्प्लरी टेबल में एक मेल कर्मचारी आईडी नहीं है, इसलिए उनकी सैलरी परिणाम सेट में NULL के रूप में दिखाई दे रही है।
इसलिए, यदि A और B दो इकाइयाँ हैं, तो बायाँ बाहरी जोड़ परिणाम सेट को लौटा देगा जो मिलान कुंजी के आधार पर based A NOT B ’में रिकॉर्ड के बराबर होगा।
अब हम देखते हैं कि राइट आउटर जॉइन क्या करता है।
प्रश्न:
SELECT EmpDetails. EmployeeID, EmpDetails. EmployeeName, EmpSalary. EmployeeSalary FROM EmpDetails RIGHT join EmpSalary ON EmpDetails. EmployeeID = EmpSalary. EmployeeID;
परिणाम:
कर्मचारी आयडी | कर्मचारी का नाम | कमणचारी |
---|---|---|
शून्य | शून्य | 90000 है |
1 | जॉन | 50,000 रु |
दो | सामन्था | 120000 |
३ | कोई नहीं | 75000 है |
४ | रेशमी | 25000 |
५ | Ram | 150000 है |
६ | Arpit | 80000 |
शून्य | शून्य | 250000 |
शून्य | शून्य | 250000 |
उपरोक्त परिणाम सेट में, आप देख सकते हैं कि दायां बाहरी जोड़ ने बाईं जोड़ के ठीक विपरीत किया है। इसने दायाँ टेबल यानी एम्प्लरी टेबल से सभी की तनख्वाह लौटा दी है।
लेकिन, रोज़, साक्षी और जैक के पास लेफ्ट टेबल यानी एम्प्लिट टेबल में मेल कर्मचारी आईडी नहीं है, हमें लेफ्ट टेबल से NULL के रूप में उनकी एम्प्लॉई आईडी और एम्प्लॉईनेम मिला है।
इसलिए, यदि A और B दो संस्थाएँ हैं, तो सही बाहरी जुड़ाव परिणाम सेट को लौटाएगा जो मिलान कुंजी के आधार पर 'B NOT A' में 'रिकॉर्ड्स' के बराबर होगा।
आइए हम यह भी देखें कि यदि हम दोनों तालिकाओं में सभी स्तंभों पर एक चुनिंदा ऑपरेशन कर रहे हैं तो परिणाम क्या होगा।
प्रश्न:
SELECT * FROM EmpDetails RIGHT JOIN EmpSalary ON EmpDetails. EmployeeID = EmpSalary. EmployeeID;
परिणाम:
कर्मचारी आयडी | कर्मचारी का नाम | कर्मचारी आयडी | कर्मचारी का नाम | कमणचारी |
---|---|---|---|---|
शून्य | शून्य | ग्यारह | गुलाब का फूल | 90000 है |
1 | जॉन | 1 | जॉन | 50,000 रु |
दो | सामन्था | दो | सामन्था | 120000 |
३ | कोई नहीं | ३ | कोई नहीं | 75000 है |
४ | रेशमी | ४ | रेशमी | 25000 |
५ | Ram | ५ | Ram | 150000 है |
६ | Arpit | ६ | Arpit | 80000 |
शून्य | शून्य | १२ | साक्षी | 250000 |
शून्य | शून्य | १३ | जैक | 250000 |
अब, हम पूर्ण जॉइन में जाते हैं।
एक पूर्ण बाहरी जुड़ाव तब होता है जब हम दोनों तालिकाओं से सभी डेटा चाहते हैं चाहे कोई भी मैच हो या न हो। इसलिए, यदि मुझे सभी कर्मचारियों को चाहिए, भले ही मुझे एक मिलान कुंजी न मिले, तो मैं नीचे दिखाए अनुसार एक क्वेरी चलाऊंगा।
प्रश्न:
SELECT * FROM EmpDetails FULL JOIN EmpSalary ON EmpDetails. EmployeeID = EmpSalary. EmployeeID;
परिणाम:
कर्मचारी आयडी | कर्मचारी का नाम | कर्मचारी आयडी | कर्मचारी का नाम | कमणचारी |
---|---|---|---|---|
। | लिली | शून्य | शून्य | शून्य |
1 | जॉन | 1 | जॉन | 50,000 रु |
दो | सामन्था | दो | सामन्था | 120000 |
३ | कोई नहीं | ३ | कोई नहीं | 75000 है |
४ | रेशमी | ४ | रेशमी | 25000 |
५ | Ram | ५ | Ram | 150000 है |
६ | Arpit | ६ | Arpit | 80000 |
। | सीता | शून्य | शून्य | शून्य |
९ | फराह | शून्य | शून्य | शून्य |
१० | जैरी | शून्य | शून्य | शून्य |
शून्य | शून्य | ग्यारह | गुलाब का फूल | 90000 है |
शून्य | शून्य | १२ | साक्षी | 250000 |
शून्य | शून्य | १३ | जैक | 250000 |
आप उपरोक्त परिणाम सेट में देख सकते हैं कि जैसा कि पहले छह रिकॉर्ड दोनों तालिकाओं में मेल खा रहे हैं, हमें बिना किसी NULL के सभी डेटा मिल गए हैं। अगले चार रिकॉर्ड बाईं तालिका में मौजूद हैं, लेकिन सही तालिका में नहीं हैं, इस प्रकार सही तालिका में संबंधित डेटा NULL है।
पिछले तीन रिकॉर्ड दाईं तालिका में मौजूद हैं और बाईं तालिका में नहीं हैं, इसलिए हमारे पास बाईं तालिका से संबंधित डेटा में NULL है। इसलिए, यदि A और B दो संस्थाएँ हैं, तो पूर्ण बाहरी जुड़ाव परिणाम सेट लौटाएगा जो मिलान कुंजी के बावजूद B A और B ’में रिकॉर्ड के बराबर होगा।
सैद्धांतिक रूप से, यह लेफ्ट जॉइन और राइट जॉइन का संयोजन है।
प्रदर्शन
आइए SQL सर्वर में एक लेफ्ट आउटर जॉइन के खिलाफ इनर ज्वाइन की तुलना करें। ऑपरेशन की गति के बारे में बात करते हुए, एक बाईं बाहरी जॉयिन स्पष्ट रूप से एक आंतरिक जुड़ाव से तेज नहीं है।
परिभाषा के अनुसार, एक बाहरी जुड़ाव, चाहे वह बाएं या दाएं हो, उसे अतिरिक्त कार्य नल के साथ-साथ आंतरिक कार्य के सभी कार्यों को पूरा करना होता है। बाहरी जुड़ाव से अधिक संख्या में रिकॉर्ड वापस आने की उम्मीद की जाती है जो आगे बड़े परिणाम सेट के कारण अपने कुल निष्पादन समय को बढ़ाता है।
इस प्रकार, एक बाहरी जुड़ाव एक आंतरिक जुड़ाव की तुलना में धीमा है।
इसके अलावा, कुछ विशिष्ट परिस्थितियां हो सकती हैं, जहां लेफ्ट जॉइन इनर जॉइन की तुलना में तेज होगी, लेकिन हम उन्हें एक दूसरे के साथ बदलने के लिए नहीं जा सकते हैं क्योंकि लेफ्ट बाहरी जॉइन आंतरिक रूप से जॉइन के बराबर नहीं है।
आइए एक उदाहरण पर चर्चा करें कि लेफ्ट जॉइन इनर जॉइन की तुलना में अधिक तेज़ हो सकता है। यदि ज्वाइन ऑपरेशन में शामिल टेबल बहुत छोटी हैं, तो कहें कि उनके पास 10 से कम रिकॉर्ड हैं और क्वेरी को कवर करने के लिए टेबल में पर्याप्त अनुक्रमित नहीं हैं, उस स्थिति में, लेफ्ट जॉइन इनर जॉइन की तुलना में आम तौर पर तेज है।
आइए हम नीचे दो टेबल बनाते हैं और एक उदाहरण के रूप में एक INNER JOIN और उनके बीच में एक LEFT OUTER JOIN करते हैं:
CREATE TABLE #Table1 ( ID int NOT NULL PRIMARY KEY, Name varchar(50) NOT NULL ) INSERT #Table1 (ID, Name) VALUES (1, 'A') INSERT #Table1 (ID, Name) VALUES (2, 'B') INSERT #Table1 (ID, Name) VALUES (3, 'C') INSERT #Table1 (ID, Name) VALUES (4, 'D') INSERT #Table1 (ID, Name) VALUES (5, 'E') CREATE TABLE #Table2 ( ID int NOT NULL PRIMARY KEY, Name varchar(50) NOT NULL ) INSERT #Table2 (ID, Name) VALUES (1, 'A') INSERT #Table2 (ID, Name) VALUES (2, 'B') INSERT #Table2 (ID, Name) VALUES (3, 'C') INSERT #Table2 (ID, Name) VALUES (4, 'D') INSERT #Table2 (ID, Name) VALUES (5, 'E') SELECT * FROM #Table1 t1 INNER JOIN #Table2 t2 ON t2.Name = t1.Name
ईद | नाम | ईद | नाम | |
---|---|---|---|---|
नीचे एक आंतरिक जोड़ का दृश्य है: ![]() | नीचे एक बाहरी जोड़ का दृश्य है ![]() | |||
1 | 1 | सेवा मेरे | 1 | सेवा मेरे |
दो | दो | बी | दो | बी |
३ | ३ | सी | ३ | सी |
४ | ४ | घ | ४ | घ |
५ | ५ | है | ५ | है |
SELECT * FROM (SELECT 38 AS bah) AS foo JOIN (SELECT 35 AS bah) AS bar ON (55=55);
ईद | नाम | ईद | नाम | |
---|---|---|---|---|
1 | 1 | सेवा मेरे | 1 | सेवा मेरे |
दो | दो | बी | दो | बी |
३ | ३ | सी | ३ | सी |
४ | ४ | घ | ४ | घ |
५ | ५ | है | ५ | है |
जैसा कि आप ऊपर देख सकते हैं, दोनों प्रश्नों ने एक ही परिणाम सेट दिया है। इस मामले में, यदि आप दोनों प्रश्नों की निष्पादन योजना देखते हैं, तो आप पाएंगे कि आंतरिक जुड़ाव में बाहरी जुड़ाव की तुलना में अधिक लागत आई है। ऐसा इसलिए है, क्योंकि एक आंतरिक जुड़ने के लिए, SQL सर्वर एक हैश मैच करता है जबकि यह बाईं ओर के लिए नेस्टेड लूप करता है।
एक हैश मैच नेस्टेड छोरों की तुलना में सामान्य रूप से तेज होता है। लेकिन, इस मामले में, चूंकि पंक्तियों की संख्या इतनी कम है और उपयोग करने के लिए कोई सूचकांक नहीं है (जैसा कि हम नाम स्तंभ पर शामिल हो रहे हैं), हैश ऑपरेशन ने एक सबसे महंगी आंतरिक जुड़ाव क्वेरी को बदल दिया है।
जावा में बाइनरी सर्च ट्री को लागू करें
हालाँकि, यदि आप नाम और आईडी से जुड़ने की क्वेरी में मिलान कुंजी को बदलते हैं और यदि तालिका में बड़ी संख्या में पंक्तियाँ हैं, तो आप पाएंगे कि आंतरिक जुड़ाव बाईं बाहरी जुड़ाव से तेज़ होगा।
एमएस एक्सेस इनर और आउटर जॉइन
जब आप MS Access क्वेरी में कई डेटा स्रोतों का उपयोग करते हैं, तो आप उन रिकॉर्ड्स को नियंत्रित करने के लिए JOINs लागू करते हैं जो आप देखना चाहते हैं, यह इस बात पर निर्भर करता है कि डेटा स्रोत एक दूसरे के साथ कैसे जुड़े हैं।
एक आंतरिक जुड़ाव में, दोनों तालिकाओं से संबंधित केवल एक एकल परिणाम सेट में संयुक्त होते हैं। यह एक्सेस में एक डिफ़ॉल्ट जॉइन है और सबसे अधिक बार उपयोग किया जाने वाला भी है। यदि आप एक जॉइन करते हैं, लेकिन स्पष्ट रूप से निर्दिष्ट नहीं करते हैं कि यह किस प्रकार का है, तो एक्सेस मानता है कि यह एक आंतरिक जॉइन है।
बाहरी जोड़ में, दोनों तालिकाओं से संबंधित सभी डेटा को सही ढंग से संयोजित किया जाता है, साथ ही एक तालिका से शेष सभी पंक्तियों को भी। पूर्ण बाहरी जोड़ में, जहाँ भी संभव हो, सभी डेटा संयुक्त होते हैं।
लेफ्ट जॉइन बनाम लेफ्ट आउटर जॉइन
SQL सर्वर में, जब आप बाहरी बाहरी जोड़ लागू करते हैं तो कीवर्ड बाहरी वैकल्पिक होता है। इस प्रकार, इससे कोई अंतर नहीं पड़ता है यदि आप या तो O LEFT OUTER JOIN ’या FT LEFT JOIN’ लिखते हैं क्योंकि दोनों आपको एक ही परिणाम देने वाले हैं।
एक LEFT JOIN B, A LEFT OIN JOIN B के समतुल्य वाक्य है।
नीचे SQL सर्वर में बराबर सिंटैक्स की सूची दी गई है:
(छवि स्रोत )
लेफ्ट आउटर ज्वाइन vs राइट आउटर जॉइन
हम इस लेख में पहले ही इस अंतर को देख चुके हैं। आप लेफ्ट आउटर जॉइन और राइट आउटर जॉइन क्वेश्चन को देखें और अंतर देखने के लिए सेट करें।
लेफ्ट जॉइन और राइट जॉइन के बीच मुख्य अंतर गैर-मिलान वाली पंक्तियों को शामिल करने में निहित है। लेफ्ट आउटर जॉइन में टेबल से बेजोड़ पंक्तियां शामिल होती हैं जो जॉइन क्लॉज के बाईं ओर होती हैं जबकि राइट बाहरी जॉइन में टेबल से बेजोड़ पंक्तियां शामिल होती हैं जो जॉइन क्लॉज के दाईं ओर होती हैं।
लोग पूछते हैं कि कौन सा बेहतर है यानी लेफ्ट जॉइन या राइट जॉइन? मूल रूप से, वे एक ही प्रकार के ऑपरेशन होते हैं सिवाय उनके तर्कों के। इसलिए, जब आप पूछते हैं कि कौन सा उपयोग करना है, तो आप वास्तव में पूछ रहे हैं कि क्या लिखना है ए। यह सिर्फ वरीयता का मामला है।
आमतौर पर लोग अपनी SQL क्वेरी में लेफ्ट जॉइन का इस्तेमाल करना पसंद करते हैं। मैं आपको सुझाव दूंगा कि आप जिस तरीके से क्वेरी लिख रहे हैं, उस तरीके के अनुरूप रहना चाहिए ताकि क्वेरी की व्याख्या करने में कोई भ्रम न हो।
हमने अब तक इनर जॉइन के बारे में और सभी प्रकार के आउटर जॉइन के बारे में देखा है। आइए हम इनर जॉइन और आउटर जॉइन के बीच अंतर को जल्दी से सारांशित करें।
Tabular Format में Inner Join और Outer Join में अंतर
आंतरिक रूप से जुड़ा | बाहरी सम्मिलित हों |
---|---|
केवल उन पंक्तियों को लौटाता है जिनमें दोनों तालिकाओं में मिलान मूल्य होते हैं। | दो तालिकाओं के बीच मिलान पंक्तियों के साथ-साथ कुछ गैर-मिलान पंक्तियों को भी शामिल करता है। |
यदि तालिकाओं में बड़ी संख्या में पंक्तियाँ हैं और उपयोग करने के लिए एक सूचकांक है, तो INNER JOIN आमतौर पर OUTER JOIN से अधिक तेज़ है। | आम तौर पर, एक OUTER JOIN INNER JOIN की तुलना में धीमा होता है क्योंकि इसमें INNER JOIN की तुलना में अधिक संख्या में रिकॉर्ड वापस करने की आवश्यकता होती है। हालाँकि, कुछ विशिष्ट परिदृश्य हो सकते हैं जहाँ OUTER JOIN तेज़ है। |
जब एक मैच नहीं मिलता है, तो यह कुछ भी वापस नहीं करता है। | जब कोई मेल नहीं मिलता है, तो एक NULL को दिए गए कॉलम मान में रखा जाता है। |
जब आप किसी विशिष्ट कॉलम की विस्तृत जानकारी देखना चाहते हैं तो INNER JOIN का उपयोग करें। | जब आप दो तालिकाओं में सभी सूचनाओं की सूची प्रदर्शित करना चाहते हैं तो OUTER JOIN का उपयोग करें। |
INNER JOIN एक फिल्टर की तरह काम करता है। डेटा वापस करने के लिए एक आंतरिक जुड़ने के लिए दोनों तालिकाओं पर एक मैच होना चाहिए। | वे डेटा-ऐड ऑन की तरह काम करते हैं। |
आंतरिक जुड़ने के लिए इम्प्लिक्ट ज्वाइन नोटेशन मौजूद है, जो कॉम्बा से अलग किए जाने वाले तालिकाओं को FROM क्लॉज में अलग करता है। उदाहरण: चुनें * उत्पाद से, श्रेणी कहाँ उत्पाद। श्रेणी: श्रेणी = श्रेणी। श्रेणी; | बाहरी जुड़ाव के लिए कोई निहित जॉइन नोटेशन नहीं है। |
इनर एंड आउटर जॉइन वर्सेस यूनियन
कई बार, हम Join and Union को भ्रमित करते हैं और यह सबसे अधिक पूछे जाने वाले प्रश्नों में से एक है एसक्यूएल साक्षात्कार । हमने आंतरिक जुड़ाव और बाहरी जुड़ाव के बीच अंतर पहले ही देख लिया है। अब, देखते हैं कि एक JOIN UNION से किस तरह अलग है।
UNION एक-दूसरे के बाद प्रश्नों की एक पंक्ति रखता है, जबकि जुड़ने से कार्टेशियन उत्पाद बनता है और इसे सब्सक्राइब करता है। इस प्रकार, UNION और JOIN पूरी तरह से अलग-अलग ऑपरेशन हैं।
आइए हम MySQL में नीचे दिए गए दो प्रश्नों को चलाते हैं और उनका परिणाम देखते हैं।
यूनिअन क्वेरी:
SELECT 28 AS bah UNION SELECT 35 AS bah;
परिणाम:
बाह | |
---|---|
1 | २। |
दो | ३५ |
जोइन क्वेरी:
SELECT * FROM (SELECT 38 AS bah) AS foo JOIN (SELECT 35 AS bah) AS bar ON (55=55);
परिणाम:
फू | बार | |
---|---|---|
1 | ३। | ३५ |
एक UNION ऑपरेशन दो या दो से अधिक प्रश्नों के परिणाम को एकल परिणाम सेट में रखता है। इस परिणाम सेट में उन सभी रिकॉर्डों को रखा गया है जो UNION में शामिल सभी प्रश्नों के माध्यम से वापस आ जाते हैं। इस प्रकार, मूल रूप से, एक UNION दो परिणाम सेट को एक साथ जोड़ रहा है।
एक जुड़ने वाला ऑपरेशन इन तालिकाओं के तार्किक संबंधों के आधार पर दो या अधिक तालिकाओं से डेटा प्राप्त करता है, अर्थात जुड़ने की स्थिति के आधार पर। क्वेरी में शामिल होने के लिए, एक तालिका के डेटा का उपयोग किसी अन्य तालिका से रिकॉर्ड चुनने के लिए किया जाता है। यह आपको समान डेटा लिंक करने देता है जो विभिन्न तालिकाओं पर मौजूद है।
इसे बहुत सरलता से समझने के लिए, आप कह सकते हैं कि एक UNION दो तालिकाओं से पंक्तियों को जोड़ती है जबकि एक Join दो या अधिक तालिकाओं से स्तंभों को जोड़ती है। इस प्रकार, दोनों का उपयोग n तालिकाओं से डेटा को संयोजित करने के लिए किया जाता है, लेकिन अंतर यह बैठता है कि डेटा को कैसे संयोजित किया जाता है।
नीचे UNION और JOIN के सचित्र निरूपण हैं।
उपरोक्त एक ज्वाइन ऑपरेशन का एक चित्रात्मक निरूपण है जिसमें दर्शाया गया है कि परिणाम सेट में प्रत्येक रिकॉर्ड में दोनों तालिकाओं यानी टेबल ए और टेबल बी से कॉलम होते हैं। यह परिणाम क्वेरी में लागू की गई शर्त के आधार पर वापस किया जाता है।
एक जुड़ाव आमतौर पर वियोगीकरण (सामान्यीकरण के विपरीत) का परिणाम होता है और यह एक तालिका में प्राथमिक कुंजी को नियोजित करके स्तंभ मानों को देखने के लिए एक तालिका की विदेशी कुंजी का उपयोग करता है।
उपरोक्त एक यूनिअन ऑपरेशन का सचित्र चित्रण है जिसमें दर्शाया गया है कि परिणाम सेट में प्रत्येक रिकॉर्ड दोनों में से किसी एक तालिका से एक पंक्ति है। इस प्रकार, UNION के परिणाम ने तालिका A और तालिका B से पंक्तियों को जोड़ दिया है।
आगे पढ़ना = >> MySQL UNION ने उदाहरणों के साथ समझाया
निष्कर्ष
इस लेख में, हमने प्रमुख अंतरों को देखा है आंतरिक सम्मिलित हों और बाहरी SQL में शामिल हों । हमने एक आउटर जॉइन यानि लेफ्ट जॉइन, राइट जॉइन और फुल जॉइन का वर्गीकरण भी देखा। हमने देखा है कि इनमें से प्रत्येक जुड़ने के प्रकार कैसे काम करते हैं और वे एक दूसरे से कैसे भिन्न होते हैं।
हमने इन सम्मिलित प्रकारों के बीच कुछ प्रदर्शन तुलना भी की। हमने यह भी चर्चा की कि एक संघ से कैसे अलग है।
यह भी पढ़ें = >> MySQL प्रकार में शामिल हों
आशा है कि इस लेख ने विभिन्न प्रकारों के बीच के मतभेदों के बारे में आपके संदेह को दूर करने में आपकी मदद की होगी। हमें यकीन है कि यह वास्तव में आपको तय कर देगा कि वांछित परिणाम सेट के आधार पर किस प्रकार का चयन करना है।
अनुशंसित पाठ
- उदाहरणों के साथ सत्यापन और सत्यापन के बीच सटीक अंतर
- मोडेम बनाम राउटर: सटीक अंतर को जानें
- SQL बनाम MySQL बनाम SQL सर्वर के बीच अंतर (उदाहरण के साथ)
- उदाहरणों के साथ अजगर डेटाइम ट्यूटोरियल
- LAN Vs WAN Vs MAN: नेटवर्क के प्रकारों के बीच सटीक अंतर
- उदाहरणों के साथ यूनिक्स में कमान काटें
- यूनिक्स कैट कमांड सिंटैक्स, उदाहरण के साथ विकल्प
- उदाहरणों के साथ MongoDB में कर्सर का उपयोग