SQL में डेटा प्रकार का परिचय

जावास्क्रिप्ट के विपरीत, SQL में मजबूत टाइपिंग है। प्रत्येक तालिका में, प्रत्येक स्तंभ का अपना निश्चित डेटा प्रकार होता है।

बहुत सारे डेटा प्रकार हैं, लेकिन जावा भाषा के विपरीत, उनमें से बहुत सारे हैं, क्योंकि सभी अवसरों के लिए डेटा प्रकार नहीं हैं। डेटाबेस डेटा के आकार पर बहुत निर्भर होते हैं, इसलिए कई डेटा प्रकार केवल लंबाई में एक दूसरे से भिन्न होते हैं।

कुल मिलाकर, डेटा प्रकारों को 5 समूहों में विभाजित किया जा सकता है:

  • संख्यात्मक प्रकार
  • स्ट्रिंग प्रकार
  • दिनांक और समय संग्रहीत करने के प्रकार
  • ऑब्जेक्ट्स: आमतौर पर बाइट्स के संग्रह के रूप में दर्शाया जाता है
  • परिवहन : JSON और XML

आमतौर पर अलग-अलग DBMS के पास अभी भी अपने डेटा प्रकार होते हैं। प्रत्येक DBMS की अपनी विशेषज्ञता होती है, इसलिए नए डेटा प्रकार जोड़ना एक बहुत ही सामान्य बात है।

एक और बात यह है कि सिर्फ एक नया डेटा प्रकार जोड़ना ही काफी नहीं है, आपको ऐसे कार्यों को जोड़ने की जरूरत है जो इसके साथ काम करेंगे, साथ ही इस काम को सुविधाजनक और तेज बनाएं।

यदि आप किसी औद्योगिक (उद्यम) DBMS पर काम करते हैं, तो सबसे अधिक संभावना है कि आपको इसके डेटा प्रकारों और इसके कार्यों से निपटना होगा। जिसके लिए 2-5 अच्छी किताबें पढ़ना जरूरी होगा।

SQL के साथ हमारे परिचित होने के भाग के रूप में, हम डेटा प्रकारों के तीन मुख्य समूहों पर विचार करेंगे:

  • नंबर
  • स्ट्रिंग्स
  • पिंड खजूर।

SQL में संख्यात्मक प्रकार

SQL में, संख्यात्मक प्रकार तीन समूहों में विभाजित होते हैं:

  • पूर्णांक प्रकार
  • निश्चित बिंदु संख्याएं (दशमलव स्थानों की निश्चित संख्या)
  • दशमलव संख्याएं

आइए पूर्णांकों से शुरू करें । उनमें से केवल 5 हैं, और उन्हें एक तालिका में वर्णित किया जा सकता है:

# नाम टाइप करें बाइट्स में लंबाई जावा से एनालॉग न्यूनतम मूल्य अधिकतम मूल्य
1 टिनयिंट 1 बाइट -128 127
2 छोटा 2 छोटा -32.768 32.767
3 मध्यम 3 -8,388,608 8,388,607
4 int यहाँ 4 int यहाँ -2,147,483,648 2,147,483,647
5 बिगिनट 8 लंबा -2 63 2 63-1

डेटा प्रकार जावा डेटा प्रकारों के समान हैं, लेकिन एक पूर्णांक प्रकार भी है जो तीन बाइट लंबा है। यह आकार को बचाने के लिए किया जाता है।

अगला फ़्लोटिंग पॉइंट प्रकार आते हैं , जैसे जावा में, उनमें से केवल दो हैं:

# नाम टाइप करें बाइट्स में लंबाई जावा से एनालॉग न्यूनतम मूल्य अधिकतम मूल्य
1 तैरना 4 तैरना -3.40ई+38 +1.18ई+38
2 दोहरा 8 दोहरा -1.79ई+308 +1.79ई+308

फिर, कोई नई बात नहीं। जावा में सब कुछ वैसा ही है। हालाँकि, जावा के विपरीत, SQL का एक और विशेष प्रकार है, निश्चित-बिंदु वास्तविक संख्या। इसे दशमलव कहा जाता है।

