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