MySQL को वास्तव में कैसे मास्टर करें?


13

मैं उसी समय के लिए mysql का उपयोग कर रहा हूं जब मैं PHP का उपयोग कर रहा हूं। हालाँकि मैं PHP में 10x अधिक आत्मविश्वास महसूस करता हूँ; या कोई अन्य प्रोग्रामिंग भाषा। लेकिन मैं वास्तव में वास्तव में एसक्यूएल समझ नहीं कर सकता। मेरा मतलब है, मैं चयन कर सकता हूं, अपडेट कर सकता हूं, सम्मिलित कर सकता हूं, हटा सकता हूं, जुड़ सकता हूं, आदि, लेकिन जब अधिक जटिल चीजें आती हैं तो मैं खो जाता हूं। अधिक जटिल चयन विवरण कैसे लिखा जाए, इंडेक्स का ठीक से उपयोग कैसे करें, किस इंजन का उपयोग करना है, आदि।

किसी कारण से मैं वास्तव में mysql डॉक्स का पालन करना मुश्किल पाती हूं, लेकिन php वालों का अनुसरण करना आसान है।

मैं यह सोचना शुरू कर रहा हूं कि शायद मेरा दिमाग इस तरह से तार-तार हो गया है कि प्रोग्रामिंग बनाते हैं लेकिन एसक्यूएल भ्रमित हो जाता है। मुझे नहीं पता। ज्यादातर लोगों को लगता है कि रेगेक्स इतना भ्रामक है, लेकिन मेरे लिए यह अधिक वैज्ञानिक अर्थ रखता है कि कैसे एक sql स्टेटमेंट का निर्माण किया जाए। कृपया मुझे गलत मत समझो, मैं एसक्यूएल से नफरत नहीं कर रहा हूं, मुझे वास्तव में यह पसंद है, मैं इसे बेहतर समझना चाहता हूं।

वास्तव में MySQL में महारत हासिल करने का सबसे अच्छा / सबसे तेज़ तरीका है?

जब मैं कहता हूं कि "गुरु" का मतलब गुरुओं के बीच का गुरु नहीं है, तो मेरा मतलब है कि मैं उन सभी प्रश्नों का पता लगाने के लिए पर्याप्त स्मार्ट हूं, जो मुझे स्वयं सहायता के बिना मांगे जाते हैं।


2
क्या आप SQL या MySQL के बारे में बात कर रहे हैं, क्योंकि वे बहुत अलग चीजें हो सकती हैं। एक जटिल एसक्यूएल क्वेरी लिखने से प्रतिकृति की स्थापना और प्रशासन एक बहुत अलग काम है। मुझे संदेह है कि यह समय का एक कार्य है। आप लगभग निश्चित रूप से एसक्यूएल की तुलना में PHP लिखने में बहुत अधिक समय बिताते हैं, भले ही आप उन्हें 'उसी समय की राशि' के लिए उपयोग कर रहे हों।
स्टीवन एवर्स

@SnOrfus आपके पास PHP में अधिक कोड लिखने के बारे में एक अच्छा बिंदु है। MySQL एकमात्र रिलेशनल डेटाबेस भाषा है जिसका मैंने कभी उपयोग किया है। जब मैंने कहा कि "एसक्यूएल" मैं सिर्फ सामान्य भाषा में उस प्रकार का अर्थ था।
जद इसाक्स

ऐसी चीजें करें जो उपयोगी हों। वास्तविक दुनिया में आपके सामने आने वाली विभिन्न समस्याओं का पता लगा सकते हैं। इस तरह से आप पाठ्यपुस्तक सिद्धांत की तुलना में अधिक जटिल होते हैं। कंसोल में चीजों का परीक्षण करें और देखें कि क्या आप पीएचपी का उपयोग किए बिना इच्छित परिणाम प्राप्त कर सकते हैं। उदाहरण के लिए, रेन फ्री डेटाबेस इंट्रोडक्शन क्लास जिसे स्टैनफोर्ड ने लॉन्च किया था, सोशल नेटवर्क से संबंधित कुछ अच्छे अभ्यास हैं।
जेम्स पी।

बहुत से लोग PHP से नफरत करते हैं (विभिन्न कारणों से, उनमें से कुछ बहुत अच्छे हैं), लेकिन इसका प्रलेखन उत्कृष्ट है। माईएसक्यूएल डॉक्स की तुलना में पीएचपी डॉक्स को आसानी से फॉलो करने का एक कारण आपको भाषाओं की प्रकृति नहीं बल्कि प्रलेखन की प्रकृति है।
टीआरजी २३'१४

