बाइट्स में mysql में int (11) के कॉलम का आकार क्या है?


488

int(11)बाइट्स में mysql के कॉलम का आकार क्या है ?

और अधिकतम मूल्य जो इस कॉलम में संग्रहीत किए जा सकते हैं?



1
@cellepo एक सामान्य एसक्यूएल है दूसरा mysql के लिए विशिष्ट है (प्लस यह एक और अधिक विचार है)। यदि आप एक हंट हंट पर जाना चाहते हैं और मुझे जल्दी से एक वोट में बंद करना चाहते हैं, तो SOBotics चैट पर जाएं और मुझे पिंग करें। लेकिन बंद करने वाले mysqlको मेरे आने से पहले टैग किया जाना चाहिए । Thx
आकर्षित

6
हे लोगों। यह संभवतः डुप्लिकेट है, लेकिन यह अधिक खोज अनुकूल है। अधिकांश लोग int (11) का उपयोग करके इस तरह की खोज करते हैं। और यह अन्य लोगों के सवालों को हल कर रहा है। आप अन्य की तुलना में इसकी दृश्य संख्या की जांच कर सकते हैं। और उपयोगकर्ता को यहां अधिक विस्तृत उत्तर मिलेगा।
गौरव

जवाबों:


685

एक INTहमेशा 4 कोई बात नहीं क्या लंबाई निर्दिष्ट किया जाता है बाइट्स होगा।

  • TINYINT = 1 बाइट (8 बिट)
  • SMALLINT = 2 बाइट्स (16 बिट)
  • MEDIUMINT = 3 बाइट्स (24 बिट)
  • INT = 4 बाइट्स (32 बिट)
  • BIGINT = 8 बाइट्स (64 बिट)।

लंबाई सिर्फ यह निर्दिष्ट करती है कि mysql कमांड लाइन क्लाइंट के साथ डेटा का चयन करते समय कितने अक्षर पैड करने के लिए। 12345 के रूप में संग्रहीत int(3)अभी भी 12345 के रूप में दिखाएगा, लेकिन अगर इसे संग्रहीत किया गया था क्योंकि int(10)यह अभी भी 12345 के रूप में प्रदर्शित होगा, लेकिन आपके पास पहले पांच अंकों को पैड करने का विकल्प होगा। उदाहरण के लिए, यदि आपने जोड़ा तो ZEROFILLयह 0000012345 के रूप में प्रदर्शित होगा।

... और अधिकतम मूल्य 2147483647 (हस्ताक्षरित) या 4294967295 (निरस्त) होगा


111
तो यहाँ int (11) में 11 का अर्थ क्या है।
गौरव

73
कॉलम INT (4), पूर्णांक 1 को 0001 के रूप में प्रदर्शित किया जाएगा यदि स्तंभ को ज़ीरोफिल के रूप में भी निर्दिष्ट किया गया हो। अन्यथा, यह केवल अतिरिक्त अंकों के बिना नंबर 1 के रूप में प्रदर्शित किया जाएगा। @ गौरव - mysql डेटा को कैसे प्रदर्शित करता है और इसे कैसे संग्रहीत करता है, यह मिश्रण नहीं है, यह दो अलग चीजें हैं। आप जो देखते हैं वह वास्तव में ऐसा नहीं हो सकता है।
माइकल जेवी

13
@ मिचेल वाह, वाकई दिलचस्प। इसलिए यदि आप एक कॉलम INT (3) बनाते हैं और 5001 मान स्टोर करते हैं, तो यह 5001 स्टोर करेगा लेकिन केवल डिस्प्ले 1. मैं यह नहीं जानता था।
andrewtweber

16
@andrewtweber: फ़ील्ड के रूप में परिभाषित होने पर भी 5001प्रदर्शित होगा । नीचे और यहाँ @priyabagus उत्तर देखें । 5001INT(3)
go2null

10
यह पूर्णांक फ़ील्ड के लिए आपको लंबाई प्रदान नहीं करता है, MySQL एक डिफ़ॉल्ट मान (छोटे 4, छोटे 6, मध्यम 9, इंट 11, बिगिंट 20) सेट करेगा। यह ध्यान देने योग्य है कि ये डिफ़ॉल्ट लंबाई किसी भी संख्या को प्रदर्शित करने के लिए पर्याप्त हैं इस क्षेत्र में संग्रहीत किया जा सकता है (उदा: स्मॉलिंट अधिकतम मान 2 ^ 16 = 65536, 5 अंक) जब तक आपके पास ऐसा करने के लिए बहुत अच्छा कारण नहीं है, मैं बुरे आश्चर्य से बचने के लिए डिफ़ॉल्ट आकार छोड़ने की सिफारिश करूंगा।
थिबॉल्ट विट्ज़

