डेटाबेस में टेबल बनाते समय, इसमें नाम और डेटा प्रकार दोनों होना चाहिए। कॉलम का डेटा प्रकार कॉलम के मानों को परिभाषित करता है, जैसे पूर्णांक, धन, बाइनरी, वर्ण, दिनांक और समय। इसलिए, यह निर्धारित करना एक डेवलपर का कार्य है कि डेटाबेस और टेबल बनाते समय प्रत्येक कॉलम में कौन से डेटा प्रकार संग्रहीत किए जाएंगे।
सरल शब्दों में, डेटा प्रकार दिशानिर्देश हैं जो SQL को यह समझने में सहायता करते हैं कि कॉलम के अंदर किस प्रकार के डेटा की आवश्यकता है। यह यह पहचानने में भी सक्षम है कि SQL कैसे संग्रहीत डेटा के साथ इंटरैक्ट करता है।
ध्यान देने वाली बात यह है कि डेटा प्रकारों में अलग-अलग डेटाबेस में अलग-अलग नाम हो सकते हैं, और ऐसे मामलों में जहां नाम समान हैं, अन्य पहलू और विवरण जैसे आकार भिन्न होंगे। इसलिए, यह अनुशंसा की जाती है कि जब भी आप समान मामलों का सामना करते हैं तो आप हमेशा दस्तावेज़ीकरण देखें।
निम्नलिखित विशेषताएँ MySQL में डेटा प्रकारों की पहचान कर सकती हैं:
- डेटा प्रकारों के मान जिन्हें अनुक्रमित किया जा सकता है और जिन्हें अनुक्रमित नहीं किया जा सकता है
- वे जिस प्रकार के मूल्यों का प्रतिनिधित्व करते हैं
- वे जिस स्थान पर कब्जा करते हैं, चाहे मान परिवर्तनशील लंबाई के हों या निश्चित लंबाई के हों
- MySQL की तुलना विशिष्ट डेटा प्रकारों के विभिन्न मानों से कैसे की जाती है
इससे पहले कि हम MySQL डेटा प्रकारों में गोता लगाएँ और कवर करें, डेटा प्रकार विवरण द्वारा उपयोग किए जाने वाले सम्मेलनों को सीखना और समझना आवश्यक है जैसा कि नीचे दिया गया है:
- (एम ):पूर्णांक प्रकारों के लिए, यह उस अधिकतम चौड़ाई को इंगित करता है जो डेटा प्रकार प्रदर्शित कर सकता है।
:यह अंकों की कुल संख्या को दर्शाता है जिसे निश्चित-बिंदु प्रकारों और फ़्लोटिंग-पॉइंट प्रकारों के लिए संग्रहीत किया जा सकता है।
:स्ट्रिंग प्रकारों के लिए, यह अधिकतम लंबाई दिखाता है
नोट:एम अधिकतम अनुमेय मूल्य डेटा प्रकार पर निर्भर करता है
• (डी ):केवल निश्चित-बिंदु प्रकारों और फ़्लोटिंग-पॉइंटिंग प्रकारों पर लागू होता है। यह पैमाने (दशमलव बिंदु का अनुसरण करने वाले अंकों की संख्या) को इंगित करता है। अधिकतम संभव मान 10 है, जबकि यह M . से अधिक महत्वपूर्ण नहीं होना चाहिए -2
• वर्गाकार कोष्ठक ([और]) परिभाषा प्रकार वैकल्पिक भागों को दिखाते हैं।
• f सपा: यह कन्वेंशन टाइमस्टैम्प, डेटटाइम और टाइम टाइप पर लागू होता है। यह भिन्नात्मक सेकंड की सटीकता का प्रतिनिधित्व करता है (अंकों की संख्या जो भिन्नात्मक सेकंड के लिए दशमलव बिंदु का अनुसरण करती है)। दिया गया fsp मान 0-6 के बीच होना चाहिए। मान 0 दर्शाता है कि दिए गए मान में कोई भिन्नात्मक भाग मौजूद नहीं है। हालांकि, ऐसे मामलों में जहां मान छोड़ दिया जाता है, तो सटीकता को 0 के रूप में दर्शाया जाता है। MySQL में, डेटा प्रकारों की तीन मुख्य श्रेणियां होती हैं जिनमें उपश्रेणियां होती हैं। प्राथमिक डेटा प्रकार हैं:
- स्ट्रिंग डेटा प्रकार
- दिनांक और समय डेटा प्रकार।
- संख्यात्मक डेटा प्रकार
MySQL द्वारा समर्थित अन्य डेटा प्रकार हैं, जैसे स्थानिक डेटा प्रकार और JSON डेटा प्रकार।
यह लेख ऊपर वर्णित सभी डेटा प्रकारों को व्यापक रूप से कवर करेगा। इसलिए डेटा प्रकारों की स्पष्ट समझ पाने के लिए, इस लेख पर बने रहें।
स्ट्रिंग डेटा प्रकार
स्ट्रिंग डेटा प्रकार मुख्य रूप से बाइनरी डेटा और सादा पाठ जैसे छवियों और फ़ाइलों को रखने के लिए उपयोग किए जाते हैं। इसके अलावा, MYSQL में मिलान पैटर्न के आधार पर स्ट्रिंग मानों की तुलना और खोज करने की क्षमता है, जैसे कि रेगुलर एक्सप्रेशन और ऑपरेटर।
MySQL द्वारा समर्थित सभी स्ट्रिंग डेटा प्रकारों का विस्तृत उदाहरण नीचे दिया गया है:
चार ( आकार ): यह एक स्ट्रिंग की निश्चित लंबाई है। इसमें या तो अक्षर, विशेष वर्ण या संख्याएँ हो सकती हैं। पैरामीटर आकार वर्णों में कॉलम की लंबाई को दर्शाता है, और यह 0-255 तक हो सकता है। डिफ़ॉल्ट आकार 1 है।
वर्चर ( आकार ): यह एक स्ट्रिंग की परिवर्तनीय लंबाई है। इसमें या तो संख्याएं, विशेष वर्ण या अक्षर होते हैं। पैरामीटर आकार कॉलम की अधिकतम लंबाई वर्णों में दिखाता है, और यह 0-65535 के बीच हो सकता है।
बाइनरी ( आकार ): ये CHAR () के बराबर हैं, केवल बाइनरी बाइट स्ट्रिंग्स को स्टोर करते हैं। पैरामीटर आकार बाइट्स में कॉलम की लंबाई निर्दिष्ट करता है। डिफ़ॉल्ट 1
. हैवर्बिनरी ( आकार ): यह VARCHAR () के बराबर है, केवल यह बाइनरी बाइट स्ट्रिंग्स को स्टोर करता है। पैरामीटर आकार कॉलम की अधिकतम लंबाई बाइट्स में निर्दिष्ट करता है।
टिनीटेक्स्ट: स्ट्रिंग्स को होल्ड करता है जिसमें अधिकतम 255 वर्ण होते हैं।
पाठ ( आकार ): स्ट्रिंग्स को होल्ड करता है जिनमें अधिकतम लंबाई 65,535 बाइट्स होती है।
ब्लॉब ( आकार ): बाइनरी लार्ज ऑब्जेक्ट्स (बीएलओबी) के लिए। वे 65,535 डेटा बाइट्स तक रखते हैं।
टिनीब्लॉब: बाइनरी लार्ज ऑब्जेक्ट्स (बीएलओबी) के लिए। इसमें 255 बाइट्स की अधिकतम लंबाई होती है।
लोंगलोब: बाइनरी लार्ज ऑब्जेक्ट्स (बीएलओबी) के लिए। वे 4,294,967,295 डेटा बाइट्स तक रखते हैं।
लॉन्गटेक्स्ट: स्ट्रिंग्स को होल्ड करता है जिसमें अधिकतम 4,294,967,295 वर्ण होते हैं।
मध्यम पाठ: ऐसे तार रखता है जिनमें अधिकतम 16,777,215 वर्ण हों।
MEDIUMBLOB: बाइनरी लार्ज ऑब्जेक्ट्स (बीएलओबी) के लिए। वे 16,777,215 डेटा बाइट्स तक रखते हैं।
सेट ( val1, val2, val3, … ): यह एक स्ट्रिंग ऑब्जेक्ट है जिसमें एक से अधिक मान होते हैं (स्ट्रिंग्स जिसमें 0 या अधिक मान होते हैं)। उन्हें ENUM की तरह ही संभावित मानों की सूची से चुना जाता है। हालांकि, एक SET सूची में, आप केवल 64 मानों तक ही सूचीबद्ध कर सकते हैं।
ENUM ( val1, val2, val3, … ): यह एक स्ट्रिंग ऑब्जेक्ट है जिसमें सभी संभावित मानों की सूची से चुना गया केवल एक मान हो सकता है। ENUM सूची में, आप अधिकतम 65535 मान सूचीबद्ध कर सकते हैं। यदि कोई मान सूची में नहीं डाला गया है, तो डाला गया मान रिक्त होगा। साथ ही, यह नोट करना आवश्यक है कि उपयोगकर्ता द्वारा दर्ज किए गए क्रम के आधार पर मानों को क्रमबद्ध किया जाता है।
दिनांक और समय डेटा प्रकार
दिनांक और समय डेटा प्रकार दिनांक समय, टाइमस्टैम्प, वर्ष, समय और दिनांक जैसे अस्थायी मान निर्दिष्ट करते हैं। उल्लिखित लौकिक प्रकारों में से प्रत्येक में शून्य शामिल हैं। जब भी कोई अमान्य मान डाला जाता है, MySQL इसका प्रतिनिधित्व नहीं कर सकता है। इसलिए, शून्य को चुना जाता है।
MySQL द्वारा समर्थित दिनांक और समय डेटा प्रकारों का एक व्यापक उदाहरण नीचे दिया गया है:
तारीख: मानक दिनांक प्रारूप क्रमशः वर्ष, महीने और दिन है (YYYY-MM-DD), और समर्थित सीमा '1000-01-01' से '9999-12-31' तक है।
डेटटाइम ( fsp ): यह तारीख और समय दोनों का मेल है। इस मामले में, मानक प्रारूप क्रमशः वर्ष, महीने, दिन, घंटे, मिनट और सेकंड है (YYYY-MM-DD hh:mm:ss)
नोट: स्वचालित आरंभीकरण प्रारंभ करने के लिए एक कॉलम में एक डिफ़ॉल्ट और अद्यतन अद्यतन जोड़ना आवश्यक है, और यह वर्तमान समय और दिनांक को अद्यतन करता है।
टाइमस्टैम्प ( fsp ): यूनिक्स युग के बाद से, टाइमस्टैम्प मान सेकंड की संख्या के रूप में संग्रहीत होते हैं जैसे ('1970-01-01 00; 00; 00' यूटीसी)। मानक प्रारूप क्रमशः वर्ष, महीने, दिन, घंटे, मिनट और सेकंड है (YYYY-MM-DD hh:mm:ss) जबकि समर्थित सीमा '('1970-01-01 00;00;01' UTC के बीच है to ('2038-01-09 03;14;07' UTC. DEFAULT_CURRENT_TIMESTAMP और ON UPDATE CURRENT_TIMESTAMP वर्तमान दिनांक और समय को स्वचालित रूप से प्रारंभ करने और अपडेट करने के लिए महत्वपूर्ण हैं।
समय ( fsp ): मानक समर्थित समय प्रारूप क्रमशः घंटे, मिनट, सेकंड है (hh:mm:ss), और समर्थित सीमा '-838:59:59' से '838:59:59' है।
वर्ष: एक वर्ष को चार अंकों के प्रारूप में दर्शाया जाता है—चार अंकों के प्रारूप में अनुमत मान 1902 से 2155 और 0000 तक होते हैं।
नोट: MySQL (8.0) का नवीनतम संस्करण दो अंकों के प्रारूप वर्ष का समर्थन नहीं करता है।
संख्यात्मक डेटा प्रकार
संख्यात्मक डेटा प्रकारों में सभी सटीक संख्यात्मक डेटा प्रकार जैसे पूर्णांक, दशमलव और संख्यात्मक शामिल होते हैं। इसमें अनुमानित संख्यात्मक डेटा प्रकार जैसे फ्लोट, डबल, डबल परिशुद्धता, और वास्तविक शामिल हैं। संख्यात्मक डेटा प्रकार बिट मान संग्रहीत करते हैं क्योंकि वे BIT डेटा प्रकारों का समर्थन करते हैं। आमतौर पर, MySQL में संख्यात्मक डेटा प्रकारों को दो श्रेणियों में विभाजित किया जाता है:हस्ताक्षरित डेटा प्रकार और अहस्ताक्षरित डेटा प्रकार; हालांकि, यह बिट डेटा प्रकारों का अपवाद है।
नीचे एक विस्तृत उदाहरण दिया गया है जिसमें MySQL द्वारा समर्थित सभी संख्यात्मक डेटा प्रकार और उनका विवरण शामिल है:
बिट ( आकार ): यह एक बिट-वैल्यू प्रकार है जिसके द्वारा प्रति मान बिट्स की संख्या को आकार के रूप में दर्शाया जाता है . पैरामीटर आकार इसमें 1 से 64 तक के मान रखने की क्षमता है, और आकार के लिए इसका डिफ़ॉल्ट मान 1 है।
टिन्यिनट ( आकार ): यह एक बहुत छोटा पूर्णांक है जिसकी हस्ताक्षरित श्रेणी -128 से 127 तक होती है जबकि इसकी अहस्ताक्षरित श्रेणी 0 से 255 तक होती है। पैरामीटर आकार प्रदर्शित होने वाली अधिकतम चौड़ाई को दर्शाता है, जो लगभग 255 है।
बूलियन: यह बूल के बराबर है
बूल: एक बूल में, गैर-शून्य मानों को सत्य माना जाता है। उसी समय, शून्य मान को असत्य माना जाता है।
INT ( आकार ): यह एक मध्यम पूर्णांक है जिसकी हस्ताक्षरित श्रेणी -2147483648 से 2147483647 तक होती है, जबकि अहस्ताक्षरित श्रेणी 0 से 4294967295 तक होती है। पैरामीटर आकार प्रदर्शित करने के लिए अधिकतम चौड़ाई निर्दिष्ट करता है, जो लगभग 255 है।
मध्यम ( आकार ): यह एक मध्यम पूर्णांक भी है जिसकी हस्ताक्षरित श्रेणी -32768 से 32767 तक होती है जबकि इसकी अहस्ताक्षरित श्रेणी 0 से 65535 तक होती है। पैरामीटर आकार प्रदर्शित करने के लिए अधिकतम चौड़ाई निर्दिष्ट करता है, जो लगभग 255 है।
स्मालिंट ( आकार ): यह एक छोटा पूर्णांक है जिसकी हस्ताक्षरित सीमा -32768 से 32767 के बीच है, जबकि अहस्ताक्षरित श्रेणी 0 से 16777215 के बीच है। आकार पैरामीटर, इस मामले में, अधिकतम प्रदर्शन चौड़ाई निर्दिष्ट करने के लिए उपयोग किया जाता है, जिसकी सीमा लगभग 255 है।
फ्लोट ( आकार, घ ): यह एक फ्लोटिंग-पॉइंट नंबर है जिसके अंकों की कुल संख्या को आकार में दर्शाया जाता है। डी पैरामीटर दशमलव बिंदु के बाद अंकों की संख्या निर्दिष्ट करने में मदद करता है।
नोट: यह पैरामीटर MySQL संस्करण 8.0.17 में पदावनत कर दिया गया है। इसलिए, इसे MySQL के भविष्य के संस्करणों में पुन:प्रस्तुत नहीं किया जाएगा।
पूर्णांक ( आकार ): यह एक INT के बराबर है (आकार )।
फ्लोट( पी ): यह एक फ्लोटिंग-पॉइंट नंबर है। पी पैरामीटर का उपयोग यह निर्धारित करने के लिए किया जाता है कि परिणामी डेटा प्रकार में FLOAT या DOUBLE का उपयोग किया जाएगा या नहीं। जब पी -मान 0 से 24 तक होता है, डेटा को FLOAT () के रूप में जाना जाता है। जबकि जब P -मान 25 से 53 तक होता है, फिर डेटा प्रकार एक डबल () में बदल जाता है।
दिसंबर ( आकार, घ ): यह एक दशमलव के बराबर है (आकार, d )
डबल ( आकार, घ ): यह एक मानक आकार . को दर्शाता है फ़्लोटिंग-पॉइंट नंबर जिसके अंकों की कुल संख्या आकार में दी गई है। डी पैरामीटर दशमलव बिंदु के बाद अंकों की संख्या निर्दिष्ट करने में मदद करता है।
दशमलव ( आकार, घ ): यह एक सटीक निश्चित-बिंदु संख्या है जिसके अंकों की कुल संख्या आकार . के संदर्भ में निर्दिष्ट है . डी पैरामीटर दशमलव बिंदु के बाद संख्या अंक निर्दिष्ट करता है। अधिकतम आकार संख्या 65 है, जबकि d अधिकतम संख्या 30 है। इसलिए, d . के लिए डिफ़ॉल्ट मान 0 है, जबकि आकार . के लिए डिफ़ॉल्ट मान 10 है।
नोट: सभी संख्यात्मक प्रकारों में अतिरिक्त विकल्प होते हैं; जीरोफिल और अहस्ताक्षरित। यदि अहस्ताक्षरित विकल्प जोड़ा जाता है, तो MySQL कॉलम में नकारात्मक मानों को अस्वीकार कर देगा। दूसरी ओर, यदि ZEROFILL विकल्प जोड़ा जाता है, तो MySQL स्वचालित रूप से उक्त कॉलम में UNSIGNED विशेषता जोड़ देगा।
अन्य डेटा प्रकार
बूलियन डेटा प्रकार
सबसे छोटा पूर्णांक प्रकार TINYINT (1), MySQL में बूलियन मानों का प्रतिनिधित्व करने के लिए उपयोग किया जाता है क्योंकि MySQL में इन-बिल्ट BOOL या BOOLEAN डेटा प्रकार नहीं होता है। इसलिए, बूल और बूलियन के साथ काम करते समय, आपको उनकी तुलना टिन्यिनट (1) से करनी चाहिए।
स्थानिक डेटा प्रकार
MySQL कई स्थानिक डेटा प्रकारों के लिए समर्थन प्रदान करता है जिनमें विभिन्न प्रकार के भौगोलिक और ज्यामितीय मान होते हैं, जैसा कि नीचे बताया गया है:
ज्यामिति: यह एक समुच्चय या बिंदु है जो किसी भी प्रकार के स्थानिक मूल्य को तब तक धारण कर सकता है जब तक उनके पास कोई स्थान हो।
बहुभुज: यह एक तलीय सतह है जिसे बहुपक्षीय ज्यामिति द्वारा दर्शाया जाता है। इसे या तो शून्य या केवल एक बाहरी और अधिक आंतरिक सीमाओं द्वारा परिभाषित किया जा सकता है।
मल्टीलाइनस्ट्रिंग: यह एक बहु-वक्र ज्यामिति है जिसमें LINESTRING मानों का संग्रह होता है।
मल्टीपोलीगॉन: यह एक बहु-सतह वस्तु है जिसे कई बहुभुज तत्वों के संग्रह द्वारा दर्शाया गया है, और यह एक द्वि-आयामी ज्यामिति है
बिंदु: यह एक बिंदु या एक जोड़ी है जिसमें X और Y निर्देशांक होते हैं। इसे ज्यामिति में एक बिंदु कहा जा सकता है जो एक ही स्थान का प्रतिनिधित्व करता है।
GEOMETRYCOLLECTION: यह GEOMETRY मानों का एक संग्रह है
LINESTRING: यह एक वक्र है जिसमें एक या अधिक-बिंदु मान होते हैं। ऐसे मामलों में जहां एक लाइन स्ट्रिंग में केवल दो बिंदु होते हैं, तो इसका मतलब है कि यह एक लाइन का प्रतिनिधित्व करता है।
बहुबिंदु: यह POINT मानों का एक संग्रह है जिससे बिंदु को किसी भी तरह से आदेश या कनेक्ट नहीं किया जा सकता है।
JSON डेटा प्रकार
MYSQL ने संस्करण 5.7.8 की स्थापना के बाद से देशी JSON डेटा प्रकार का समर्थन किया है, जिसने JSON डॉक्स के भंडारण और प्रबंधन को बहुत जल्दी और प्रभावी ढंग से अनुमति दी है। इसके अलावा, मूल JSON डेटा प्रकार इष्टतम संग्रहण प्रारूप प्रदान करने और JSON दस्तावेज़ों के स्वचालित सत्यापन के लिए ज़िम्मेदार है।
निष्कर्ष
इस लेख में MySQL डेटा प्रकारों के बारे में सभी पहलुओं को व्यापक रूप से कवर किया गया है जो आपको यह समझने में सहायता करेगा कि किस डेटा प्रकार का उपयोग किया जाना चाहिए और उनका उपयोग कैसे किया जाना चाहिए। हमें विश्वास है कि लेख MySQL के बारे में आपके ज्ञान को बेहतर बनाने में भी मदद करेगा।