decimal

精度比较高的东西,比如money,我会用decimal类型,不会考虑float,double,因为他们容易产生误差,

DECIMAL列的声明语法是DECIMAL(M,D)。在MySQL 5.1中,参量的取值范围如下:

·         M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254)。

·         D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。

说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。

如DECIMAL(5, 2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。




Char,定长字符串

格式:char(L)

L指字符数,小于等于255

mysql存储中文、decimal_最大值

不能插入超过长度的字符串

mysql存储中文、decimal_最大值_02

思考:我们插入一个中文字可以吗?

可以插入一个中文字。

mysql存储中文、decimal_double_03

MYSQLchar型它定的长度,是字符数,不是字节数!


Varchar,可变长度字符串

格式:varchar(L)

L<65535,具体大小和编码有关!

L是几,就可以存几个字母或者相同数量的汉字。

保存的时候,字符的实际长度+1<255】或者+2字节【255<L<65535】(用于保存字符的实际长度)

建议:长度大于255时,就用text类型。

Utf8下:

mysql存储中文、decimal_money_04


同样可知,char型长度必须小于255/3-1


Gbk下:

mysql存储中文、decimal_字符串_05


同样可知,char型长度必须小于255/2-1