鍍金池/ 問答/數(shù)據(jù)庫/ 關于MySQL的tinyint(3)問題

關于MySQL的tinyint(3)問題

請問下圖的MySQL表字段,為什么要用tinyint(3),如果只需要顯示2個數(shù)字的話,用tinyint(2)不就行了嗎?
圖片描述

圖片描述

回答
編輯回答
瘋子范

int類型的(包括tinyint,smallint...)后面括號內的數(shù)字,一般情況下是不需要專門設置的,默認的就好了。
因為它只與顯示有關,和占用的空間無關。

而只有一種情況下,我們需要用到:
當數(shù)字的長度小于指定位數(shù)時,用0補齊。這時需要結合zerofill使用
比如 tinyint(2) zerofill
如果是3,則顯示為 03
如果是122,則顯示為 122

如果你不使用zerofill,而括號內的數(shù)字隨便寫,效果是一樣的。

2017年6月28日 06:32
編輯回答
離殤

mysql 中int(1)和tinyint(1)中的1只是指定顯示長度,并不表示存儲長度.
tinyint可以存儲1字節(jié), 即unsigned 0~255(signed -127~127)。顯示大小不受此限制 (所有整數(shù)類型相同),即使設為1,也可以存入和取出大于10的數(shù)。括號里的數(shù)字,即顯示大小對整數(shù)來說主要有兩個目的, 一是做為編碼文檔;將 tinyint (1) 放到表定義中會告訴人們只有數(shù)字 0 - 9 應該輸入, 表沒有被設計具有其他值。

另一個目的是, 你可以與屬性ZEROFILL聯(lián)合使用。ZEROFILL將填充小于顯示大小的數(shù)字,在他們面前補上零。例如 TINYINT (3) 與 ZEROFILL, 插入值4, 你會得到 004。

參見:
https://lists.mysql.com/mysql...

http://www.cnblogs.com/xiaoch...

2018年1月11日 18:52