Mysql中int(1) int(5)中括號數字做用

今天在處理數據庫問題的時候,發現對於某個字段sort 在初始化時,是int(1),可是仍然存進去了超過9的數字,存入99依然能夠,那我要這1又有何用呢?他到底能存多少長度?前端

在查閱了網上的資料後發現:mysql

int(1),這個長度1並不表明容許存儲的寬度

首先搬運一個整數類型存儲和範圍:sql

(PS:MD裏面的表格真難用啊,還不如去前端編輯器裏先處理好再複製出來)數據庫

類型
字節
最小值
最大值
(帶符號的/無符號的)
(帶符號的/無符號的)
TINYINT
1
-128
127
0
255
SMALLINT
2
-32768
32767
0
65535
MEDIUMINT
3
-8388608
8388607
0
16777215
INT
4
-2147483648
2147483647
0
4294967295
BIGINT
8
-9223372036854775808
9223372036854775807
0
18446744073709551615

表格一共有四列分別表式:字段類型, 佔用字節數, 容許存儲的最小值, 容許存儲的最大值.


咱們拿int類型爲例:
int類型, 佔用字節數爲4byte, 學過計算機原理的同窗應該知道, 字節(byte)並不是是計算機存儲的最小單位, 還有比字節(byte)更小的單位, 也就是位(bit),一個位就表明一個0或1; 8個位組成一個字節; 通常字節用大寫B來表示byte, 位用小寫b來表示bit.
計算機存儲單位的換算:
1B=8b
1KB=1024B
1MB=1024KB
那麼根據int類型容許存儲的字節數是4個字節, 咱們就能換算出int UNSIGNED(無符號)類型的能存儲的最小值爲0, 最大值爲4294967295(即4B=32b, 最大值即爲32個1組成);



那麼在這裏究竟這裏int(1) 和int (5) int(10) 有什麼區別呢

這裏的1和5和10 只是顯示寬度,即若是我存儲了 一個 9, 則在mysql中,其實int(1)的字段存儲的是9,而int (5)存儲的是00009,而int(10)存儲的是00000000009.編輯器

其實他們存儲的長度都是同樣的,只是顯示寬度不同而已。it

相關文章
相關標籤/搜索