MySql: टिनीट (2) बनाम टिंटिंट (1) - क्या अंतर है?


183

मैं के रूप में mysql में बूलियन जानता था tinyint (1)

आज मुझे एक पूर्णांक की तरह एक तालिका दिखाई देती है tinyint(2), और अन्य जैसे int(4), int(6)...

प्रकार पूर्णांक और टिनील के क्षेत्र में आकार का क्या अर्थ है?


4
MySQL Integer data type के बारे में यहाँ पढ़ें ।
बड दमन्योव

2
@ AamirR का जवाब सही है
badReiko

1
@evilReiko zerofill में यह भी फर्क नहीं पड़ता है कि मूल्य को कैसे संग्रहीत किया जाता है, यह वास्तव में प्रस्तुति के बारे में है ... रिक्त स्थान या शून्य वास्तव में किसी के उत्तर imo की शुद्धता में अंतर नहीं करते हैं
Ja͢ck

जवाबों:


94

इसका अर्थ है प्रदर्शन चौड़ाई

चाहे आप टिंटिंट (1) या टिनींट (2) का उपयोग करते हैं, इससे कोई फर्क नहीं पड़ता।

मैं हमेशा टिनीट (1) और इंट (11) का उपयोग करता हूं, मैंने कई mysql क्लाइंट (नाविक, सीक्वल प्रो) का उपयोग किया।

यह सभी पर कुछ भी मतलब नहीं है! मैंने एक परीक्षण चलाया, ऊपर के सभी ग्राहकों या यहां तक ​​कि कमांड-लाइन क्लाइंट को भी इस पर ध्यान नहीं दिया गया।

लेकिन, यदि आप विकल्प का उपयोग कर रहे हैं तो प्रदर्शन चौड़ाई सबसे महत्वपूर्ण ZEROFILLहै, उदाहरण के लिए आपकी तालिका में 2 कॉलम हैं:

एक टिनींट (2) ज़ेरोफिल

बी छोटे (4) शून्य

दोनों स्तंभ 1 का महत्व है, स्तंभ के लिए उत्पादन एक होगा 01और 0001के लिए बी , स्क्रीनशॉट में देखा के रूप में नीचे :)

प्रदर्शन के साथ शून्य


20
अजीब तरह से मैंने अभी-अभी पता लगाया है कि C # आधिकारिक MySQL कनेक्टर में स्मॉलिंटन (1) 0 और 1 से अलग कभी भी वैल्यू नहीं देता है। इसका संभवत: टॉलिंट (1) के साथ स्वचालित रूप से बूलियन के रूप में पहचाना जाना है। बस एक सिर यह कभी-कभी मायने रखता है।
डेनियल शार्प

क्या पूर्णांक प्रकार और लंबाई का उपयोग करना बेहतर नहीं है? मैं इस धारणा के तहत था कि यह MySQL में सहेजी गई मेमोरी है।
nclsvh

जैसा कि @ डैनियल-शार्प बताते हैं कि यह कनेक्टर्स के लिए महत्वपूर्ण हो सकता है। बस Jiber के उपयोग के साथ हाइबरनेट के साथ एक समस्या थी रिपोर्टिंग ने इसे BIN के रूप में TINYINT (1) की व्याख्या की।
एसएफजे

2
@DanielSharp जो संभवत: कनेक्शन विकल्प के कारण है smallInt1isBit जो सत्य के लिए चूक करता है। Dev.mysql.com/doc/connector-j/8.0/en/…
56

1
मैंने हमेशा सोचा कि यह संख्याओं की स्वीकृत संख्या के साथ कुछ करना है (उदाहरण के लिए, int (4) 9999 से ऊपर की अनुमति नहीं है)। मुझे लगता है कि मैं हमेशा गलत सोचा था। PHP और MySQL कमांड लाइन दोनों में मुझे इसके ठीक ऊपर का मान दिखाई देता है।
जोशुआ बकर

226

(m)कॉलम प्रदर्शन चौड़ाई इंगित करता है, क्वेरी परिणाम दिखाते समय MySQL क्लाइंट जैसे एप्लिकेशन इसका उपयोग करते हैं।

