MySQL में smallint, smallint, mediumint, bigint और int में क्या अंतर है?


368

MySQL में smallint, smallint, mediumint, bigint और int में क्या अंतर है?

किन मामलों में इनका उपयोग किया जाना चाहिए?

जवाबों:


574

वे अलग-अलग मात्रा में जगह लेते हैं और उनके पास स्वीकार्य मूल्यों की अलग-अलग सीमाएं होती हैं।

यहाँ SQL सर्वर के लिए मानों के आकार और सीमाएँ हैं , अन्य RDBMSes के समान दस्तावेज हैं:

पता चलता है कि वे सभी एक ही विनिर्देशन का उपयोग करते हैं (नीचे दिए गए कुछ मामूली अपवादों के साथ), लेकिन उन प्रकारों के विभिन्न संयोजनों का समर्थन करते हैं (ओरेकल को शामिल नहीं किया गया क्योंकि इसमें सिर्फ एक NUMBERडेटा टाइप है , उपरोक्त लिंक देखें):

             | SQL Server    MySQL   Postgres    DB2
---------------------------------------------------
tinyint      |     X           X                
smallint     |     X           X         X        X
mediumint    |                 X
int/integer  |     X           X         X        X 
bigint       |     X           X         X        X

और वे समान मूल्य श्रेणियों (नीचे एक अपवाद के साथ) का समर्थन करते हैं और सभी के लिए समान भंडारण आवश्यकताएं हैं:

            | Bytes    Range (signed)                               Range (unsigned)
--------------------------------------------------------------------------------------------
tinyint     | 1 byte   -128 to 127                                  0 to 255
smallint    | 2 bytes  -32768 to 32767                              0 to 65535
mediumint   | 3 bytes  -8388608 to 8388607                          0 to 16777215
int/integer | 4 bytes  -2147483648 to 2147483647                    0 to 4294967295
bigint      | 8 bytes  -9223372036854775808 to 9223372036854775807  0 to 18446744073709551615 

"अहस्ताक्षरित" प्रकार केवल MySQL में उपलब्ध हैं, और बाकी सिर्फ हस्ताक्षरित सीमाओं का उपयोग करते हैं, एक उल्लेखनीय अपवाद के साथ: tinyintSQL सर्वर में अहस्ताक्षरित है और इसका मान 0 से 255 तक है


21
मुझे नहीं पता था कि अहस्ताक्षरित प्रकार केवल MySQL में उपलब्ध हैं, यह अन्य RDBMS पर MySQL का बहुत बड़ा लाभ है। यह उत्तर पोस्ट किए जाने के दिन से कुछ भी बदल गया?
biox

3
@ डैनियल, वे क्या सोच रहे हैं, क्यों 3 बाइट्स के लिए एक है, लेकिन 6 बाइट्स के लिए कोई भी नहीं है?
पचेरियर

9
@Pacerier शायद वे यह नहीं जानते कि इसका नाम कैसे रखा जाए :))
Mihai Matei

5
उन्हें कहा जाना चाहिए था कि एक बिगिन और बिगिन के बजाय एक विनम्र।
मारियो

5
ओरेकल एक यूएसए कंपनी होने के नाते ग्रेटिंट एक विकल्प हो सकता है। :)
ओसीरिस

32

भंडारण का आकार आवश्यक है और संख्या कितनी बड़ी हो सकती है

SQL सर्वर पर

टिनीट 1 बाइट, 0 से 255

छोटे 2 बाइट्स, -2 ^ 15 (-32,768) से 2 ^ 15-1 (32,767)

int 4 बाइट्स, -2 ^ 31 (-2,147,483,648) से 2 ^ 31-1 (2,147,483,647)

बिगिन्ट 8 बाइट्स, -2 ^ 63 (-9,223,372,036,854,775,808) से 2 ^ 63-1 (9,223,372,036,854,775,807)

आप सभी 4 में नंबर 1 स्टोर कर सकते हैं, लेकिन एक बिगिन 8 बाइट्स का उपयोग करेगा, जबकि एक टिंटिंट 1 बाइट का उपयोग करेगा


15

वे MySQL डेटा प्रकार प्रतीत होते हैं।

प्रलेखन के अनुसार वे लेते हैं:

  1. टिनीट = 1 बाइट
  2. smallint = 2 बाइट्स
  3. mediumint = 3 बाइट्स
  4. int = 4 बाइट्स
  5. bigint = 8 बाइट्स

और, स्वाभाविक रूप से, बढ़ती संख्या की बड़ी रेंज स्वीकार करते हैं।


9

जब यह इन डेटाटाइप्स का वास्तविक विश्व उपयोग करने के लिए हो जाता है, तो यह बहुत महत्वपूर्ण है कि आप यह समझें कि कुछ पूर्णांक प्रकारों का उपयोग करना केवल एक ओवरकिल या इस्तेमाल किया जा सकता है। उदाहरण के लिए, एक तालिका में कर्मचारी के लिए पूर्णांक डेटाटाइप का उपयोग करते हुए कहते हैं कि कर्मचारी एक ओवरकिल हो सकता है क्योंकि यह पूर्णांक मानों की सीमा ~ नकारात्मक 2 बिलियन से सकारात्मक 2 बिलियन या शून्य से लगभग 4 बिलियन (अहस्ताक्षरित) का समर्थन करता है। इसलिए, भले ही आप अमेरिका के सबसे बड़े नियोक्ता में से एक पर विचार करें, जैसे कि वॉलमार्ट के साथ लगभग 2.2 मिलियन कर्मचारी कर्मचारी के कॉलम के लिए पूर्णांक डेटाटाइप का उपयोग करना अनावश्यक होगा। ऐसे मामले में आप उदाहरण के लिए मध्यम (जो 0 से 16 मिलियन (अहस्ताक्षरित) का समर्थन करता है) का उपयोग करते हैं। कहा जाता है कि यदि आपकी सीमा असामान्य रूप से बड़ी होने की उम्मीद है तो आप बड़े पैमाने पर विचार कर सकते हैं जैसा कि आप डैनियल से देख सकते हैं '


2
2.2M सक्रिय कर्मचारियों के साथ वालमार्ट के आपके उदाहरण में - मुझे लगता है कि कर्मचारियों के साथ लगभग 50% सालाना कारोबार होता है कि कर्मचारी पर एक INT प्रकार न्यूनतम आवश्यकता होगी। आप सब क्या सोचते हैं? दी गई - ज्यादातर सामान्य कंपनियों के लिए एक INT प्रकार होगा overkill!
kiltannen

3

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


2

डेटा टाइप रेंज स्टोरेज

bigint  -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)    8 Bytes
int -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)    4 Bytes
smallint    -2^15 (-32,768) to 2^15-1 (32,767)  2 Bytes
tinyint 0 to 255    1 Byte

उदाहरण

निम्न उदाहरण बिगिन्ट, int, smallint, और smallint डेटा प्रकारों का उपयोग करके एक तालिका बनाता है। मान प्रत्येक कॉलम में डाले जाते हैं और SELECT स्टेटमेंट में वापस आ जाते हैं।

CREATE TABLE dbo.MyTable
(
  MyBigIntColumn bigint
 ,MyIntColumn  int
 ,MySmallIntColumn smallint
 ,MyTinyIntColumn tinyint
);

GO

INSERT INTO dbo.MyTable VALUES (9223372036854775807, 214483647,32767,255);
 GO
SELECT MyBigIntColumn, MyIntColumn, MySmallIntColumn, MyTinyIntColumn
FROM dbo.MyTable;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.