जवाबों:


10

इसका इस्तेमाल करें

संबंधपरक डेटाबेस कैसे काम करते हैं, यह आंतरिक रूप से बहुत से लोगों के लिए मुश्किल है - लेकिन यह बहुत मूल्यवान है। जब आप SQL के साथ अधिक काम करते हैं, तो यह आपके मस्तिष्क में अपना काम करेगा। खुद को धकेलते रहो।

जब कुछ अजीब लगता है, तो जांच करें

Chrome में, मैंने इस खोज इंजन को सेट किया है, इसलिए मुझे केवल डॉक्स (dev.mysql.com की खोज बेकार है) खोजने के लिए "m [सर्च क्वेरी]" टाइप करना है: {google: basurL} search? {Google: RLI} {गूगल: acceptedSuggestion} {गूगल: originalQueryForSuggestion} sourceid = क्रोम और यानी = {inputEncoding} & q = साइट: dev.mysql.com/doc/refman/5.1/en+%s

यदि डॉक्स का उत्तर नहीं है, तो freenode पर #mysql में पॉप करें और देखें कि क्या कोई व्यक्ति कुछ अंतर्दृष्टि प्रदान कर सकता है।

पढ़ें!

एक बार जब आप समझ जाते हैं कि संबंधपरक डेटाबेस अपनी बात कैसे करते हैं, तो आप थोड़ा और जानना चाहेंगे कि MySQL उन जादुई प्रश्नों के साथ क्या कर रहा है जो आप लिख रहे हैं। मैं उच्च प्रदर्शन MySQL की अत्यधिक अनुशंसा करूंगा - यह आपके समय के बहुत लायक है।


1
अच्छी खबर यह है कि मेरे पास पहले से ही आपके द्वारा सुझाई गई किताब है, लेकिन अभी तक इसमें से कुछ भी नहीं हुआ है। धन्यवाद! क्रोम सर्च को सेटअप करने के निर्देशों के लिए +1।
जद इसहाक

मेरे पास किताब है, अभी तक नहीं पढ़ा है।
क्रोसेंब्लम

@tehShrike आपने क्रोम पर ऐसा कैसे किया?
जयबनी

@ संजय दाएं से url बार पर राइट-क्लिक करें और "एडिट सर्च इंजन" पर जाएं
TehShrike

9

सबसे पहले और सबसे महत्वपूर्ण, जुड़ने की पूरी समझ हासिल करें। सिर्फ भीतर और बायां हिस्सा ही नहीं जुड़ता। जानिए एक क्रॉस जॉइन क्या करता है और एक पूर्ण बाहरी जुड़ता है। उन परिस्थितियों को जानें जिनसे आपको एक विशेष प्रकार के जुड़ाव का चयन करना होगा। यह समझ लें कि वे विनिमेय नहीं हैं और जो क्वेरी बाईं ओर का उपयोग करती है वह आंतरिक परिणाम का उपयोग करने वाले की तुलना में भिन्न परिणाम लौटा सकती है। (एक को लगता है कि यह स्पष्ट होगा, लेकिन मैंने बहुत से सवाल पढ़े हैं, जहाँ लोग अपनी समस्या को कम करके, कुछ बेतरतीब ढंग से अलग-अलग तरीकों से कोशिश करते हैं।)

अगला वास्तव में समुच्चय को समझता है और वे कैसे काम करते हैं। एक मानक तरीके से ग्रुप बाय न करने से मैसकल आपको दूर हो जाएगा। लेकिन समूह को पूरी तरह से सही तरीके से परिभाषित करने के लिए अनुशासन है। यह समझने में आपकी सहायता करेगा कि आप क्या कर रहे हैं और अपने डेटाबेस को अन्य डेटाबेस में आसानी से स्थानांतरित कर सकते हैं।

जानें कि केस स्टेटमेंट क्या करता है।

