类型         字节          最小值           最大值   
TINYINT     1            -128         127  
SMALLINT    2           -32768        32767
MEDIUMINT   3          -8388608     8388607
INT         4       -2147483648    2147483647
 ...
...
...MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。
INT(4))中,可选宽度为4,是否能保存4宽度的值,不理解这里显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替。例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004。请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度。显示宽度并不限制可以在列内保存的值的范围,那指定宽度是做什么用的其他类型指定宽度于实际存储有什么区别!~

解决方案 »

  1.   

    CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。例如,CHAR(30)可以占用30个字符。字符类型的宽度和数值类型指定的宽度不是一回事吗??看了这句有疑问VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。这句是不是这样理解:使用utf-8字符集就只能存储65,532的一半的字母或汉字,非utf-8则还是65,532个字母和(65,532/2)的汉字3 k us
      

  2.   

    BINARY和VARBINARY允许的最大长度一样,如同CHAR和VARCHAR,不同的是BINARY和VARBINARY的长度是字节长度而不是字符长度。这里又有了字节长度,
    数值类型 叫宽度
    字符类型 叫字符长度
    binary/v 又叫字节长度定义字段是括号里面(int(4)/char(4)/binary(4))表示的是不同的意思吗?mysql高手请教了,才开始使用mysql,不懂~!
      

  3.   

    char(30) 实际上有30个字符,占31个字节。
    int(11) 实际上有11个字符,不足的前面补零,占4个字节。
    同理
      

  4.   

    选择合适的类型就不用了。一个字节的TINYINT,两个字节的SMALLINT,三个字节的MEDIUMINT,四个字节的INT,8个字节的BIGINT。
      

  5.   

    能说明下,mysql字符集设置成了utf-8,
    比如char(4),varchar(4)能存储多少汉字,和设定其他非uft编码存储的字符长度(通俗的讲多少个)相同吗
      

  6.   

    关于mysql字符类型,真的一窍不通~1