डेटाबेस के साथ काम करने वाले प्रत्येक प्रोग्रामर डीएमएल ऑपरेटरों से मिले (प्रति. अंग्रेज़ी से - "डेटा हेरफेर भाषा") जैसे कि चुनते हैं, डालने, हटाएं और अद्यतन. MySQL पर्यावरण भी उपरोक्त सभी आदेशों का उपयोग अपने शस्त्रागार में करता है।
ये ऑपरेटर तार्किक रूप से उनके बारे में बोलते हैंअसाइनमेंट - रिकॉर्ड का चयन, नए मूल्यों का सम्मिलन, मौजूदा डेटा का अद्यतन, पूर्ण, या निर्दिष्ट शर्तों के अनुसार, डेटाबेस में जानकारी को हटाना। प्रशिक्षण सैद्धांतिक सामग्री में, प्रत्येक कमांड के संचालन के सिद्धांत और उनके सिंटैक्स का विस्तार से वर्णन किया गया है, हालांकि, कहीं भी उपयोग के दौरान व्यवहार में आने वाली कठिनाइयों का कोई उल्लेख नहीं है। यह सामग्री उनमें से कुछ के विचार के लिए समर्पित होगी।
डीएमएल आपरेटर एक नजर में (सम्मिलित करें)
आगे बढ़ने से पहले, प्रत्येक कार्य के उद्देश्य के बारे में एक बार फिर से और अधिक विस्तार से याद दिलाना आवश्यक है। हम दो ऑपरेटरों में अधिक विस्तार से रुचि लेंगे: डालने और अद्यतन, चूंकि यह उनसे है कि बड़ी मात्रा में डेटा को संसाधित करते समय मुख्य कठिनाइयां उत्पन्न होती हैं.
आपको कमांड से शुरुआत करनी होगी डालने, और फिर सुचारू रूप से जाएं अद्यतन। माई एसक्यूएल सिस्टम, किसी भी अन्य आधुनिक DBMS की तरह, ऑपरेशन का उपयोग करता है डालने मौजूदा प्रविष्टियों में नई प्रविष्टियाँ जोड़ने के लिएडेटाबेस टेबल। इस ऑपरेशन का सिंटैक्स बहुत सरल और सीधा है। इसमें उन क्षेत्रों की गणना होती है जहां मान दर्ज किए जाएंगे, गंतव्य - तालिका का नाम - और दर्ज किए गए डेटा की सूची। हर बार जब आप कमांड चलाते हैं डालने डेटाबेस को नए मानों के साथ अपडेट किया जाएगा।
अपडेट स्टेटमेंट
हालांकि, व्यवहार में, अक्सर होते हैंऐसी परिस्थितियाँ जिनमें एक निश्चित डेटासेट के लिए एक या अधिक विशेषता मानों को अद्यतन करना आवश्यक होता है। एक उदाहरण के रूप में, हम उस स्थिति का हवाला दे सकते हैं जब उद्यम ने मुख्य विभागों के आगे नामकरण के साथ सुधार किया। ऐसे में हर विभाग के लिए बदलाव करना जरूरी है। केवल नाम बदल दें तो समस्या का समाधान बहुत जल्दी हो जाता है। लेकिन अगर पूरे उत्पादन के प्रत्येक घटक की एन्कोडिंग बदल जाती है, जो एक नियम के रूप में, प्राथमिक कुंजी के रूप में कार्य करती है, तो यह बदले में, प्रत्येक कर्मचारी के लिए जानकारी में परिवर्तन की आवश्यकता होती है।
विचाराधीन समस्या के समाधान के लिए आवेदन कर सकते हैं डीएमएल ऑपरेटर - अद्यतन। माई एसक्यूएल-सर्वर, बड़ी संख्या में रिकॉर्ड के साथ काम कर रहा है,अपडेट स्टेटमेंट की मदद से, अनुरोधित अनुरोध को निष्पादित करेगा और समस्या का समाधान करेगा। लेकिन कभी-कभी, अद्यतन के दौरान, ऐसी कठिनाइयाँ उत्पन्न होती हैं जो पूरी तरह से स्पष्ट नहीं होती हैं और जिन्हें समझाना मुश्किल होता है। यह अभिलेखों को अद्यतन करने की कठिनाइयों के बारे में है जिस पर बाद में चर्चा की जाएगी।
सिद्धांत में क्या कम कहा जाता है ...
अद्यतन आदेश, जैसा कि ऊपर उल्लेख किया गया है,किसी तालिका में मौजूदा रिकॉर्ड को अद्यतन करने के लिए उपयोग किया जाता है। लेकिन व्यवहार में, डेटाबेस सर्वर तक पहुँचने वाले क्लाइंट हमेशा यह नहीं जानते हैं कि डेटा का एक विशेष सेट टेबल में मौजूद है या नहीं। बाद के अपडेट के लिए डेटाबेस में डेटा की उपलब्धता की प्रारंभिक जांच से समय की लागत और सर्वर की क्षमता बर्बाद हो जाती है।
ऐसा होने से रोकने के लिए, DBMS एक विशेष डिज़ाइन प्रदान करता है MySQL - सम्मिलित करें * अद्यतन करेंजिसमें एक इन्सर्ट या अपडेट कर सकते हैंएक दूसरे से स्वतंत्र रूप से दौड़ें। यही है, जब एक निश्चित स्थिति के लिए तालिका में एक रिकॉर्ड होता है, तो एक अद्यतन होगा। यदि विचाराधीन स्थिति के लिए कोई डेटा नहीं मिलता है, तो MySQL सर्वर डेटा जोड़ने के अनुरोध को निष्पादित करने में सक्षम होगा।
डुप्लिकेट होने पर डेटा अपडेट करना
इसका एक महत्वपूर्ण घटक डालने-डेटाबेस प्रबंधन प्रणाली में क्वेरी MySQL - "डुप्लिकेट कुंजी अपडेट पर" उपसर्ग। अनुरोध का पूरा सिंटैक्स इस प्रकार है: "डुप्लिकेट कुंजी अपडेट पर test_table (नियोक्ता_आईडी, नाम) मान (1, "अब्रामोव") में डालें last_modified = Now ();"।
इस तरह के अनुरोध का उपयोग किया जा सकता हैकर्मचारियों के कार्यों का पंजीकरण, उदाहरण के लिए, उद्यम के प्रवेश द्वार को पार करने का समय निर्धारित करना, उसके बाद ब्रेक के समय की गणना करना और देरी की पहचान करना। तालिका में कई प्रविष्टियाँ नहीं करने के लिए, प्रत्येक कर्मचारी के लिए निरंतर अद्यतन के साथ रिकॉर्ड रखना पर्याप्त है। यह डुप्लिकेट चेक डिज़ाइन है जो आपको ऐसा करने की अनुमति देता है।
दरअसल समस्याओं के बारे में...
चौकी पर कर्मचारियों के कार्यों को दर्ज करने के उपरोक्त उदाहरण को ध्यान में रखते हुए, स्व-बढ़ते का उपयोग (ऑटो_वेतन वृद्धि) वे फ़ील्ड जो आमतौर पर प्राथमिक कुंजी मानों को पॉप्युलेट करने के लिए उपयोग किए जाते हैं (मुख्य_चाभी) कमांड का उपयोग करते समय MySQL अद्यतन के साथ निर्माण में डालने ऑटो_वृद्धि, क्षेत्र लगातार बढ़ रहे हैं।
इसी तरह, सब कुछ तब होता है जबडुप्लिकेट पाए जाने पर एक प्रतिस्थापन निर्माण का उपयोग किया जाता है। "ऑटो-इन्क्रीमेंट" मान आवश्यक न होने पर भी बढ़ा दिया जाता है। इस वजह से, लापता मूल्यों या एक सीमा के अतिप्रवाह के साथ समस्याएं होती हैं, जो बाद में डेटाबेस प्रबंधन प्रणालियों की खराबी का कारण बनती हैं।
समस्या पैदा करने की सबसे अधिक संभावना
वर्णित समस्या पर विचार किया जाना चाहिए वेब- डेवलपर्स, चूंकि यह बहु-उपयोगकर्ता सिस्टम (इंटरनेट साइट, पोर्टल, आदि) में सबसे आम है, जब सिस्टम में बड़ी संख्या में प्रक्रियाएं की जाती हैं डालने और MySQL अपडेट करें।
पीएचपी-डेटाबेस को बहुत बार एक्सेस किया जाता है। इसलिए, परिभाषित क्षेत्रों द्वारा अधिकतम मूल्य की उपलब्धि स्वत: वेतनवृद्धि, जल्दी से होता है, और उत्पन्न होने वाली कठिनाइयों का विश्लेषण करते समय, कारणों को तुरंत स्थापित करना संभव नहीं होगा।
इसलिए, डेवलपर्स को सलाह दी जाती है कि वे निर्माण के उपयोग को ध्यान से देखें डुप्लीकेट कुंजी पर एक टीम में MySQL अद्यतन। चुनते हैं - डेटाबेस सर्वर तक पहुँचने पर प्रश्नत्रुटियों के बिना काम करेगा, लेकिन डेटाबेस में नए रिकॉर्ड जोड़ना अप्रिय स्थितियों से भरा होता है, जो बाद में गंभीर समस्याएं पैदा करता है। वैकल्पिक रूप से, ऑटो-इंक्रीमेंटिंग फ़ील्ड के लिए यह अनुशंसा की जाती है कि पहले उनके लिए रिकॉर्ड्स की मौजूदगी की जाँच करें, और फिर उन्हें अपडेट करें।