SQL JOIN एक क्लॉज है जिसका उपयोग कई तालिकाओं को संयोजित करने और रिलेशनल डेटाबेस में एक सामान्य फ़ील्ड के आधार पर डेटा को पुनः प्राप्त करने के लिए किया जाता है। डेटाबेस पेशेवर डेटा अखंडता को सुनिश्चित करने और सुधारने के लिए सामान्यीकरण का उपयोग करते हैं। विभिन्न सामान्यीकरण रूपों में, डेटा को कई तार्किक तालिकाओं में वितरित किया जाता है। SQL सर्वर तालिकाओं में डेटा अखंडता को लागू करने के लिए ये तालिकाएँ संदर्भात्मक बाधाओं - प्राथमिक कुंजी और विदेशी कुंजियों का उपयोग करती हैं। नीचे दी गई छवि में, हमें डेटाबेस सामान्यीकरण प्रक्रिया की एक झलक मिलती है।
विभिन्न SQL JOIN प्रकारों को समझना
SQL JOIN कई संबंधपरक तालिकाओं को मिलाकर सार्थक डेटा उत्पन्न करता है। ये तालिकाएँ एक कुंजी का उपयोग करके संबंधित हैं और इनमें एक-से-एक या एक-से-अनेक संबंध हैं। सही डेटा प्राप्त करने के लिए, आपको डेटा आवश्यकताओं को जानना चाहिए और सही जॉइन मैकेनिज्म को जानना चाहिए। SQL सर्वर एकाधिक जॉइन का समर्थन करता है और प्रत्येक विधि में एकाधिक तालिकाओं से डेटा पुनर्प्राप्त करने का एक विशिष्ट तरीका होता है। नीचे दी गई छवि समर्थित SQL सर्वर जॉइन को निर्दिष्ट करती है।
एसक्यूएल इनर जॉइन
SQL इनर जॉइन में उन तालिकाओं की पंक्तियाँ शामिल हैं जहाँ शामिल होने की शर्तें संतुष्ट हैं। उदाहरण के लिए, नीचे दिए गए वेन आरेख में, आंतरिक जुड़ाव तालिका A और तालिका B से मेल खाने वाली पंक्तियों को लौटाता है।
नीचे दिए गए उदाहरण में, निम्नलिखित बातों पर ध्यान दें:
- हमारे पास दो टेबल हैं - [कर्मचारी] और [पता]।
- एसक्यूएल क्वेरी को [कर्मचारी].[एम्पिड] और [पता]।[आईडी] कॉलम में जोड़ा गया है।
क्वेरी आउटपुट दोनों तालिकाओं में मौजूद EmpID के कर्मचारी रिकॉर्ड लौटाता है।
आंतरिक जुड़ाव दोनों तालिकाओं से मेल खाने वाली पंक्तियों को लौटाता है; इसलिए, इसे इक्वी जॉइन के रूप में भी जाना जाता है। यदि हम इनर कीवर्ड निर्दिष्ट नहीं करते हैं, तो SQL सर्वर इनर जॉइन ऑपरेशन करता है।
एक अन्य प्रकार के इनर जॉइन में, एक थीटा जॉइन, हम ON क्लॉज में इक्वलिटी ऑपरेटर (=) का उपयोग नहीं करते हैं। इसके बजाय, हम गैर-समानता ऑपरेटरों जैसे <और> का उपयोग करते हैं।
चुनें * Table1 T1, Table2 T2 से जहां T1.Price
सेल्फ-जॉइन में, SQL सर्वर टेबल को अपने साथ जोड़ता है। इसका मतलब है कि तालिका का नाम खंड से दो बार प्रकट होता है।
नीचे, हमारे पास एक तालिका [Emp] है जिसमें कर्मचारियों के साथ-साथ उनके प्रबंधकों का डेटा भी है। सेल्फ-जॉइन पदानुक्रमित डेटा को क्वेरी करने के लिए उपयोगी है। उदाहरण के लिए, कर्मचारी तालिका में, हम प्रत्येक कर्मचारी और उनके रिपोर्टिंग प्रबंधक का नाम जानने के लिए सेल्फ़-जॉइन का उपयोग कर सकते हैं।
उपरोक्त क्वेरी [Emp] टेबल पर सेल्फ-जॉइन करती है। यह EmpMgrID कॉलम को EmpID कॉलम से जोड़ता है और मेल खाने वाली पंक्तियों को लौटाता है।
क्रॉस जॉइन में, SQL सर्वर दोनों तालिकाओं से एक कार्टेशियन उत्पाद देता है। उदाहरण के लिए, नीचे दी गई छवि में, हमने तालिका A और B के लिए क्रॉस-जॉइन किया है।
क्रॉस जॉइन तालिका A से प्रत्येक पंक्ति को तालिका B में उपलब्ध प्रत्येक पंक्ति से जोड़ता है। इसलिए, आउटपुट को दोनों तालिकाओं के कार्टेशियन उत्पाद के रूप में भी जाना जाता है। नीचे दी गई छवि में, निम्नलिखित पर ध्यान दें:
क्रॉस-जॉइन आउटपुट में, [कर्मचारी] तालिका की पंक्ति 1 [पता] तालिका की सभी पंक्तियों के साथ जुड़ती है और शेष पंक्तियों के लिए समान पैटर्न का अनुसरण करती है।
यदि पहली तालिका में पंक्तियों की संख्या x है और दूसरी तालिका में पंक्तियों की संख्या n है, तो क्रॉस जॉइन आउटपुट में x*n पंक्तियों की संख्या देता है। आपको बड़ी टेबल पर क्रॉस जॉइन से बचना चाहिए क्योंकि यह बड़ी संख्या में रिकॉर्ड लौटा सकता है और SQL सर्वर को इस तरह के व्यापक डेटा को संभालने के लिए बहुत अधिक कंप्यूटिंग शक्ति (CPU, मेमोरी और IO) की आवश्यकता होती है।
जैसा कि हमने पहले बताया, इनर जॉइन दोनों तालिकाओं से मेल खाने वाली पंक्तियों को लौटाता है। SQL बाहरी जुड़ाव का उपयोग करते समय, यह न केवल मेल खाने वाली पंक्तियों को सूचीबद्ध करता है, बल्कि यह अन्य तालिकाओं से बेजोड़ पंक्तियों को भी लौटाता है। बेजोड़ पंक्ति बाएँ, दाएँ या पूर्ण खोजशब्दों पर निर्भर करती है।
नीचे दी गई छवि उच्च-स्तर पर बाएँ, दाएँ और पूर्ण बाहरी जुड़ाव का वर्णन करती है।
SQL लेफ्ट आउटर जॉइन दोनों टेबल की मैचिंग रो और लेफ्ट टेबल से बेजोड़ रो देता है। यदि बाईं तालिका के रिकॉर्ड में दाईं तालिका में कोई मेल खाने वाली पंक्तियाँ नहीं हैं, तो यह रिकॉर्ड को NULL मानों के साथ प्रदर्शित करता है।
नीचे दिए गए उदाहरण में, बायां बाहरी जुड़ाव निम्नलिखित पंक्तियों को लौटाता है:
SQL दायाँ बाहरी जुड़ाव दोनों तालिकाओं की मिलान पंक्तियों के साथ-साथ दाएँ तालिका से बेजोड़ पंक्तियों को लौटाता है। यदि दाएँ तालिका के रिकॉर्ड में बाएँ तालिका में कोई मेल खाने वाली पंक्तियाँ नहीं हैं, तो यह रिकॉर्ड को NULL मानों के साथ प्रदर्शित करता है।
नीचे दिए गए उदाहरण में, हमारे पास निम्न आउटपुट पंक्तियाँ हैं:
एक पूर्ण बाहरी जुड़ाव आउटपुट में निम्नलिखित पंक्तियाँ लौटाता है:
पिछले उदाहरणों में, हम जॉइन ऑपरेशन करने के लिए SQL क्वेरी में दो तालिकाओं का उपयोग करते हैं। अधिकतर, हम कई तालिकाओं को एक साथ जोड़ते हैं और यह प्रासंगिक डेटा लौटाता है।
नीचे दी गई क्वेरी कई इनर जॉइन का उपयोग करती है।
आइए निम्नलिखित चरणों में क्वेरी का विश्लेषण करें:
एक बार जब आप एक से अधिक जॉइन के साथ क्वेरी निष्पादित करते हैं, तो क्वेरी ऑप्टिमाइज़र निष्पादन योजना तैयार करता है। यह एक लागत-अनुकूलित निष्पादन योजना तैयार करता है जो संसाधन उपयोग के साथ जुड़ने की शर्तों को संतुष्ट करता है- उदाहरण के लिए, नीचे वास्तविक निष्पादन योजना में, हम कई नेस्टेड लूप (इनर जॉइन) और हैश मैच (इनर जॉइन) को कई जॉइनिंग टेबल से डेटा को मिलाते हुए देख सकते हैं। ।
मान लीजिए कि हमारे पास टेबल कॉलम में NULL मान हैं, और हम उन कॉलम पर टेबल में शामिल होते हैं। क्या SQL सर्वर NULL मानों से मेल खाता है?
NULL मान एक दूसरे से मेल नहीं खाते। इसलिए, SQL सर्वर मेल खाने वाली पंक्ति वापस नहीं कर सका। नीचे दिए गए उदाहरण में, हमारे पास [कर्मचारी] तालिका के EmpID कॉलम में NULL है। इसलिए, आउटपुट में, यह केवल [EmpID] 2 के लिए मिलान वाली पंक्ति लौटाता है।
SQL बाहरी जुड़ने की स्थिति में हम इस NULL पंक्ति को आउटपुट में प्राप्त कर सकते हैं क्योंकि यह बेजोड़ पंक्तियों को भी लौटाता है।
इस लेख में, हमने विभिन्न SQL जॉइन प्रकारों की खोज की। SQL जॉइन का उपयोग करते समय याद रखने और लागू करने के लिए यहां कुछ महत्वपूर्ण सर्वोत्तम अभ्यास दिए गए हैं।एसक्यूएल सेल्फ-जॉइन
एसक्यूएल क्रॉस जॉइन
SQL बाहरी जुड़ाव
बाएं बाहरी जुड़ाव
दायां बाहरी जुड़ाव
पूर्ण बाहरी जुड़ाव
SQL एकाधिक तालिकाओं के साथ जुड़ता है
USE [AdventureWorks2019]GOSELECT e.[BusinessEntityID] ,p.[FirstName] ,p.[MiddleName] ,p.[LastName] ,e.[JobTitle],d.[Name] AS [Department] ,d. [GroupName] ,edh.[StartDate] FROM [HumanResources]। .[BusinessEntityID] =edh.[BusinessEntityID] इनर जॉइन [मानव संसाधन]।
NULL मान और SQL जुड़ते हैं
एसक्यूएल सर्वोत्तम प्रथाओं में शामिल होता है