我这里有一份数据库设计图,这个人在设计的时候喜欢指定整型字段的长度,比如
int(10),smallint(4),tinyint(2)
这样有必要吗?还是指定长度后有哪些好处?

解决方案 »

  1.   

    即便整型指定为int(2),存储后这个字段里的值应该也还是占4个字节的长度吧?
      

  2.   


    是的。 建议看看手册中的说明

    MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替。例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004。请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度。
      

  3.   

    这个显示宽度究竟是怎样一个显示宽度,比如字段类型是smallint(4),里面存放了一个值4,我从数据库里查询出来是4,而不是   4?