जवाबों:
TINYINT एक 8-बिट पूर्णांक मान है, एक BIT फ़ील्ड 1 बिट, BIT (1) और 64 बिट्स, BIT (64) के बीच संग्रहीत कर सकता है। एक बुलियन मूल्यों के लिए, बीआईटी (1) बहुत आम है।
से संख्यात्मक प्रकार का अवलोकन ;
बीआईटी [(एम)]
एक बिट-फ़ील्ड प्रकार। M प्रति बिट की संख्या को 1 से 64 तक इंगित करता है। M को छोड़ा गया है तो डिफ़ॉल्ट 1 है।
यह डेटा प्रकार MySQL के लिए MySQL 5.0.3 में जोड़ा गया था, और 5.0.5 में MEMORY, InnoDB, BDB और NDBCLUSTER तक बढ़ाया गया था। 5.0.3 से पहले, BIT TINYINT (1) का एक पर्याय है।
TINYINT [(M)] [UNSIGNED] [ZEROFILL]
बहुत छोटा पूर्णांक। हस्ताक्षरित सीमा -128 से 127 है। अहस्ताक्षरित सीमा 0 से 255 है।
इसके अतिरिक्त इस पर विचार करें;
BOOL, BOOLEAN
ये प्रकार टिनिट (1) के पर्यायवाची हैं। शून्य का मान गलत माना जाता है। गैर-शून्य मानों को सच माना जाता है।
boolean
एक बाइट लगेगा, भले ही यह वास्तव में थोड़ा सा हो, इसलिए v5.0.3 के बाद एक BIT (1) बेहतर है?
BOOL
/ BOOLEAN
के TINYINT(1)
बजाय उपनाम हैं BIT
। ज़रूर, वे सभी एक पूरी बाइट पर कब्जा कर लेते हैं, लेकिन शब्दार्थ BIT
बहुत अधिक उपयुक्त होगा।
ये सभी सैद्धांतिक चर्चाएं महान हैं, लेकिन वास्तव में, यदि आप MySQL और वास्तव में SQLServer के लिए उपयोग कर रहे हैं, तो कम से कम, अपने बूलियंस के लिए गैर-द्विआधारी डेटा के साथ छड़ी करना सबसे अच्छा कारण है कि जब आप के साथ काम करना आसान हो 'डेटा का उत्पादन, क्वेरी करना वगैरह। यह विशेष रूप से महत्वपूर्ण है यदि आप MySQL और SQLServer (यानी आप दोनों के बीच डेटा को सिंक करते हैं) के बीच अंतर को प्राप्त करने की कोशिश कर रहे हैं, क्योंकि दोनों में BIT डेटाटाइप का हैंडलिंग अलग है। यदि आप एक संख्यात्मक डेटाटाइप के साथ चिपके रहते हैं तो आपको बहुत कम परेशानी होगी। मैं MySQL के लिए BOOL या BOOLEAN से चिपके रहने की सलाह दूंगा जो कि TINYINT (1) के रूप में संग्रहीत हो जाता है। यहां तक कि जिस तरह से MySQL वर्कबेंच और MySQL एडमिनिस्ट्रेटर BIT डेटाटाइप दिखाते हैं वह अच्छा नहीं है (यह बाइनरी डेटा के लिए थोड़ा प्रतीक है)।
BIT को केवल 0 और 1 (और NULL की अनुमति देना चाहिए, यदि फ़ील्ड को NULL के रूप में परिभाषित नहीं किया गया है)। TINYINT (1) किसी भी मूल्य को एकल बाइट में संग्रहीत करने की अनुमति देता है, -128 ..127 या 0..255 इस पर निर्भर करता है कि यह अहस्ताक्षरित है या नहीं (1 दिखाता है कि आप केवल एक अंक का उपयोग करना चाहते हैं, लेकिन यह करता है आपको बड़ा मूल्य संचय करने से नहीं रोकते)।
5.0.3 से अधिक पुराने संस्करणों के लिए, BIT को TINYINT (1) के रूप में व्याख्या की जाती है, इसलिए वहां कोई अंतर नहीं है।
BIT में एक "यह एक बूलियन है" शब्दार्थ है, और कुछ ऐप्स TINYINT (1) को उसी तरह से विचार करेंगे (जिस तरह से MySQL ने इसका इलाज किया था), इसलिए ऐप कॉलम को चेक बॉक्स के रूप में प्रारूपित कर सकते हैं यदि वे प्रकार की जांच करते हैं और उसके आधार पर एक प्रारूप तय करें।
गलत हो सकता है लेकिन:
टाइनींट 0 और 255 के बीच का पूर्णांक है
बिट या तो 1 या 0 है
इसलिए मेरे लिए बिट बुलियन का विकल्प है
अपने अनुभव से मैं आपको बता रहा हूं कि बीआईटी को लिनक्स ओएस प्रकार (उबंटू पूर्व के लिए) पर समस्या है। मैंने विंडोज़ पर अपना डीबी विकसित किया और लाइनक्स पर सब कुछ तैनात करने के बाद, मुझे उन प्रश्नों से समस्या थी जिन्हें बीआईटी डेटा टाइप के लिए टेबल से डाला या चुना गया था।
बिट अभी के लिए सुरक्षित नहीं है। मैंने टिंटिंट (1) में बदलाव किया और पूरी तरह से काम किया। मेरा मतलब है कि आपको केवल अंतर करने के लिए एक मूल्य की आवश्यकता है अगर यह 1 या 0 है और टिनीट (1) यह उसके लिए ठीक है