MySQL JOIN: एक विवरण, आदेश और सिफारिशों का उपयोग करने का एक उदाहरण
इंटरनेट संसाधनों के डेटाबेस का विकासव्यावहारिक तौर पर एमएस एसक्यूएल सर्वर में विकसित मानक डेटाबेस से भिन्न नहीं है। आमतौर पर, ऐसे संसाधनों के लिए, मेरी एसक्यूएल भाषा का उपयोग किया जाता है, हालांकि इसे स्थानीय उपयोग के लिए मानक सॉफ़्टवेयर उत्पादों के विकास के लिए इस्तेमाल किया जा सकता है। लेकिन यह लेख इस बारे में नहीं है।
अक्सर प्रत्येक में डेटाबेस के साथ काम करते समयभाषाओं की विभिन्न रिपोर्टों, ग्राफों और इतने पर उत्पादन के लिए डेटा का चयन करने का कार्य है एक नियम के तौर पर, ऐसे कार्यों को कार्यान्वित करते समय, यह एक आवश्यक नहीं है कि कई तालिकाओं का इस्तेमाल करना, उन्हें एक प्रश्न में संयोजित करना, इसके निर्माण को काफी जटिल करना। इसी समय, यह ध्यान रखना आवश्यक है कि डेटा कैसे आउटपुट होगा, टेबल कैसे "खींचा जाए" और प्रोग्रामर के लिए इसका सबसे अधिक स्वीकार्य क्या होगा। ऐसी समस्याओं को हल करने के लिए, MySQL भाषा के मानक निर्माणों में से एक जुड़ें।
शब्द की अवधारणा जुड़ें
डेटाबेस विकास भाषाएं, इससे कोई फर्क नहीं पड़ता कि वास्तव में क्या होता हैयह भाषा है, अंग्रेजी-भाषा शब्दकोशों के मानक शब्द एक आधार के रूप में उपयोग किए जाते हैं (इसलिए, बशर्ते कि आप अंग्रेजी जानते हैं, तालिकाओं के साथ काम करना आपके लिए बहुत आसान होगा)। नमूना में तालिकाओं के कनेक्शन को लागू करने के लिए, एक ही शब्द का उपयोग किया जाता है - शामिल हों डेटाबेस प्रोग्रामिंग भाषा में मेरा एसक्यूएल प्रयोग किया जाता है। इस आधिकारिक शब्द का अनुवाद उसी भाषा के समान है- "एकीकरण"
MySQL- की व्याख्या करना, निर्माण, औरइनमें से कोई भी एक ही हो जाएगा। यदि हम डिजाइन के उद्देश्य को समझते हैं, अर्थात् इसके संचालन की योजना, हमें निम्नलिखित अर्थ मिलते हैं: निर्माण विभिन्न तालिकाओं या नेस्टेड क्वेरी से आवश्यक नमूने एक नमूने में एकत्र करने की अनुमति देगा।
संघ के लिए संरचनाओं के प्रकार
यदि प्रोग्रामर को से एक नमूना इकट्ठा करने की जरूरत हैकई तालिकाओं और वह जानता है कि रिपोर्ट में किस मुख्य फ़ील्ड और किस प्रकार के डेटा की आवश्यकता है, तो आप वांछित परिणाम प्राप्त करने के लिए यूनियन के बुनियादी डिजाइनों में से एक का उपयोग कर सकते हैं। बुनियादी निर्माण (तालिकाओं में शामिल होने के लिए) चार हैं:
- अंदरूनी जुड़ें
- क्रॉस में शामिल हों
- वाम जोड़ना
- सही जुड़ें
कार्य के आधार पर, प्रत्येक मानक डिजाइन विभिन्न परिणाम देगा, जो आपको कम समय में विभिन्न मापदंडों पर रिपोर्ट प्राप्त करने की अनुमति देगा।
बाद में उपयोग के लिए टेबल बनाना और पॉपुलेट करना
शुरू करने से पहले, उदाहरण के लिए, विचार करेंडेटा फेडरेशन संरचनाओं के साथ काम करने के लिए तंत्र, कई टेबल तैयार करने के लायक है जिसके साथ हम काम करना जारी रखेंगे। यह ऑपरेटरों के सभी सिद्धांतों को दृष्टि से दिखाने में मदद करेगा, इसके अतिरिक्त, शुरुआती प्रोग्रामिंग टेबल की सभी मूलभूत बातें आसानी से समझेंगे।
पहली तालिका कुछ वस्तुओं का वर्णन करेगी जिनके साथ एक व्यक्ति लगातार अपने पूरे जीवन में मिलता है।
दूसरी तालिका में हम पहली तालिका से ऑब्जेक्ट्स के कुछ गुणों का वर्णन करते हैं ताकि हम भविष्य में उनके साथ काम कर सकें।
आम तौर पर, दो टेबल एक उदाहरण का उपयोग करके अपना काम दिखाने के लिए पर्याप्त होंगे। अब आप हमारे डिजाइनों का व्यावहारिक विचार शुरू कर सकते हैं।
आंतरिक शामिल हों
MySQL के निर्माण का उपयोग करते समय - इनर में शामिल होंइसकी कुछ विशेषताओं पर विचार करना उचित है। यह डिज़ाइन आपको दोनों टेबलों से केवल उन रिकॉर्ड्स का चयन करने की अनुमति देता है जो पहले और दूसरी टेबल दोनों में हैं। यह कैसे काम करता है? पहली तालिका में हमारे पास एक मास्टर कुंजी - आईडी है, जो तालिका में रिकॉर्ड की सामान्य संख्या इंगित करती है।
दूसरी तालिका बनाते समय, वही कुंजीअनुक्रम संख्या के रूप में उपयोग किया जाता है, उदाहरणों में एक उदाहरण देखा जा सकता है। डेटा का चयन करते समय, चयन ऑपरेटर परिणामस्वरूप केवल उन रिकॉर्ड्स को निर्धारित करेगा, जिसमें अनुक्रम संख्याएं मिलती हैं, जिसका अर्थ है कि वे पहले और दूसरी टेबल में हैं।
डिजाइन का उपयोग करते समय आपको समझने की जरूरत हैआपको किस प्रकार का डेटा प्राप्त करने की आवश्यकता है। सबसे आम गलती, विशेष रूप से नौसिखिया डेटाबेस प्रोग्रामर के लिए, इनर जॉइन निर्माण का तर्कहीन और गलत उपयोग है। उदाहरण के तौर पर, MySQL इनर जॉइन में शामिल हों, हम एक स्क्रिप्ट पर विचार कर सकते हैं जो पहले वर्णित और भरे हुए तालिकाओं से ऑब्जेक्ट्स और उनके गुणों के बारे में जानकारी लौटाएगा। लेकिन डिजाइन का उपयोग करने के कई तरीके हो सकते हैं। इस संबंध में, मेरा एसक्यूएल एक बहुत ही लचीली भाषा है। तो, आप MySQL इनर जॉइन का उपयोग करने के उदाहरणों पर विचार कर सकते हैं।
किसी भी पैरामीटर निर्दिष्ट किए बिना तालिकाओं का संयोजन। इस मामले में, हमें ऐसी योजना का नतीजा मिलता है:
अगर हम सेवा शब्द का उपयोग करते हुए इंगित करते हैं, तोतालिकाओं में रिकॉर्ड की मुख्य कुंजी को ध्यान में रखना आवश्यक है, तो नमूना का नतीजा नाटकीय रूप से बदल जाएगा। इस मामले में, हमें एक नमूना मिलता है जो केवल उन पंक्तियों को लौटाता है जिनमें एक ही मास्टर कुंजी होती है।
एक तीसरा उपयोग केस भी संभव है।निर्माण, जब "ऑन" शब्द के माध्यम से पूछताछ में संकेत दिया जाता है, जिसके अनुसार तालिकाओं में शामिल होना चाहिए। इस मामले में, नमूना निम्नलिखित डेटा वापस करेगा:
बाएं जुड़ने का उपयोग करने की विशेषताएं
यदि हम MySQL का उपयोग करके तालिकाओं में शामिल होने का एक और तरीका मानते हैं - निर्माण में शामिल हों, तो आप आउटपुट वाले डेटा में अंतर देख सकते हैं। इस तरह की एक प्रणाली वाम का निर्माण है।
वामपंथी निर्माण का उपयोग करना MySQL में कुछ विशेषताएं हैं और, इनर की तरह, परिणाम प्राप्त होने की स्पष्ट समझ की आवश्यकता होती है।
इस मामले में, सभी प्रविष्टियों का चयन पहले किया जाएगा।पहली तालिका से, और आगे वे गुणों की दूसरी तालिका से रिकॉर्ड में शामिल हो जाएंगे। साथ ही, यदि पहली तालिका में एक रिकॉर्ड है, उदाहरण के लिए, "मल", और दूसरी तालिका में इसके लिए कोई गुण नहीं है, तो वाम ऑपरेटर इस रिकॉर्ड मान शून्य के सामने प्रिंट करेगा, जो प्रोग्रामर को बताता है कि इस प्रकार के ऑब्जेक्ट पर कोई संकेत नहीं है। ।
इस डिज़ाइन का उपयोग करने से आप यह निर्धारित करने की अनुमति देंगे कि कौन से फ़ील्ड या, उदाहरण के लिए, स्टोर में सामान की कीमत नहीं है, वारंटी अवधि और इसी तरह।
बाएं उपयोग के मामले
ऑपरेटर के अभ्यास में विचार के लिएबाएं MySQL संरचनाओं में शामिल हों पहले वर्णित सारणी का उपयोग करें। मान लें कि आपको स्टोर में मौजूद उत्पादों की पूरी सूची चुनने की आवश्यकता है, और जांचें कि उनमें से कौन से संकेत या गुण चिह्नित नहीं हैं। इस मामले में, नमूना सभी उत्पादों को प्रदर्शित करेगा, और जिनके पास संपत्ति नहीं है, खाली मान दर्ज किए जाएंगे।
एक में शामिल होने का उपयोग करना
एक पैरामीटर के रूप में, एक जॉइन में न केवल उन फ़ील्ड को निर्दिष्ट करना शामिल हो सकता है जिनके द्वारा तालिकाओं को जोड़ा जाना चाहिए, लेकिन इसमें क्लॉज ऑपरेटर भी शामिल हो सकता है।
उदाहरण के लिए, स्क्रिप्ट पर विचार करें जो चाहिएहमारे पास केवल उन रिकॉर्ड्स पर लौटें जो चिह्नित नहीं हैं। इस मामले में, निर्माण में शामिल होने के लिए एक शर्त ऑपरेटर जोड़ना आवश्यक है और इंगित करें कि परिणामस्वरूप वास्तव में क्या लौटाया जाना चाहिए।
जब MySQL में उपयोग किया जाता है - कहां, आपको स्पष्ट रूप से समझने की आवश्यकता है कि केवल उन रिकॉर्ड्स दिखाए जाएंगे कि निर्दिष्ट स्थिति लागू होती है, और नमूना इस तरह दिखेगा:
ऐसे प्रश्न आपको नमूने बनाने की अनुमति देते हैंविशिष्ट डेटा जो प्रोग्रामर द्वारा चुनी गई स्थिति से संबंधित है। संयुक्त सारणी से डेटा चयन पैरामीटर को अधिकतम रूप से परिष्कृत करते समय, ऐसी कई स्थितियों को निर्दिष्ट करना संभव है।
टेबल में डेटा को संशोधित करने के लिए शामिल हों का उपयोग करना
वास्तव में, सार्वभौमिक में शामिल होने का निर्माण है। यह नमूने में अतिरिक्त स्थितियों को पेश करने के लिए न केवल विभिन्न नमूने बनाने की अनुमति देता है, बल्कि एक से कई तालिकाओं में प्रश्नों को शामिल करने की अनुमति देता है। डिज़ाइन का उपयोग अन्य डेटा संचालन के लिए भी किया जा सकता है। इसलिए, तालिका में डेटा बदलने के लिए जुड़ें इस्तेमाल किया जा सकता है। इसके बजाय, तालिका में या उन मामलों में स्थितियों को स्पष्ट करने के लिए, यदि आपको समान स्थितियों के तहत कई तालिकाओं में डेटा अपडेट करने की आवश्यकता है।
उदाहरण के लिए, इस समस्या पर विचार करें। तीन टेबल हैं जिनमें कुछ डेटा हैं। एक क्वेरी का उपयोग कर दोनों तालिकाओं में डेटा को बदलना आवश्यक है। इस तरह के कार्यों को हल करने के लिए बस जॉइन स्ट्रक्चर के साथ अद्यतन कमांड में इस्तेमाल किया जा सकता है। निर्माण का प्रकार खुद ही जुड़ता है, जैसे डेटा नमूनाकरण के मामले में, प्रोग्रामर जो परिणाम प्राप्त करना चाहता है।
सबसे सरल उदाहरण पर विचार करें। समान शर्तों के लिए एक अनुरोध के साथ डेटा अपडेट करना आवश्यक है। ऐसे अनुरोध डेटाबेस के साथ काम को अनुकूलित करने के लिए बनाए गए हैं। यदि आप एक प्रश्न में डेटा के साथ सभी कुशलताएं कर सकते हैं तो प्रत्येक तालिका के लिए अलग-अलग प्रश्न क्यों लिखें? MySQL अद्यतन का एक उदाहरण हमारे मामले में शामिल होगा:
जटिल प्रश्नों का निर्माण
डेटाबेस के साथ काम करते समय अक्सरन केवल कई तालिकाओं के संघ के साथ, बल्कि उप-सामानों के उपयोग के साथ प्रश्नों को बनाना जरूरी है। नौसिखिया डेटाबेस प्रोग्रामर को समझने के लिए इस तरह के कार्य काफी मुश्किल हैं। कठिनाई यह है कि आपको प्रत्येक चरण के माध्यम से सोचना होगा, यह निर्धारित करना होगा कि किस तालिका या क्वेरी से आपको प्राप्त करने की आवश्यकता है और भविष्य में उन्हें उनके साथ काम करने की आवश्यकता होगी।
अधिक विशिष्ट समझ के लिए, आप विचार कर सकते हैं(MySQL में शामिल हों) जटिल प्रश्नों के उदाहरण। यदि आप एक नौसिखिया हैं और बस डेटाबेस के साथ काम करना शुरू कर रहे हैं, तो ऐसे प्रशिक्षण केवल लाभान्वित होंगे। आदर्श विकल्प MySQL बाएं उदाहरण शामिल होंगे।
यह अनुरोध हमें 58 अनुबंध रिकॉर्ड वापस कर देगाबिक्री जिसके लिए चयनित तिथि पर नकदी शेष भरा या मौजूद है। इस मामले में, यह वर्तमान तारीख है। नमूना में भी एक शर्त जोड़ा गया है कि अनुबंध के शीर्षक में प्रतीक होना चाहिए - "123"। स्क्रीन पर प्रदर्शित जानकारी (डेटा) को सॉर्ट किया जाएगा - अनुबंध संख्या द्वारा आदेश दिया गया।
निम्नलिखित उदाहरण उन सभी भुगतानों पर डेटा प्रदर्शित करेगा जिसमें अनुबंध संख्या इंगित की जाएगी।
Subqueries का उपयोग करना
जैसा कि पहले उल्लेख किया गया है, डेटाबेस के साथ काम करते समयडेटा न केवल टेबल, बल्कि एक क्वेरी के साथ एक तालिका भी जोड़ा जा सकता है। यह डिज़ाइन मुख्य रूप से क्वेरी और उसके अनुकूलन को तेज़ करने के लिए उपयोग किया जाता है।
उदाहरण के लिए, यदि एक टेबल से जरूरी हैकई सौ फ़ील्ड हैं और कहें, एक हजार रिकॉर्ड, केवल दो फ़ील्ड्स का चयन करें, फिर आपको एक क्वेरी का उपयोग करना चाहिए जो केवल आवश्यक फ़ील्ड लौटाता है और इसे मुख्य डेटा नमूना के साथ जोड़ता है। MySQL का चयन करें उदाहरण के रूप में, आप इस प्रकार की एक क्वेरी पर विचार कर सकते हैं:
ये मानक के सभी उपयोग नहीं हैंMySQL संरचना, लेकिन केवल मानक वाले। जॉइन स्ट्रक्चर का उपयोग कैसे करें और इसके किस रूप में प्रोग्रामर स्वयं निर्णय लेता है, लेकिन यह निष्पादित करने और ध्यान में रखना महत्वपूर्ण है कि क्वेरी निष्पादित करते समय क्या परिणाम प्राप्त किया जाना चाहिए।