Mysql5.7 INT类型

INT类型

① 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类型和是否字符有关系。 

 

 

③ 自增长  AUTO_INCREMENT 

  表示在我们不输入a的值时,这个值会自动增长。且一张表只有一个字段设置,且必须是索引。

 返回上一次插入的自增值;

 建议:

 我们在系统建表的时候,在添加自增值的字段时,例如id字段,强烈建议使用bigint,不要使用int,因为int类型在互联网的今天是很容易到达的。

 注意:

在这里需要注意的一点是:当我们在t表中,最后一次自增长的时候,id是等于5时,那么我们现在执行了delete 把id=5的删除了,这时我们重启msyql后,在插入一条自增长的时候,我们的id还是从5开始的,按以前的规律来说,我们 id 应该是6的,我们这里的id是不支持回滚的,这是mysql的一个小问题。 mysql8.0后就没有这个问题了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值