赞
踩
1.varchar类型的长度是指这个字段的字符(字母或汉字)个数。
2.数字类型的长度就不是这个意思,更为复杂。
int类型:长度的设定值范围1~255(设置0时自动转为11,不设置时自动转为默认的11)(显示宽度),在此范围内任意长度值的字段值范围都是-2147483648~2147483647(即-2³¹-1~2³¹-1)
tinyint类型:长度设定值范围1~255(设置0时自动转为4,不设置时自动转为默认的4)(显示宽度),在此范围内任意长度值的字段值范围都是-128~127(-2⁷-1~2⁷-1)
如:
指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。
总结:显示宽度与存储大小或类型包含的值的范围无关。可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。当 mysql 为某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度。
这个可选的宽度规格说明是用于在数值显示时,对某些值的宽度短于该列宽度的值进行左填补显示的,而不是为了限制在该列中存储值的宽度,也 不是为了限制那些超过该列指定宽度的值的可被显示的数字位 数。
要查看出不同效果记得在创建类型的时候加 zerofill这个值,表示用0填充,否则看不出效果的。
我们通常在创建数据库的时候都不会加入这个选项,所以可以说他们之间是没有区别的。
实例:
1.varchar
varchar(5):字段只允许最多5个字符或者5个汉字
2.int
INT(1):字段值范围在-2147483648~2147483647(即-2³¹-1~2³¹-1)内的数值都可以insert、select、update,此处宽度指示器的数值1不起作用。可手动在navicat中改此字段的值,也可通过sql修改。
int(1)、int(4)、int(11)和int(110)表示意思是一样的。
INT(M) ZEROFILL,加上ZEROFILL后M才表现出不同,比如 INT(3) ZEROFILL,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果INT(3)和INT(10)不加ZEROFILL,则它们没有什么区别.M不是用来限制INT列内保存值的范围的.int(M)的最大值和最小值与UNSIGNED有关。
MySQL类型关键字后面的括号内指定整数值的显示宽度(例如,INT(11))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。
所以INT(1)和INT(11)默认是没有任何区别的!!!
参考:https://blog.csdn.net/yangyang_01/article/details/80681187
3.float
float(7,3):字段总允许宽度为7,其中整数部分为4位(数值范围可在0-9999),小数部分为3位(数值范围可在0-999)
第一次设置此字段成功后,不可再次手动在navicat中此字段所在数据行的所有字段值也不可手动删除这条记录,但可通过sql修改。
4.tinyint
tinyint(1):(类似int)字段值范围在-128~127(-2⁷-1~2⁷-1)内的数值都可以insert、select、update,此处宽度指示器的数值1不起作用。可手动在navicat中改此字段的值,也可通过sql修改。
5.double
double(7,3):字段总允许宽度为7,其中整数部分为4位(数值范围可在0-9999),小数部分为3位(数值范围可在0-999)
可手动在navicat中改此字段及同数据行其他字段的值,也可通过sql修改。
参考:
http://www.cnblogs.com/echo-something/archive/2012/08/26/mysql_int.html
http://www.cnblogs.com/huligong1234/archive/2012/06/11/2545682.html
http://blog.csdn.net/lyd518/article/details/20703095
http://blog.knowsky.com/253505.htm
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。