本文最后更新于 6324 天前,其中的信息可能已经有所发展或是发生改变。
这个可选的宽度规格说明是用于在数值显示时,对某些值的宽度短于该列宽度的值进行左填补显示的,而不是为了限制在该列中存储值的宽度,也 不是为了限制那些超过该列指定宽度的值的可被显示的数字位数。注意,如果在一个整型列中存储一个超过显示宽度的更大值时,当 MySQL 为某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这种情况下,MySQL 信任地认为所有的值均适合原始的列宽度。
而int本身就是4个字节 bigint是8个字节 所以说int(X)的含义就是 int决定数据存储的字节 X表示期望数据的列宽度
在SQL语句中int代表你要创建字段的类型,int代表整型,11代表字段的长度。
这个代表显示宽度
整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度是多少个字符,bigint都要占用8个字节。
貌似这篇文章缺少点前提,没看太懂。
这个X指的是(join)查询的时候生成的临时表么?
看的还是迷迷糊糊的,麻烦博主通俗点讲…
谢谢
嘿 又搜到你博客来了 鄙视下,天下文章一大抄啊
这个列宽到底有什么意义呢? 请教下
@sostart, 这个代表显示宽度,
@kimi, 能详细解释下’显示宽度’到底是个什么意思么 这个设置会起什么作用 ..我想很多人和我一样困惑 辛苦kimi
@sostart, 显示宽度是用于在数值显示时,对某些值的宽度短于该列宽度的值进行左填补显示的,而不是为了限制在该列中存储值的宽度,也不是为了限制那些超过该列指定宽度的值的可被显示的数字位数。注意,如果在一个整型列中存储一个超过显示宽度的更大值时,当 mysql 为某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度。整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系。同时,不管设定了显示宽度是多少个字符,bigint都要占用8个字节。
@kimi, 填补的意义是什么?为什么要填补?int最大值是11位,我设置int(15)会产生什么效果?
varchar(x)这个x与int(x)是同意么?
求指教
@sostart, 比如int(8)存储的是123这个数字,特定的情况下可能会显示成00000123。varchar的x和int的x是一个意思,x只影响显示宽度,和存储大小没有关系的。
kimi你的说法是错误的. 字符串类型的x与数值型的x不是一个意思. 字符串类型的x代表的是可保存的长度, 也就是会限制这个列的保存长度. 而数值型的x你说的倒是对的.
所以varchar(20)代表的意思就是这个列的最大长度就是20. 长度超过20的字符串在MYSQL不使用严格模式时, 只保存前20位, 而当MYSQL使用严格模式时, 会报错, 也就是通常所见的data too long