MySQL में बीआईटी और टिन्यिनट के बीच क्या अंतर है?




bit tinyint (4)

आप किस मामले में उपयोग करेंगे? क्या कोई अंतर है? जो मैं आमतौर पर बुलियन स्टोर करने के लिए दृढ़ता इंजन द्वारा उपयोग किया जाता है?


इन सभी सैद्धांतिक चर्चाएं बहुत अच्छी हैं, लेकिन हकीकत में, कम से कम यदि आप MySQL का उपयोग कर रहे हैं और वास्तव में SQLServer के लिए भी हैं, तो अपने बूलियन के लिए गैर-बाइनरी डेटा के साथ चिपकना सबसे आसान कारण है कि जब आप काम करना आसान हो डेटा, क्वेरीिंग आदि को आउटपुट कर रहे हैं। यह विशेष रूप से महत्वपूर्ण है यदि आप MySQL और SQLServer (यानी आप दोनों के बीच डेटा सिंक करते हैं) के बीच अंतःक्रियाशीलता प्राप्त करने का प्रयास कर रहे हैं, क्योंकि बीआईटी डेटाटाइप का संचालन उनमें से दो में अलग है। यदि आप एक संख्यात्मक डेटाटाइप के साथ चिपकते हैं तो अभ्यास में आपको बहुत कम परेशानी होगी। मैं MySQL के लिए BOOL या BOOLEAN के साथ चिपकने की अनुशंसा करता हूं जो TINYINT (1) के रूप में संग्रहीत हो जाता है। यहां तक ​​कि जिस तरह से MySQL वर्कबेंच और MySQL व्यवस्थापक बीआईटी डेटाटाइप प्रदर्शित करते हैं, वह अच्छा नहीं है (यह बाइनरी डेटा के लिए थोड़ा सा प्रतीक है)। तो व्यावहारिक रहें और खुद को परेशानियों को बचाएं (और दुर्भाग्य से मैं अनुभव से बात कर रहा हूं)।


एक TINYINT एक 8-बिट पूर्णांक मान है, एक बीआईटी क्षेत्र 1 बिट, बीआईटी (1), और 64 बिट्स, बिट (64) के बीच स्टोर कर सकता है। एक बुलियन मूल्यों के लिए, बीआईटी (1) काफी आम है।


बीआईटी को केवल 0 और 1 (और न्यूल, अगर फ़ील्ड को न्यूल के रूप में परिभाषित नहीं किया गया है) की अनुमति देनी चाहिए। TINYINT (1) किसी भी वैल्यू को अनुमति देता है जिसे एक बाइट, -128..127 या 0..255 में संग्रहीत किया जा सकता है, इस पर निर्भर करता है कि यह हस्ताक्षरित है या नहीं (1 दिखाता है कि आप केवल एक अंक का उपयोग करना चाहते हैं, लेकिन यह करता है आपको एक बड़ा मूल्य संग्रहित करने से नहीं रोकता है)।

5.0.3 से पुराने संस्करणों के लिए, बीआईटी का अर्थ TINYINT (1) के रूप में किया जाता है, इसलिए वहां कोई अंतर नहीं है।

बीआईटी में "यह एक बूलियन" अर्थपूर्ण है, और कुछ ऐप्स टिन्यिनट (1) को उसी तरह मानेंगे (जिस तरह से MySQL इसका इलाज करने के लिए उपयोग किया जाता है), इसलिए यदि वे प्रकार की जांच करते हैं तो ऐप्स कॉलम को चेक बॉक्स के रूप में प्रारूपित कर सकते हैं और उस पर आधारित प्रारूप पर फैसला करें।


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

बिट अब के लिए सुरक्षित नहीं है। मैं tinyint (1) में बदल गया और पूरी तरह से काम किया। मेरा मतलब है कि अगर आपको 1 या 0 और टिनिंट (1) है तो इसके लिए आपको केवल एक मूल्य की आवश्यकता है, यह ठीक है





tinyint