जब जटिल प्रश्न करना चंक्स में काम करना सीखते हैं। प्रत्येक चंक पर सत्यापित करें कि आपके पास अपेक्षित परिणाम हैं। उदाहरण के लिए, मान लीजिए कि आपको पिछले 3 महीनों में वापस आए आदेशों पर एक रिपोर्टिंग क्वेरी लिखने की ज़रूरत है और वापसी का कारण और साथ ही ग्राहक के लिए संपर्क जानकारी भी है। पहला कदम पिछले तीन महीनों में वापस आए आदेशों को प्राप्त करना है। एक बार जब आप जानते हैं कि आपके पास ठोस है, तो आप वापसी के कारण पर जानकारी जोड़ सकते हैं। एक बार आपके पास वह ठोस हो, तो आप उसे वापस करने वाले ग्राहक को जोड़ सकते हैं। एक बार जब आपके पास वह ठोस हो, तो उस व्यक्ति के लिए संपर्क जानकारी जोड़ें। प्रत्येक चरण में, अपने परिणामों की जांच करें और देखें कि क्या वे समझ में आते हैं। इस मामले में, मैं शायद प्रति आदेश केवल एक रिकॉर्ड के साथ समाप्त करना चाहता हूं। यदि किसी भी मध्यवर्ती चरण में, परिणामों की संख्या ऊपर या नीचे जाती है, तो आप जानते हैं कि आपके पास क्वेरी के साथ एक प्रोब्लम है। कभी-कभी बिल्डिंग ब्लॉक्स में, आप यह सत्यापित करने के लिए अतिरिक्त फ़ील्ड देखना चाहेंगे कि जानकारी सही है या नहीं। मैं इन्हें एक अलग लाइन पर रखता हूं और अगले चरण के माध्यम से काम करने के रूप में उन्हें टिप्पणी करता हूं (मुझे पता है कि मैं सही हूं एक बार उन्हें हटाकर) इसलिए वे फिर से आसानी से देखने के लिए उपलब्ध हैं अगर एक और शिकन जोड़कर क्वेरी को मजाकिया बना दिया। आप अपने परिणामों की तरह क्या दिखना चाहिए, इसकी गहन समझ के बिना आप सही तरीके से जटिल क्वेरी नहीं कर सकते। यह सोचकर कि यह ठीक है क्योंकि कुछ परिणाम लौटाए गए हैं, यह गारंटी देता है कि आपके पास गलत परिणाम हैं जो समय का एक अच्छा हिस्सा है। दाएं) तो वे आसानी से फिर से देखने के लिए उपलब्ध हैं यदि एक और शिकन जोड़कर क्वेरी को मजाकिया बना दिया जाए। आप अपने परिणामों की तरह क्या दिखना चाहिए, इसकी गहन समझ के बिना आप सही तरीके से जटिल क्वेरी नहीं कर सकते। यह सोचकर कि यह ठीक है क्योंकि कुछ परिणाम लौटाए गए हैं, यह गारंटी देता है कि आपके पास गलत परिणाम हैं जो समय का एक अच्छा हिस्सा है। दाएं) तो वे आसानी से फिर से देखने के लिए उपलब्ध हैं यदि एक और शिकन जोड़कर क्वेरी को मजाकिया बना दिया जाए। आप अपने परिणामों की तरह क्या दिखना चाहिए, इसकी गहन समझ के बिना आप सही तरीके से जटिल क्वेरी नहीं कर सकते। यह सोचकर कि यह ठीक है क्योंकि कुछ परिणाम लौटाए गए हैं, यह गारंटी देता है कि आपके पास गलत परिणाम हैं जो समय का एक अच्छा हिस्सा है।

यहां कुछ बुनियादी चीजों की एक सूची दी गई है, जिनके बारे में सोचने के बिना आपको SQL में क्या करना चाहिए:

  1. पहले एक सीधे अप का चयन करें जिसमें कोई जोड़ नहीं है (और कोई चयन नहीं *) लेकिन चयन पर शर्तों के साथ
  2. आपको पता होना चाहिए कि दो या दो से अधिक तालिकाओं को कैसे मिलाएं और रिकॉर्ड प्राप्त करें जो सभी तालिकाओं में हैं
  3. आपको पता होना चाहिए कि दो या दो से अधिक तालिकाओं को कैसे मिलाया जाए और वे रिकॉर्ड प्राप्त करें जो सभी तालिकाओं में हैं, लेकिन एक से कई संबंधों के कई पक्षों के साथ तालिका से केवल एक रिकॉर्ड लौटाएं
  4. आपको एक तालिका में रिकॉर्ड प्राप्त करने में सक्षम होना चाहिए, लेकिन संबंधित तालिका में नहीं
  5. आपको किसी रिपोर्ट के लिए डेटा एकत्र करने में सक्षम होना चाहिए
  6. आपको एक तालिका में एक रिकॉर्ड सम्मिलित करने में सक्षम होना चाहिए
  7. आपको एक तालिका में एक रिकॉर्ड अपडेट करने में सक्षम होना चाहिए
  8. आपको एक तालिका में एक रिकॉर्ड को हटाने में सक्षम होना चाहिए
  9. आपको कर्सर के बिना तालिका में रिकॉर्ड का एक समूह सम्मिलित करने में सक्षम होना चाहिए
  10. आपको एक कर्सर के बिना तालिका में रिकॉर्ड के एक समूह को अपडेट करने में सक्षम होना चाहिए
  11. आपको एक कर्सर के बिना तालिका में रिकॉर्ड के समूह को हटाने में सक्षम होना चाहिए
  12. आपको एक लेन-देन में कई क्रियाएं करने और त्रुटि के जाल को संभालने में सक्षम होना चाहिए
  13. आपको रिकॉर्ड्स का संघ बनाने में सक्षम होना चाहिए और पता होना चाहिए कि UNION वाइस यूनिअन का उपयोग कब करना है
  14. आपको कुछ मानदंडों के आधार पर एक फ़ील्ड के डेटा को अलग करने में सक्षम होना चाहिए (CASE का उपयोग करके)

