2011-11-08 13 views
35

मुझे लगता है कि INT (1) TINYINT (1) जैसा ही है, लेकिन मुझे वास्तव में कोई जानकारी नहीं है। जब भी मेरे पास मूल्य होते हैं जो केवल एक पूर्णांक हो सकता है (उदाहरण के लिए एक मान 0-9), मैंने हमेशा आईएनटी (1) का उपयोग यह कहने के लिए किया है कि यह एक पूर्णांक है और यह केवल एक वर्ण होगा, जिसका मुझे लगता है कि यह केवल 0 से 9 के मूल्य हो सकता है (यदि मैं गलत हूं तो कृपया मुझे यह समझाएं)। मैंने हमेशा अन्य प्रकार के आईएनटी को नजरअंदाज कर दिया है कि आप संख्या को इस तरह कास्ट कर सकते हैं। मैं कोई MySQL समझदार नहीं हूं और इससे अधिक जटिल चीजों से बचने के लिए आप इसके साथ क्या कर सकते हैं।MySQL में INT (1) बनाम TINYINT (1) का उपयोग करने में कोई अंतर है?

तो मेरा सवाल है, यदि आप प्रत्येक प्रकार के लिए 1 की लंबाई परिभाषित करते हैं तो विभिन्न प्रश्नांक INT, TINYINT, SMALLINT, MEDIUMINT, और BIGINT के बीच कोई अंतर है ;? यदि नहीं, तो क्या मुझे वैसे भी उनका उपयोग करना चाहिए (मैं उन्हें अधिक अर्थपूर्ण अर्थ के लिए उपयोग कर देख सकता हूं, TINYINT केवल INT से अधिक विशिष्ट है)? यदि हां, तो क्या मैं आसानी से (और/या मुझे चाहिए) बस अपने डेटाबेस के माध्यम से जा सकता हूं और अपने सभी आईएनटी (1) फ़ील्ड को TINYINT (1) फ़ील्ड में बदल सकता हूं?

+0

मेरा मानना ​​है कि 'TINYINT (1)' 1-बिट है, 1-अंकीय, पूर्णांक नहीं है। मुझे 'INT (1)' के बारे में पता नहीं है, लेकिन यदि यह संख्या 0 से 9 के लिए ठीक से संग्रहीत कर रहा है, तो इसका उपयोग जारी रखें :) लेकिन मैंने हमेशा सोचा कि यह 1 बिट भी था। – Ryan

+0

@minitech 'TINYINT' 1-बाइट है, 1-बिट – Phil

+0

@ फिल: ओह: पी तो मैं अपनी टिप्पणी बदलता हूं:" वे दोनों 1 बाइट हैं। " – Ryan

उत्तर

35

पूर्णांक कॉलम प्रकारों के लिए कोष्ठक में संख्या "प्रदर्शन चौड़ाई" है। इससे स्टोरेज आवश्यकताएं प्रभावित नहीं होती हैं क्योंकि वे पूर्व-परिभाषित हैं।

अतिरिक्त पठन

+3

तो अगर मैं केवल एक वर्ण की अनुमति देने के लिए INT (1) को परिभाषित करता हूं, तो भी यह 4 बाइट्स का उपयोग करेगा चाहे कोई फर्क नहीं पड़ता? – animuson

+1

@animuson 'INT (1)' ** ** ** केवल एक वर्ण की अनुमति नहीं देता है। यह परिणाम सेट में उस कॉलम के लिए प्रदर्शन चौड़ाई सेट करता है। उपरोक्त अंतिम लिंक पढ़ें, यह बहुत अच्छी तरह से बताता है – Phil

+1

ओह मैं देखता हूं। मान लीजिए कि मुझे पिछले लिंक 2 पर जारी रखना चाहिए था। ओ.ओ. इसके अलावा, अगर मैं केवल आईएनटी से टिन्यिनट में एक क्षेत्र बदलता हूं तो यह कुछ भी नुकसान पहुंचाएगा यदि सभी मूल्य 0 और 1 एस हैं या क्या मुझे इसे अकेला छोड़ देना चाहिए? – animuson

41
यहाँ

आप बेहतर तरीके से यह समझ जाएगा!

tinyint: 1 byte, -128 to +127/0 to 255 (unsigned) 
smallint: 2 bytes, -32,768 to +32,767/0 to 65,535 (unsigned) 
mediumint: 3 bytes, -8,388,608 to 8,388,607/0 to 16,777,215 (unsigned) 
int/integer: 4 bytes, -2,147,483,648 to +2,147,483,647/0 to 4,294,967,295 (unsigned) 
bigint: 8 bytes, -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807/0 to 18,446,744,073,709,551,615 (unsigned) 
+3

धन्यवाद, यह बहुत आसान है! – Braunson

+2

यह चुना गया जवाब होना चाहिए :)! – Hussard

+0

यदि आप phpmyadmin का उपयोग कर रहे हैं, तो टाइप का चयन करते समय बस ड्रॉपडाउन पर होवर करें और यह इन सभी विवरणों को स्वचालित रूप से दिखाएगा। :) –

संबंधित मुद्दे