TINYINT(1) में (1) का अर्थ
नहीं, TINYINT(1) में 1 केवल डिस्प्ले चौड़ाई है, मानों की रेंज नहीं। TINYINT हमेशा 1 बाइट (8 बिट) उपयोग करता है, चाहे (N) कुछ भी हो।
TINYINT वास्तविक रेंज
| प्रकार | बाइट्स | साइन रेंज | अनसाइन रेंज |
|---|---|---|---|
TINYINT | 1 | -128 से 127 | 0 से 255 |
गणना: 2^(8-1)-1 = 127 (अधिकतम), -2^(8-1) = -128 (न्यूनतम)
प्रदर्शन
1. TINYINT(1) टेबल बनाएं
mysql> CREATE TABLE Display (
-> rangeOfId TINYINT(1)
-> );
Query OK, 0 rows affected (0.67 sec)
2. रेंज से बाहर मान डालने का प्रयास
mysql> INSERT INTO Display VALUES(128);
ERROR 1264 (22003): Out of range value for column 'rangeOfId' at row 1
3. वैध सीमा के भीतर मान डालें
mysql> INSERT INTO Display VALUES(127);
mysql> INSERT INTO Display VALUES(-128);
4. परिणाम
mysql> SELECT * FROM Display;
+-----------+
| rangeOfId |
+-----------+
| 127 |
| -128 |
+-----------+
2 rows in set (0.00 sec)
BOOLEAN / BOOL
MySQL में BOOLEAN और BOOL **TINYINT(1) के पर्याय** हैं।
CREATE TABLE t (flag BOOLEAN); -- वास्तव में TINYINT(1)
INSERT INTO t VALUES(TRUE), (FALSE); -- 1, 0 स्टोर होता है
डिस्प्ले चौड़ाई (N) का प्रभाव
- केवल
ZEROFILLके साथ दृश्य प्रभाव TINYINT(3) ZEROFILL→ 1 दिखता है001- स्टोरेज, रेंज, गणना पर **कोई प्रभाव नहीं**
- MySQL 8.0.17+ में डिस्प्ले चौड़ाई **डिप्रिकेटेड** (चेतावनी देता है)
सारांश
| घोषणा | वास्तविक प्रकार | रेंज | डिस्प्ले चौड़ाई |
|---|---|---|---|
TINYINT(1) | TINYINT | -128 से 127 | 1 (केवल दिखावे के लिए) |
TINYINT(4) | TINYINT | -128 से 127 | 4 |
BOOLEAN | TINYINT(1) | -128 से 127 | 1 |
निष्कर्ष: TINYINT(1) का (1) रेंज सीमित नहीं करता। यह केवल पुराने क्लाइंट टूल्स के लिए डिस्प्ले संकेत है।