Mysql中整形int(M)和字符類型varchar(M)的區(qū)別

在之前的認知中 tinyint(4)、smallint(6)、mediumint(9)、int(11)、bigint(20) 這幾個類型后面的M值是代碼數(shù)字能存儲的最大長度

類型 占用字節(jié)
tinyint 1 -128 127
smallint 2 -32768 32767
mediumint 3 -8388608 8388607
int 4 -2147483648 2147483647
bigint 8 -9223372036854775808 9223372036854775807

創(chuàng)建數(shù)據(jù)庫表的例子

CREATE TABLE test(
    id1 int(1),
    id2 tinyint(1)
    );

然后執(zhí)行插入數(shù)據(jù)

INSERT INTO test(id1,id2) values(127,127);   -- 正常

INSERT INTO test(id1,id2) values(128,127); -- 正常

INSERT INTO test(id1,id2) values(127,128);  -- 插入正常(但是在表中的數(shù)據(jù)是127,127)
image.png

從例子中可以看出來,其實和M值是沒有關系的,例如int真正所占用的空間還是4個字節(jié),tinyint所占用的字節(jié)還是1個字節(jié)。
tinyint(1) 和 tinyint(4) 中的1和4并不表示存儲長度,M不代表占用空間的容量,而是代表最小顯示位數(shù),只有字段指定zerofill是有用。
如tinyint(4),如果實際值是2,如果列指定了zerofill,查詢結(jié)果就是0002,左邊用0來填充。
所以,這些字段用默認長度就可以了,不需要在自己去設置長度,基本沒用,而且還增加了表字段類型的多樣化。
varchar(M)中的M是字符串的長度,所以mysql開發(fā)中需要區(qū)分整數(shù)類型和字符串類型的區(qū)別。

轉(zhuǎn)自:https://blog.csdn.net/qq_15037231/article/details/79481204
https://blog.csdn.net/jaryle/article/details/52025023

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容