एक बार जब आप अपने मूल एसक्यूएल ज्ञान के साथ सहज महसूस करते हैं, तो अपने डेटाबेस संरचना को जानें। मैं बहुत जटिल डीबीएस के खिलाफ जटिल प्रश्न लिख सकता हूं मैं अन्य लोगों की तुलना में बहुत तेजी से समर्थन करता हूं क्योंकि मैं संरचना को समझता हूं और यह सोचने के लिए नहीं है कि चीजें कहां संग्रहीत हैं। यदि आप तालिका संरचना और विदेशी मुख्य संबंधों को समझते हैं और जहां लुकअप मान संग्रहीत किए जाते हैं और कॉलम का मतलब है (न केवल उनका नाम, बल्कि उनमें कौन सा डेटा है) तो आप उस डेटाबेस को क्वेरी करने में विशेषज्ञ हो सकते हैं। किसी भी नई नौकरी में पहली बात मैं डीबी संरचना को अच्छी तरह से समझता हूं।


3

SQL सीखने के लिए मेरी राय में (और यह वास्तव में आप जो पूछ रहे हैं उसके लिए, MySQL-Specics बाद में आ सकते हैं), आपको अपने आप को PHP- शैली प्रोग्रामिंग के नियंत्रण प्रवाह से हटा देना चाहिए । विशेष रूप से घोषणात्मक भाषाओं के प्रतिमान में सोचें:

एसक्यूएल यह निर्धारित करता है कि आप क्या चाहते हैं, कैसे नहीं। यदि आप मानसिक रूप से उत्तरार्द्ध को हटाने की कोशिश कर सकते हैं, तो पूर्व समय में पालन करेगा। इस लेयर को अपने दिमाग में रखें और MySQL (या Oracle या जो भी) की चिंता करें

अनुप्रयोग तर्क SQL बनाम प्रक्रियात्मक / OO कोड PHP में हो सकता है। उदाहरण के लिए, जब किसी चीज़ के लिए डेटाबेस से प्रश्न किए जा रहे हैं, तो आप लगातार एक उपयोगकर्ता तालिका में शामिल हो सकते हैं और शायद कई पूर्व-प्रश्न बनाने के बजाय उचित अधिकार सुनिश्चित करने के लिए एक अनुमति तालिका। insert into ... select ...डेटा सत्यापन सुनिश्चित करने के लिए नामित मूल्यों के बजाय एक समान चयन ( ) के माध्यम से डाला जा सकता है ।

वैसे भी, मैं अत्यधिक कॉड प्राइमरी और फोकस चयन, प्रोजेक्शन, जॉइनिंग, यूनियन और अंतर पर ध्यान देने की सलाह देता हूं । दिन के अंत में, अवधारणाएं सीधे-आगे होती हैं और आप 80% की संभावना को पूरा कर सकते हैं जो आप उनके माध्यम से करना चाहते हैं। बाकी का पालन कर सकते हैं।


+1 दूसरे महान सलाह के लिए और मैंने इसके बारे में कभी नहीं सोचा था!
जेडी इसाके

2

सबसे तेज़ तरीका मुझे कुछ भी "मास्टर" करने के लिए मिला, इसके साथ खुद को चुनौती देना था। डेटा का एक सेट लें और आठ से दस अलग-अलग चीजों को लिखें जिनके लिए आप क्वेरी करना चाहते हैं। छात्रों का एक समूह जिसे आप ग्रेड बिंदु औसत से विभाजित सभी की औसत आयु का पता लगाना चाहते हैं जो निकटतम पूर्ण संख्या में हो सकते हैं। फिर उनके लिए क्वेरीज़ लिखें। एक तालिका से शुरू करें, फिर अधिक जोड़ें। डेटा जुड़ने और कार्यों में बनाया अभ्यास करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.