167

INT ( x ) केवल प्रदर्शन की अवधि में अंतर करेगा , जो कि x अंकों में संख्या को दिखाना है , और 11. तक सीमित नहीं है। आप इसका उपयोग करते हुए ZEROFILLजोड़ते हैं, जो आपकी लंबाई से मेल खाने तक शून्य को प्रीपेन्ड करेगा।

तो, किसी भी संख्या में x के लिएINT(x)

  • यदि संग्रहीत मान में x की तुलना में कम अंक हैं , ZEROFILLतो शून्य को प्रीप्रेंड करेगा।

    INT (5) ZEROFILL 32 की संग्रहीत मूल्य दिखाएगा के साथ 00032
    INT (5) 32 की संग्रहीत मूल्य के साथ दिखाई देगा 32
    INT 32 की संग्रहीत मूल्य के साथ दिखाई देगा 32

  • यदि संग्रहीत मान में x की तुलना में अधिक अंक हैं , तो इसे उसी रूप में दिखाया जाएगा।

    INT (3) ZEROFILL 250000 की संग्रहीत मूल्य दिखाएगा के साथ 250000
    INT (3) 250000 की संग्रहीत मूल्य के साथ दिखाई देगा 250000
    INT 250000 की संग्रहीत मूल्य के साथ दिखाई देगा 250000

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

यह BIGINT, MEDIUMINT, SMALLINT, और TINYINT पर भी लागू होता है।


49
जब तक आप ज़ेरोफिल का उपयोग नहीं करते हैं तो लंबाई बिल्कुल कुछ नहीं करती है?
developerbmw

29
@developerbmw - सही है। जब तक आप उपयोग नहीं करते लंबाई पूरी तरह से कुछ भी नहीं करती है ZEROFILL
रिक जेम्स

शून्य आवश्यक रूप से मेनफ़्रेम संगतता मोड है।
हेंक पोली

114

यहाँ के अनुसार , int(11)अंतरिक्ष के 4 बाइट्स लेगा जो 2^(31) = 2147483648अधिकतम मूल्य और -2147483648न्यूनतम मूल्य के साथ 32 बिट्स का स्थान है । एक बिट साइन के लिए है।


1
आपके उदाहरण में 9 नौ हैं। क्या आप इस बात की पुष्टि कर सकते हैं कि आपका उदाहरण सही है? यदि हां, तो 9 नाइन होने पर इसे 10 क्यों कहते हैं? क्या यह अंकों की संख्या के साथ-साथ एक से अधिक का चिह्न है?
होमर ६

5
नहीं, अधिकतम संख्या 4294967295 है यदि अहस्ताक्षरित int, यानी 2 ^ 32। कोष्ठक में संख्या भंडारण प्रकार को प्रभावित नहीं करती है। यदि आपको 2 ^ 32 से अधिक की आवश्यकता है, तो आपको bigint पर जाने की आवश्यकता है।
किरन टुल्ली

7
या बल्कि, (2 ^ 32) -1।
किरन टुल्ली

2
+ कीरन सही है। उत्तर में अधिकतम संख्या भिन्न है। यहां
Daviewales

38

जैसा कि अन्य लोगों ने कहा है, माइनम / अधिकतम मान कॉलम को स्टोर कर सकता है और बाइट्स में कितना संग्रहण होता है, यह केवल प्रकार द्वारा परिभाषित किया गया है, लंबाई नहीं।

इनमें से बहुत सारे उत्तर कह रहे हैं कि (11)भाग केवल प्रदर्शन चौड़ाई को प्रभावित करता है जो कि वास्तव में सही नहीं है, लेकिन ज्यादातर।

कोई ज़ीरोफिल निर्दिष्ट परिभाषा के int(2)साथ :

  • अभी भी का एक मूल्य स्वीकार करते हैं 100
  • अभी भी जब उत्पादन (नहीं या नहीं ) का एक मूल्य प्रदर्शित100000
  • प्रदर्शन चौड़ाई का चयन क्वेरी से सबसे बड़ा मान जा रहा है उत्पादन की चौड़ाई हो जाएगा।

