unsigned和zerofill
- unsigned是指的無符號,就是沒有負數,只能用正數和0,此時unsigned修飾的字段的值能夠達到的最大值是原來的最大值加1,即原來一個tinyint字段能表示的範圍是:-128~127,而unsigned修飾的字段範圍是:0~255。
- zerofill是指的一個整型字段在容許的最大位數以前用0填充,好比一個字段設置爲tinyint(4),須要用4個數字表示,而tinyint最大值爲(假如是unsigned修飾)255,那麼前面不足4位數都將用0填充,例如:0005, 0010, 0100, 0255。不管是int或是tinyint等整型數據,括號裏面的數字只是表明這個數據最後的顯示位數,不影響數據自己的存儲大小。就是說int(1)和int(4)數據存儲長度同樣,int(1)仍是會比tinyint(8)存儲空間佔用大。總結一下數據大小:
- tinyint(1)與tinyint(4)在佔用空間大小上沒區別,都是一個字節
- int(1)與int(4)在佔用空間大小上沒區別,都是四個字節
- int(1)比tinyint(4)佔用空間大,可是對於zerofill修飾的字段,最終顯示出來的tinyint(4)都是以4個數字(前面補0)呈現出來,而int(1)是不用0補齊來呈現的
- tinyint一個字節 smallint 兩個字節 MEDIUMINT三個字節 int 4個字節 BIGINT 8個字節,所以在選擇字段類型的時候,在夠用的狀況下,能選擇小的就儘可能選擇小的,節省更多的空間
- int(6)與varchar(6)這兩個6所表示的含義是不同的,int(6)只會影響zerofill字段最終的顯示長度,而varchar(6)會要求字符串存儲的長度不超過6字節
字段類型說明
各類字段類型在數據庫存放的空間佔用大小以下表數據庫
數據類型 |
默認範圍 |
unsigned範圍 |
tinyint |
-2^7 ~ 2^7-1 |
0 ~ 2^8-1 |
smallint |
-2^15 ~ 2^15-1 |
0 ~ 2^16-1 |
MEDIUMINT |
-2^23 ~ 2^23-1 |
0 ~ 2^24-1 |
int |
-2^31 ~ 2^31-1 |
0 ~ 2^32-1 |
bigint |
-2^63 ~ 2^63-1 |
0 ~ 2^64-1 |