MySQL中int(5)最大长度

首先来看看不同类型的长度和大小限制
类型所占字节数大小或长度
byte1字节-128(-2^7)~ 127(2^7-1)
boolean至少1字节这种类型只作为一种标志来记录 true/false 情况
short2字节-32768(-2^15) ~ 32767(2^15 - 1)
char2字节\u0000(即为0) ~ \uffff(即为65,535)
int4字节-2,147,483,648(-2^31) ~ 2,147,483,647(2^31 - 1)
float4字节单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127
long8字节-9,223,372,036,854,775,808(-2^63) ~ 9,223,372,036,854,775,807(2^63 -1)
double8字节双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023
再看看下面的例子

mysql创建一个表,看下面的截图

DROP TABLE IF EXISTS `tb_areainfo`;
CREATE TABLE `tb_areainfo` (
  `id` int(5) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `parentId` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在这里插入图片描述
发现问题了么?int(5)但却有一个7位数的数据,而且正常存储…

原因

在SQL语句中int代表你要创建字段的类型,int代表整型:

  • 这个5代表显示宽度,整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度是多少个字符,bigint都要占用8个字节。
  • int是整型,(5)是指显示字符的长度,最大显示长度为255,声明整型数据列时,我们可以为它指定个显示宽度M(1~255),如INT(5),指定显示宽度为5个字符,如果没有给它指定显示宽度,MySQL会为它指定一个默认值,如果长度不足,它会在前面加0,显示宽度只用于显示,并不能限制取值范围和占用空间,如:INT(5)会占用4个字节的存储空间,并且允许的最大值也不会是99999,而是 INT整型所允许的最大值。
  • MySQL有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。它们之间的区别是取值范围不同,存储空间也各不相同。

所以INT(M)是它的显示长度(要想要自动补充0的话,就需要加上ZEROFILL参数),不是它的存储长度,存储长度限制还是取决与类型的最大的长度。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值