0
点赞
收藏
分享

微信扫一扫

Mysql5.7 INT类型

田妞的读书笔记 2022-03-11 阅读 47

① signed 和 unsigned 是否有字符

signed 有字符,代表可以插入负数,其区间就是如下图

占用空间最小值最大值
TINYINT1-128 127
SMALLINT2-3276832767
MEDIUMINT3-83886088388607
INT4-21474836482147483647
BIGINT8-92233720368547758089223372036854775807

unsigned 无字符串,代表都是大于等于0的存储,其区间就是如下图

占用空间最小值最大值
TINYINT102的8次方 - 1
SMALLINT202的16次方 - 1
MEDIUMINT302的24次方 - 1
INT402的32次方 - 1
BIGINT802的64次方 - 1

注意

TINYINT类型   1个字节  1个字节=8bit

1 bytes = 8 bit   那么8bit可以放2的8次方个数字,就是256个数字,signed有符号类型256个数字要需要放 负数和0  那么就是 -128~0~127  这些数字,那么区间就是-128到127.  unsigned无符号类型则可以放0~255; 

unsigned 和 signed的区别就是有没有负数,但是设置了unsigned无符号的字段,插入了负数,那么就会报错。 所以建议除非很特殊的情况,还是不需要设置这个unsigned;

② zerofill 属性

 zerofill自动填充的属性,怎么自动填充了,就是当设置int(5)时,如果存储的值是10,那么显示的时候会自动在前面加000,如果存储的是100000,大于5位的话,也是正常的显示的。如果设置这个属性,那么这个字段必须是无符号的。

int(10) 括号里面的10,并不代表存储的10个字节什么的,而是表示的是zerofill填充的位数。这块一定要理解,因为以前一直用naticat图形化建表,设置int长度时,输入一个2,以为就是两个字节或者只能2位数,现在发现原来是错误的。

 

可以将b的 int(10) 设置 int(5); 然后填充也是5位,插入大于5位的也是可以的,看数据就知道了。b值的长度跟int(5)没有关系。只跟int类型和是否字符有关系。 

 

 

举报

相关推荐

0 条评论