Mysql数据库表中int类型的长度
Mysql 我们平时创建⼀个表对 int 类型习惯设置 int(11) ,不知道你有没有试过设置其他长度有什么影响吗?
下⾯咱们来实验⼀下啦。
以下是每个整数类型的存储和范围:
类型字节最⼩值最⼤值
(带符号的/⽆符号的)(带符号的/⽆符号的)
TINYINT1-128127
0255
SMALLINT2-3276832767
065535
MEDIUMINT3-83886088388607
016777215
mysql下载下来是一个文件夹INT4-21474836482147483647
0429*******
BIGINT8-92233720368547758089223372036854775807
018446744073709551615
第⼆列是字节,我们学过⼀个字节 byte 是 8 个位 bit,字节不是计算机存储的最⼩单位,位才是,⼀个位代表⼀个 0 或者 1 ,8 个位 bit 组成⼀个字节,⼀般⼀个字节⽤ B 来表⽰ byte ,⽤⼩写 b 来表⽰ bit 。
计算机存储单位的换算:
1B=8b
1KB=1024B
1MB=1024KB
根据 int 类型允许存储的字节数是 4 个字节, 我们就能换算出 int 类型 UNSIGNED (⽆符号)类型的能存储的最⼩值为 0 , 最⼤值为4294967295 (即 4B=32b, 最⼤值即为 32 个 1 组成);
⼆我们建表时设置的长度 int(11) 或者设置成 int(3)或 int(6),
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`i1` int(3) unsigned zerofill DEFAULT NULL,
`i2` int(6) unsigned zerofill DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
其实都是可以存储 4 个字节的⽆符号整数的。当有设置 zerofill 时,数字不⾜3位或6位时,前⾯会⽤ 0 补齐
Mysql 还⽀持选择在该类型关键字后⾯的括号内指定整数值的显⽰宽度(⽐如INT(6))。
该可选显⽰宽度规定⽤于显⽰宽度⼩于指定的列宽度的值时从左侧填满宽度。
显⽰宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显⽰。
也就是说,int 的长度并不影响数据的存储精度,长度只和显⽰有关,为了让⼤家看的更清楚,我们在上⾯例⼦的建表语句中,使⽤了zerofill。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。