आमतौर पर इस प्रकार का उपयोग धन की मात्रा को संग्रहित करने के लिए किया जाता है। जब इस प्रकार का नाम लिखा जाता है, तो इसके बाद आमतौर पर यह संकेत दिया जाता है कि दशमलव बिंदु से पहले और बाद में संख्या में कितने दशमलव स्थान हैं। सामान्य प्रारूप इस तरह दिखता है:

DECIMAL(total_characters, after_comma)

और एक छोटा सा उदाहरण:

salary DECIMAL(5,2)

इस प्रकार हमने इस तथ्य का वर्णन किया है कि वेतन स्तंभ में पूर्णांक (अधिकतम 3 दशमलव स्थान) और एक भिन्नात्मक भाग - 2 दशमलव स्थान हो सकते हैं।

DECIMAL प्रकार द्वारा समर्थित वर्णों की अधिकतम संख्या 65 है।

SQL में स्ट्रिंग प्रकार

डेटाबेस में Rows को दो रूपों में Store किया जा सकता है:

  • निश्चित लंबाई के तार
  • चर लंबाई के साथ तार

फिक्स्ड-लेंथ स्ट्रिंग्स को CHAR के रूप में निर्दिष्ट किया गया है :

CHAR(length)

निश्चित लंबाई का अर्थ है कि इस स्तंभ के सभी मानों में वर्णों की निश्चित संख्या होगी।

एक निश्चित लंबाई स्ट्रिंग का एक उदाहरण:

country_code CHAR(2)

चर लंबाई के तार VARCHAR प्रकार द्वारा निर्दिष्ट किए गए हैं :

VARCHAR(max_length)

परिवर्तनीय लंबाई का अर्थ है कि इस स्तंभ के सभी मानों में किसी भी लंबाई का पाठ होगा, लेकिन अधिकतम लंबाई से अधिक नहीं।

चर लंबाई स्ट्रिंग उदाहरण:

phone VARCHAR(12)

फिक्स्ड लेंथ स्ट्रिंग्स का बहुत बड़ा फायदा है। यदि क्लाइंट ने SQL सर्वर को तालिका से 1,000,000 वीं पंक्ति वापस करने के लिए कहा, और तालिका में पंक्तियाँ निश्चित लंबाई की हैं, तो पंक्ति की लंबाई को जानकर, आप वांछित से संबंधित बाइट्स की आसानी से गणना कर सकते हैं पंक्ति।

लाइनों की एक चर लंबाई के मामले में, तालिका में वांछित पंक्ति को जल्दी से खोजना संभव नहीं होगा। ArrayList और LinkedList तक पहुँचने की गति याद रखें, यहाँ स्थिति लगभग समान है।

आइए तुलना करें कि डेटा प्रकार के आधार पर विभिन्न लंबाई के तार तालिका में कैसे संग्रहीत किए जाएंगे।

पंक्ति चार (4) स्टोर करने के लिए बाइट वचरर(4) स्टोर करने के लिए बाइट
'' '' 4 '' 1
'अब' 'अब' 4 'अब' 3
'ए बी सी डी' 'ए बी सी डी' 4 'ए बी सी डी' 5
'abcdefgh' 'ए बी सी डी' 4 'ए बी सी डी' 5

टिप्पणी। VARCHAR प्रकार को समान लंबाई के लिए एक और बाइट की आवश्यकता होती है, क्योंकि इसमें स्ट्रिंग की लंबाई को अतिरिक्त रूप से संग्रहीत करना होता है।

एसक्यूएल में अस्थायी प्रकार

SQL में दिनांक और समय संग्रहीत करने के लिए विशेष प्रकार भी होते हैं। कुल पाँच प्रकार हैं:

# नाम टाइप करें जावा डेटटाइम एपीआई से एनालॉग उदाहरण न्यूनतम मूल्य अधिकतम मूल्य
1 तारीख लोकलडेट '2022-06-30' '1000-01-01' '9999-12-31'
2 समय स्थानीय समय 'एचएच: एमएम: एसएस [.फ्रैक्शन]' '-838:59:59.000000' '838:59:59.000000'
3 दिनांक समय स्थानीय दिनांक समय '1000-01-01 00:00:00.000000' '9999-12-31 23:59:59.999999'
4 TIMESTAMP तारीख '1970-01-01 00:00:01.000000' '2038-01-19 03:14:07.999999'
5 वर्ष 1901 2155

प्रश्नों में सभी डेटा को एक स्ट्रिंग के रूप में लिखा जाता है - सिंगल कोट्स में। प्रवेश प्रारूप सबसे बड़े से सबसे छोटे तक जाता है:

  • वर्ष
  • महीना
  • दिन
  • घंटा
  • मिनट
  • दूसरा
  • एक सेकंड के अंश

DATE, TIME और DATETIME प्रकारों को पारंपरिक रूप से Java DateTme API के प्रकारों के अनुरूप माना जा सकता है: LocalDate, LocalTime, LocalDateTime। तर्क उसी के बारे में है।

TIMESTAMP प्रकार 1970 की शुरुआत (एक UNIX ऑपरेटिंग सिस्टम मानक) के बाद से मिलीसेकंड में डेटा संग्रहीत करता है। यह इस रूप में है कि वे जावा भाषा में दिनांक प्रकार द्वारा संग्रहीत किए जाते हैं।

और अंत में, YEAR प्रकार है, जो 1 बाइट लंबा है और 1 से 255 तक के मानों को संग्रहीत करता है। इसलिए, इसके लिए उपलब्ध वर्षों की सीमा 1901-2155 है। वर्ष 1900 को इस प्रकार से संग्रहीत नहीं किया जा सकता है, क्योंकि मान 0 का उपयोग NULL मान को एनकोड करने के लिए किया जाता है।

एसक्यूएल में वस्तुओं को संग्रहित करना

बड़ी लंबाई की वस्तुओं या ग्रंथों को संग्रहित करने के लिए विशेष प्रकार होते हैं। हम उन पर विस्तार से नहीं जाएंगे, लेकिन फिर भी मैं उन्हें सूचीबद्ध करूंगा:

# नाम टाइप करें व्याख्या
1 मूलपाठ लंबे टेक्स्ट को स्टोर करने के लिए उपयोग किया जाता है। इस क्षेत्र पर तुलना और छँटाई करते समय, केवल पहले 100 वर्णों का उपयोग किया जाता है।
2 ब्लॉब नाम बाइट लार्ज ऑब्जेक्ट के लिए है। बाइट्स के संग्रह के रूप में संग्रहीत। उदाहरण के लिए, डेटाबेस में चित्रों को संग्रहीत करने के लिए उपयोग किया जा सकता है।
3 सीएलओबी नाम चार लार्ज ऑब्जेक्ट के लिए है। लंबे टेक्स्ट को स्टोर करने के लिए उपयोग किया जाता है।
4 ENUM आपको मानों का एक निश्चित सेट सेट करने और उनमें से एक को मान के रूप में संग्रहीत करने की अनुमति देता है।
5 तय करना आपको मूल्यों का एक निश्चित सेट सेट करने और उनमें से किसी भी सबसेट को मूल्य के रूप में संग्रहीत करने की अनुमति देता है। आमतौर पर उन्हें बाइनरी मास्क के रूप में स्टोर करता है।

सैद्धांतिक रूप से, आप किसी भी जावा ऑब्जेक्ट को बाइट्स के सेट के रूप में क्रमबद्ध कर सकते हैं और इसे डेटाबेस में BLOB के रूप में संग्रहीत कर सकते हैं। वस्तु को सहेजना कोई समस्या नहीं है। उसके साथ आगे कैसे काम करें?

मान लीजिए कि एक तालिका एक लाख वस्तुओं को क्रमबद्ध रूप में संग्रहीत करती है - आप उनके माध्यम से कैसे खोजेंगे? एक DBMS केवल एक निश्चित प्रकार के डेटा का समर्थन करता है जब यह इसके साथ काम करने के लिए कार्यों का एक व्यापक सेट प्रदान करता है।