उदाहरण के लिए:

| v   | a   |  b  |   c |
+-----+-----+-----+-----+
| 1   | 1   |  1  |   1 |
| 10  | 10  | 10  |  10 |
| 100 | 100 | 100 | 100 |

यहाँ a, bऔर cप्रयोग कर रहे हैं TINYINT(1), TINYINT(2)और TINYINT(3)क्रमशः। जैसा कि आप देख सकते हैं, यह डिस्प्ले की चौड़ाई का उपयोग करके बाईं ओर के मानों को पैड करता है।

यह ध्यान रखना महत्वपूर्ण है कि यह उस विशेष प्रकार के मूल्यों की स्वीकृत सीमा को प्रभावित नहीं करता है, अर्थात TINYINT(1)अभी भी स्वीकार करता है [-128 .. 127]


16
इसका क्या मतलब है 'कॉलम की चौड़ाई' ??
realtebo

8
@realtebo यह मुख्य रूप से mysql कमांड लाइन क्लाइंट द्वारा प्रदर्शन उद्देश्यों के लिए उपयोग किया जाता है।
जैक

3
इंटरफ़ेस द्वारा दिखाए गए "अंक" की संख्या। दूसरे शब्दों में, यह बाईं ओर शून्य को पैड करेगा। इस तरह की सुविधा ने डेटाबेस के शुरुआती दिनों में कुछ समझ बनाई, लेकिन अब यह सिर्फ विरासत है।
डेनिलसन सा माया

2
@ कैलास यदि आप mysql क्लाइंट का उपयोग नहीं कर रहे हैं? बिलकुल भी नहीं।
जॉक 8

11
@ कैलास नहीं! टिनीट (1) केवल 0-9 को स्वीकार नहीं करता है। यह छोटे रेंज को पकड़ सकता है की पूरी सीमा को स्वीकार करता है।
जेक

18
mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM tin3;
+----+------------+
| id | val        |
+----+------------+
|  1 | 0000000012 |
|  2 | 0000000007 |
|  4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)

mysql>

mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
|          10 |
+-------------+
1 row in set (0.01 sec)


mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
|     8 |
+-------+
1 row in set (0.00 sec)

11
कृपया कुछ स्पष्टीकरण शामिल करने के लिए अपने उत्तर को संपादित करें। कोड-केवल उत्तर भविष्य के एसओ पाठकों को शिक्षित करने के लिए बहुत कम करते हैं। आपका जवाब निम्न-गुणवत्ता होने के लिए मॉडरेशन कतार में है।
मिकमैकुसा

14

INT, TINYINT के बारे में ... ये विभिन्न डेटा प्रकार हैं, INT 4-बाइट संख्या है, TINYINT 1-बाइट संख्या है। यहाँ अधिक जानकारी - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

TINYINT डेटा प्रकार का सिंटैक्स TINYINT (M) है, जहां M अधिकतम प्रदर्शन चौड़ाई को इंगित करता है (इसका उपयोग केवल तभी किया जाता है जब आपका MySQL क्लाइंट इसका समर्थन करता है)।

संख्यात्मक प्रकार विशेषताएँ


1
इसका क्या मतलब है 'प्रदर्शन चौड़ाई'!?
realtebo

2
संदर्भ से - उदाहरण के लिए, INT (4) एक INT को चार अंकों की प्रदर्शन चौड़ाई के साथ निर्दिष्ट करता है। इस वैकल्पिक प्रदर्शन चौड़ाई का उपयोग अनुप्रयोगों द्वारा पूर्णांक मानों को प्रदर्शित करने के लिए किया जा सकता है, जो कॉलम के लिए निर्दिष्ट चौड़ाई से कम चौड़ाई वाले होते हैं, उन्हें रिक्त स्थान से पेडिंग करके।
देवरट

2
लेकिन मैंने ऐसे एप्लिकेशन या MySQL क्लाइंट नहीं देखे हैं जो इस सुविधा का उपयोग करते हैं। मैं हमेशा INT (11) का उपयोग करता हूं और आउटपुट को अनुकूलित करने के लिए स्वरूपण फ़ंक्शन का उपयोग करता हूं।
देवर्त
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.