mysql

Mysql中整形int(M)和字符类型varchar(M)的区别

2019-03-14  本文已影响29人  IT菜鸟学习

在之前的认知中 tinyint(4)、smallint(6)、mediumint(9)、int(11)、bigint(20) 这几个类型后面的M值是代码数字能存储的最大长度

类型 占用字节
tinyint 1 -128 127
smallint 2 -32768 32767
mediumint 3 -8388608 8388607
int 4 -2147483648 2147483647
bigint 8 -9223372036854775808 9223372036854775807

创建数据库表的例子

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

然后执行插入数据

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

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

INSERT INTO test(id1,id2) values(127,128);  -- 插入正常(但是在表中的数据是127,127)
image.png

从例子中可以看出来,其实和M值是没有关系的,例如int真正所占用的空间还是4个字节,tinyint所占用的字节还是1个字节。
tinyint(1) 和 tinyint(4) 中的1和4并不表示存储长度,M不代表占用空间的容量,而是代表最小显示位数,只有字段指定zerofill是有用。
如tinyint(4),如果实际值是2,如果列指定了zerofill,查询结果就是0002,左边用0来填充。
所以,这些字段用默认长度就可以了,不需要在自己去设置长度,基本没用,而且还增加了表字段类型的多样化。
varchar(M)中的M是字符串的长度,所以mysql开发中需要区分整数类型和字符串类型的区别。

转自:https://blog.csdn.net/qq_15037231/article/details/79481204
https://blog.csdn.net/jaryle/article/details/52025023

上一篇 下一篇

猜你喜欢

热点阅读