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