溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mysql?tinyint(1)與tinyint(4)的區(qū)別是什么

發(fā)布時(shí)間:2023-03-21 14:21:29 來源:億速云 閱讀:164 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Mysql tinyint(1)與tinyint(4)的區(qū)別是什么”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

什么是tinyint(M)?

先來了解下mysql中字符串類型varchar(M) 和數(shù)值類型tinyint(M) 的區(qū)別?
字符串列類型: varchar(M) 而言,M 是字段中可以存儲的最大字符長度,也就是說是字段長度。根據(jù)設(shè)置,當(dāng)你插入超出字段長度的數(shù)據(jù)時(shí),你很可能會收到錯(cuò)誤提示,即使沒有收到錯(cuò)誤提示,你插入的數(shù)據(jù)也會被自動截?cái)嘁赃m應(yīng)該字段的預(yù)定義長度。所以,varchar(20) 和 varchar(40) 是不同的,其真實(shí)反映了該字段可以存儲的數(shù)據(jù)長度。
數(shù)值列類型:其長度修飾符表示最大顯示寬度,與該字段物理存儲沒有任何關(guān)系。也就是說,tinyint(1) 和 tinyint(4) 能夠存儲的數(shù)值范圍都是-128…127 (or for unsigned values 0…255),他們是相同的數(shù)據(jù)類型,當(dāng)然他們還是有一點(diǎn)差異,以下會有說明。
對于 tinyint 數(shù)據(jù)類型,只占 1 個(gè)字節(jié)

- 無符號的(unsigned),范圍是 0 到 255,默認(rèn)長度是 3。
- 有符號的(signed),范圍是 -128 到 127,默認(rèn)長度是 4。

范圍算法:tinyint占1個(gè)字節(jié),一個(gè)字節(jié) 8 位,也就是1*8=8,可以表示的數(shù)字個(gè)數(shù)是 2的 8 次方(2^8 = 256個(gè)數(shù)字)。

區(qū)別:若使用了 zerofill,當(dāng)實(shí)際長度達(dá)不到指定的顯示長度時(shí),就會用 0 在前面補(bǔ)齊。(簡記zerofill作用就是補(bǔ)零)

測試

先創(chuàng)建一張測試表,對 tinyint 類型都使用 zerofill。

CREATE TABLE `pre_demo` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `unsigned_t` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000',
  `signed_t` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `t1` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0',
  `t2` tinyint(2) unsigned zerofill NOT NULL DEFAULT '00',
  `t3` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000',
  `t4` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `t5` tinyint(5) unsigned zerofill NOT NULL DEFAULT '00000',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

然后,插入測試數(shù)據(jù)。

NSERT INTO pre_demo VALUES(NULL,8,8,8,8,8,8,8);
INSERT INTO pre_demo VALUES(NULL,123,123,123,123,123,123,123);

最后,查詢數(shù)據(jù)表中的數(shù)據(jù)。

mysql> SELECT * FROM pre_demo;
+----+------------+----------+-----+-----+-----+------+-------+
| id | unsigned_t | signed_t | t1  | t2  | t3  | t4   | t5    |
+----+------------+----------+-----+-----+-----+------+-------+
|  1 |        008 |     0008 |   8 |  08 | 008 | 0008 | 00008 |
|  2 |        123 |     0123 | 123 | 123 | 123 | 0123 | 00123 |
+----+------------+----------+-----+-----+-----+------+-------+
2 rows in set (0.00 sec)
mysql> SELECT *,LENGTH(id),LENGTH(unsigned_t),LENGTH(t1) FROM pre_demo;
+----+------------+----------+-----+-----+-----+------+-------+------------+--------------------+------------+
| id | unsigned_t | signed_t | t1  | t2  | t3  | t4   | t5    | LENGTH(id) | LENGTH(unsigned_t) | LENGTH(t1) |
+----+------------+----------+-----+-----+-----+------+-------+------------+--------------------+------------+
|  1 |        008 |     0008 |   8 |  08 | 008 | 0008 | 00008 |          1 |                  3 |          1 |
|  2 |        123 |     0123 | 123 | 123 | 123 | 0123 | 00123 |          1 |                  3 |          3 |
+----+------------+----------+-----+-----+-----+------+-------+------------+--------------------+------------+
2 rows in set (0.00 sec)

“Mysql tinyint(1)與tinyint(4)的區(qū)別是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI