查了一下,一般都是这么说的:
TINYINT——一个微小的整数,支持 -128到127(SIGNED),0到255(UNSIGNED),需要1个字节存储
BIT——同TINYINT(1)
BOOL——同TINYINT(1)
SMALLINT——一个小整数,支持 -32768到32767(SIGNED),0到65535(UNSIGNED),需要2个字节存储
MEDIUMINT——一个中等整数,支持 -8388608到8388607(SIGNED),0到16777215(UNSIGNED),需要3个字节存储
INT——一个整数,支持 -2147493648到2147493647(SIGNED),0到4294967295(UNSIGNED),需要4个字节存储
INTEGER——同INT
BIGINT——一个大整数,支持 -9223372036854775808到9223372036854775807(SIGNED),0到18446744073709551615(UNSIGNED),需要8个字节存储
用Navicat之类的可视化工具的时候,“长度”那一项是可以改的。也就是说,我可以把mediumint的长度改成3,或者把tinyint的长度改为10……
我试着改了一下再看表中的数据,是没有变的。
我就想问问,其实这里生效的只是“类型”对吗?
又搜了一下,找到这个:
mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill是有用
如int(3),如果实际值是2,如果列指定了zerofill,查询结果就是002,左边用0来填充。位数限制基本没有意义。
http://www.111cn.net/database...
不知道这里说的“位数”是不是我说的“长度”呢……