众所周知,当你描述varchar或整数字段时,你应该设置它们的长度......
类似于int(5)或varchar(5)......
但是当您尝试将123456添加到两个字段时..而varchar字段截断该值,整数字段不会截断它...
那么描述int length的目的是什么?
答案 0 :(得分:4)
int(5)
没有按照您的想法执行:它指定一个显示宽度为5位的整数字段,即短于5位的数字将用空格字符填充。
在MySQL中,int
值总是4个字节宽,可以从-2,147,483,648到2,147,483,647。
请参阅http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html。
答案 1 :(得分:3)
N
中的INT(N)
,表示应用程序显示长度;由于语法与VARCHAR(N)
的相似性,并且可以理解,经常被误解,因此非常具有误导性。对于我见过的所有应用程序来说,它实际上毫无意义。
适用于所有TINYINT
,SMALLINT
,MEDIUMINT
,INT
,BIGINT
。
答案 2 :(得分:2)
此“长度”似乎仅用于显示:http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
例如,INT(4)指定显示宽度为四位的INT。应用程序可以使用此可选显示宽度来显示宽度小于为列指定的宽度的整数值,方法是用空格填充它们。 (也就是说,此宽度存在于使用结果集返回的元数据中。是否使用它取决于应用程序。)
答案 3 :(得分:2)
INT类型的大小既不是位也不是字节。它只是当字段指定了ZEROFILL时使用的显示宽度。
有关详细说明,请参阅this blog article。
答案 4 :(得分:2)
FRom 10.2. Numeric Types
MySQL支持扩展名 可选择指定显示 中的整数数据类型的宽度 base关键字后面的括号 对于类型。例如,INT(4) 指定具有显示宽度的INT 四位数。这个可选的显示 应用程序可以使用宽度 显示具有宽度的整数值 小于指定的宽度 用左边填充它们的列 空间。 (也就是说,这个宽度是 存在于返回的元数据中 结果集。是否使用 取决于申请。)
显示宽度不受约束 可以存储的值范围 在专栏中。它也没有阻止 值比列显示宽 正确显示宽度。