int、bigint、mediumint、smallint、tinyint的比较
注意點:
①int(4)只能存儲4個長度的數(shù)字,int(11)就會存儲11個長度的數(shù)字,這種理解是錯誤的。
看下面的兩個例子:
? ? 通過上面的例子可以看出,即使我指定了int(M)中M的長度,實際上MySQL中能存儲的數(shù)據(jù)不僅是M的長度。是不是我指定了不同M的長度,所占的存儲空間就不一樣呢?也就是說數(shù)據(jù)的存儲空間是不是會隨著M的增加而增大呢?如果你的回答是肯定的話,那么,對數(shù)據(jù)存儲所占空間大小的理解可能像小編之前一樣,存在一些偏差。
? ? 實際上int(M)所占多少存儲空間與指定的長度M并無任何關(guān)系。int(3)、int(4)、int(8) 在磁盤上都是占用 4 btyes 的存儲空間。說白了,除了顯示給用戶的方式有點不同外(實際數(shù)據(jù)長度<M,且指定zerofill,則數(shù)據(jù)呈現(xiàn)狀態(tài)會在左面填充0,以滿足指定的長度M),int(M) 跟 int 數(shù)據(jù)類型本身所占存儲空間大小是相同的。
舉例:
int 的值是10 (指定zerofill)int(8)的顯示結(jié)果為 00000010 (左邊填充6個0,以滿足指定數(shù)據(jù)長度)int(5)的顯示結(jié)果為 00010(左邊填充3個0)只是顯示的長度不一樣而已,都是占用四個字節(jié)的空間。
對于其他類型(M指定的數(shù)據(jù)長度也同樣適用,M 代表的并不是存儲在數(shù)據(jù)庫中的具體長度,如果設(shè)定了zerofill屬性,當(dāng)數(shù)據(jù)的寬度小于設(shè)定的寬度時(2<8),則自動填充0,這只是最后顯示的結(jié)果(一種格式化輸出),但是在Mysql中實際存儲的還是10。
總結(jié)
以上是生活随笔為你收集整理的int、bigint、mediumint、smallint、tinyint的比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: swagger2注解说明文档
- 下一篇: java.util.Date与 java