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

wKiom1NmaIbwPb8LAAA7qQM_MsA686.jpg

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

wKioL1NmaG-CTI5yAABquP6jYM0970.jpg

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

可以插入一个中文字。

mysql存储中文、decimal_第1张图片

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


Varchar,可变长度字符串

格式:varchar(L)

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

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

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

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

Utf8下:

mysql存储中文、decimal_第2张图片


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


Gbk下:

wKioL1NmZ-Dh_EvDAADsuMcRDbs612.jpg


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