ज़ीरोफिल भी निर्दिष्ट किया जाता(2) है तो केवल यही काम करेगा :

  • का मान 1दिखाया जाएगा 01
  • मान प्रदर्शित करते समय, कॉलम में हमेशा अधिकतम संभव मान की चौड़ाई होगी जो स्तंभ ले सकता है, जो पूर्णांक के लिए 10 अंक है, सबसे बड़ा मान प्रदर्शित करने के लिए आवश्यक न्यूनतम चौड़ाई के बजाय स्तंभ उस विशिष्ट चयन क्वेरी में दिखाने के लिए आवश्यक है , जो बहुत छोटा हो सकता है।
  • स्तंभ अभी भी ले जा सकता है, और लंबाई से अधिक मान दिखा सकता है, लेकिन ये मान 0s के साथ उपसर्ग नहीं होंगे।

सभी बारीकियों को देखने का सबसे अच्छा तरीका है:

CREATE TABLE `mytable` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `int1` int(10) NOT NULL,
    `int2` int(3) NOT NULL,
    `zf1` int(10) ZEROFILL NOT NULL,
    `zf2` int(3) ZEROFILL NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `mytable` 
(`int1`, `int2`, `zf1`, `zf2`) 
VALUES
(10000, 10000, 10000, 10000),
(100, 100, 100, 100);

select * from mytable;

जो उत्पादन करेगा:

+----+-------+-------+------------+-------+
| id | int1  | int2  | zf1        | zf2   |
+----+-------+-------+------------+-------+
|  1 | 10000 | 10000 | 0000010000 | 10000 |
|  2 |   100 |   100 | 0000000100 |   100 |
+----+-------+-------+------------+-------+

यह उत्तर लिनक्स के लिए MySQL 5.7.12 के खिलाफ परीक्षण किया गया है और अन्य कार्यान्वयन के लिए भिन्न हो सकता है या नहीं भी हो सकता है।


5
"ध्यान दें कि int1 कॉलम की लंबाई zerofill2 की तुलना में बहुत अधिक है, भले ही लंबाई बड़ी हो" ... Ehm, ऐसा सिर्फ इसलिए है क्योंकि स्तंभ का नाम 'zerofill2' 9 चार्ट लंबा 'int1' है 4.
neuioio

2
... हां, इतनी स्पष्ट रूप से लंबाई का कोई प्रभाव नहीं है, यहां तक ​​कि जब जेरोफिल सक्षम नहीं है, तो प्रदर्शन चौड़ाई पर भी। अन्यथा int1 इसके बजाय 10 वर्णों की चौड़ाई के साथ अधिक व्यापक होगा।
प्रोग्रामर

2
एक ठोस उदाहरण के साथ एक अच्छी व्याख्या। स्वीकार किए जाते हैं की तुलना में बेहतर जवाब। साभार @Programster
कॉरिन

माइनर नाइट: जैसा कि नियोकियो बताते हैं, इस क्वेरी से "इंट (3)" के सटीक परिणामों को शून्य भरण से नहीं देख सकते हैं। व्यवहार को स्पष्ट करने के लिए "zf2" कॉलम नाम को छोटा करें। विशेष रूप से, चाहे सही या गलत [दिए गए DB संस्करण पर] कि "(ज़ीरोफिल के साथ) मूल्यों को प्रदर्शित करते समय, कॉलम में हमेशा अधिकतम संभव मान की चौड़ाई होगी जो स्तंभ ले सकता है जो पूर्णांक के लिए 10 अंक हो सकता है,"
टूलमेकरसेव

1
नियोकियो की टिप्पणी और मेरी छोटी सी टिप्पणी को स्पष्ट करने के लिए: वाक्य "नोटिस कैसे int1 कॉलम zerofill2 की तुलना में बहुत छोटी डिस्प्ले चौड़ाई है भले ही लंबाई बड़ी हो।" जवाब से हटा दिया जाना चाहिए। यह हेडर शब्द "zerofill2" में वर्णों की संख्या का परिणाम है - इसका परीक्षण प्रदर्शन चौड़ाई से कोई लेना-देना नहीं है। उस कॉलम को एक छोटा नाम देने के लिए बेहतर है, उदाहरण के लिए "zf2"। तब हमारे पास एक तालिका होगी जहां "int1, int2, और zf2 सभी समान चौड़ाई हैं, भले ही int2 और zf2 एक छोटी चौड़ाई (3) निर्दिष्ट करें"।
टूलमेकरसैट

