多年来,当我为MySQL表创建一个类型为bigint(12)的新列时,我一直在假设该字段限制为最多12位的整数。但是,我最近注意到,最多16位的值可以写入并从bigint(12)定义的列中选择,而没有任何警告或问题。
有人可以帮助我理解为什么会出现这种情况以及该列定义的实际含义是什么?提前谢谢!
答案 0 :(得分:5)
bigint(12)根本没有被截断。 12用于显示目的。
数字类型属性
MySQL支持扩展名 可选择指定显示 中的整数数据类型的宽度 base关键字后面的括号 对于类型。例如,INT(4) 指定具有显示宽度的INT 四位数。这个可选的显示 应用程序可以使用宽度 显示具有宽度的整数值 小于指定的宽度 用左边填充它们的列 空间。 (也就是说,这个宽度是 存在于返回的元数据中 结果集。是否使用 取决于申请。)
显示宽度不会限制可以存储的值范围 在专栏中。它也没有阻止 值比列显示宽 正确显示宽度。
答案 1 :(得分:2)
从MySql文档INT(4) specifies an INT with a display width of four digits
中读取Numeric Type Attributes
部分