32

बाइट्स में mysql में int (11) के कॉलम का आकार क्या है?

(11)- intडेटा प्रकार की इस विशेषता का कॉलम के आकार से कोई लेना-देना नहीं है। यह पूर्णांक डेटा प्रकार की प्रदर्शन चौड़ाई है। से 11.1.4.5। संख्यात्मक प्रकार विशेषताएं :

MySQL प्रकार के लिए आधार कीवर्ड के बाद कोष्ठक में पूर्णांक डेटा प्रकारों की प्रदर्शन चौड़ाई को निर्दिष्ट करने के लिए एक एक्सटेंशन का समर्थन करता है। उदाहरण के लिए, INT (4) एक INT को चार अंकों की प्रदर्शन चौड़ाई के साथ निर्दिष्ट करता है।


19

इसके लिए एक अच्छा स्पष्टीकरण यहां पाया जा सकता है

संक्षेप में: संख्या एन में इंट (एन) अक्सर कॉलम के लिए अनुमत अधिकतम आकार से भ्रमित होता है, जैसा कि यह वार्चर (एन) के मामले में होता है।

लेकिन यह पूर्णांक डेटा प्रकारों के मामले में नहीं है- के कोष्ठक में संख्या N कॉलम के लिए अधिकतम आकार नहीं है, लेकिन MySQL को बताने के लिए बस एक पैरामीटर है कि तालिका के डेटा को MySQL के माध्यम से देखे जाने पर स्तंभ को प्रदर्शित करने के लिए चौड़ाई क्या है। कंसोल (जब आप ZEROFILL विशेषता का उपयोग कर रहे हों)।

कोष्ठक में संख्या MySQL बताएगी कि आने वाले पूर्णांकों को पैड करने के लिए कितने शून्य हैं। उदाहरण के लिए: यदि आप ZEROFILL का उपयोग किसी ऐसे कॉलम पर कर रहे हैं जो INT (5) पर सेट है और नंबर 78 डाला गया है, तो MySQL उस मान को शून्य तक पैड कर देगा, जब तक संख्या कोष्ठक में संख्या को संतुष्ट नहीं करती। यानी 78 00078 बन जाएगा और 127 00127 बन जाएगा। इसे योग करने के लिए: ब्रैकेट में संख्या प्रदर्शन उद्देश्यों के लिए उपयोग की जाती है।
एक तरह से, जब तक आप ZEROFILL विशेषता का उपयोग नहीं कर रहे हैं, कोष्ठक में संख्या बेकार है।

इसलिए इंट के लिए आकार समान रहेगा अर्थात -2147483648 से 2147483648 पर हस्ताक्षर किए और अहस्ताक्षरित के लिए 0 से 4294967295 (~ 2.15 बिलियन और 4.2 बिलियन, जो एक कारण है कि डेवलपर्स कोष्ठक में नंबर एन के पीछे की कहानी से अनजान रहते हैं, क्योंकि यह शायद ही प्रभावित करता है डेटाबेस जब तक कि इसमें 2 बिलियन से अधिक पंक्तियाँ न हों) और बाइट के संदर्भ में यह 4 बाइट्स होगा

पूर्णांक प्रकार के आकार / सीमा के बारे में अधिक जानकारी के लिए, MySQL मैनुअल का संदर्भ लें


पंक्तियों की संख्या यहाँ खेलने में क्यों आती है?
पुराना गीज़र

@OldGeezer - सहमत हैं, "कॉलम की संख्या" अधिकांश स्तंभों के लिए अप्रासंगिक है। केवल ऑटो-इन्क्रिमिंग प्राथमिक कुंजी (आईडी) कॉलम के लिए प्रासंगिक है।
टूलमेकरसेव

10

हालांकि इस उत्तर को देखने की संभावना नहीं है, मुझे लगता है कि निम्नलिखित स्पष्टीकरण बनाने लायक है:

  • MySQL में पूर्णांक डेटा प्रकार के पीछे (n) प्रदर्शन चौड़ाई निर्दिष्ट कर रहा है
  • प्रदर्शन चौड़ाई किसी क्वेरी से दिए गए नंबर की लंबाई को सीमित नहीं करती है
  • प्रदर्शन की चौड़ाई शून्य शून्य कॉलम के लिए भरे गए शून्य की संख्या को सीमित करती है, इसलिए कुल संख्या प्रदर्शन चौड़ाई से मेल खाती है (इसलिए जब तक वास्तविक संख्या प्रदर्शन चौड़ाई से अधिक न हो, उस स्थिति में संख्या जितनी दिखाई जाती है)
  • डिस्प्ले की चौड़ाई भी डेवलपर्स के लिए एक उपयोगी उपकरण के रूप में है, यह जानने के लिए कि मूल्य को किस आकार में रखा जाना चाहिए

डीआईटी की एक बिट
प्रदर्शन की चौड़ाई का , जाहिर है, शून्य शून्य संख्या में प्रदर्शित करने के लिए कितने शून्य के बारे में कुछ मेटाडेटा प्रदान करने का इरादा है।
यह वास्तव में क्वेरी से लौटाए गए नंबर की लंबाई को सीमित नहीं करता है यदि यह संख्या निर्दिष्ट प्रदर्शन चौड़ाई से ऊपर जाती है।
यह जानने के लिए कि MySQL में एक पूर्णांक डेटा प्रकार के लिए वास्तव में किस लंबाई / चौड़ाई की अनुमति है, सूची और लिंक देखें: ( प्रकार: टिनटाइन, स्माल्ट, मेडिटेंट, आईएनटी, बिग );
इसलिए ऊपर कहा गया है, आप मानक चौड़ाई से परिणामों पर कोई प्रभाव नहीं होने की उम्मीद कर सकते हैं, जब तक कि कॉलम को शून्य कॉलम के रूप में निर्दिष्ट नहीं किया जाता है
या
मामले में डेटा को एक आवेदन में खींचा जा रहा है और वह आवेदन एकत्र कर रहा है कुछ अन्य प्रकार के पेडिंग के लिए उपयोग करने के लिए चौड़ाई प्रदर्शित करें।

प्राथमिक संदर्भ: https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean


उचित उत्तर प्रदान करने के लिए धन्यवाद। मैं MySQL कमांड-लाइन से कोशिश कर रहा था, और मैं इसे किसी भी अंक को छोटे के साथ बंद करने के लिए नहीं प्राप्त कर सका n, इसलिए ... हाँ, यह बकवास है। यह केवल शून्य के साथ कुछ भी करता है।

@ मुझे खुशी है कि मैं मदद कर सकता हूं, यह कुछ ऐसी चीज से जुड़ा था जिसकी मैं कोशिश कर रहा था और मुझे लगा कि मैं इसके बारे में अधिक जानकारी यहां रख सकता हूं जो किसी और के लिए उपयोगी हो सकती है।
MER

9

MySQL पूर्णांक में int(11) में आकार 4 बाइट्स होता है जो 32 बिट के बराबर होता है।

हस्ताक्षरित मूल्य है: -2^(32-1) to 0 to 2^(32-1)-1 = -2147483648 to 0 to 2147483647

अहस्ताक्षरित मान है: 0 to 2^32-1 = 0 to 4294967295


0

इस पुस्तक के अनुसार :

MySQL आपको पूर्णांक प्रकारों के लिए एक "चौड़ाई" निर्दिष्ट करने देता है, जैसे INT (11)। यह अधिकांश अनुप्रयोगों के लिए अर्थहीन है: यह मूल्यों की कानूनी सीमा को प्रतिबंधित नहीं करता है, लेकिन केवल वर्णों की संख्या निर्दिष्ट करता है MySQL के इंटरैक्टिव टूल प्रदर्शन उद्देश्यों के लिए आरक्षित होंगे। भंडारण और कम्प्यूटेशनल उद्देश्यों के लिए, INT (1) INT (20) के समान है।


-4

मुझे लगता है कि इंट (11) का अधिकतम मूल्य 4294967295 है


2
यह 2147483647 है क्योंकि इस पर हस्ताक्षर हैं।
d3bit

-9

4294967295 उत्तर है, क्योंकि इंट (11) अधिकतम 11 अंक आईएमओ दिखाता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.