index

cate

Mysql字符集之utf8和utf8mb4的使用问题

utf8mb4

道Mysql的utf8编码并不是真正的UTF-8编码,Mysql的utf8最多只支持3个字节,
而emoji表情、一些特殊的中文字符则需要4个字节才能存储

show variables like 'character%';
#vim /etc/my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

扩展属性ZEROFILL使用时, 默认补充的空格用零代替。
例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004

int(M):       M显示宽度(1~255),显示宽度与存储大小或类型包含的值的范围无关
float(M,D):   M精度(1~7)
double(M,D):  M精度(1~15)
Decimal(M,D): M精度(1~65) D标度(小数位数0~30)
decimal:数字型,不存在精度损失,常用于银行帐目计算。

mysql没有money类型, sql server才有money类型, mysql用decimal存储货币值
money:好处在于可以存储不指定的小数点位数的数值,比较真实
类型 字节 最小值(有符号/无符号) 最大值(有符号/无符号)
TINYINT 1 -128 127
    0 255
SMALLINT 2 -32768 32767
    0 65535
MEDIUMINT 3 -8388608 8388607
    0 16777215
INT 4 -2147483648 2147483647
    0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
    0 18446744073709551615
float 4    
double 8    
decimal 16    
money 8 -922337203685477 922337203685477.5808
smallmoney 4 -214748.3647 214748.3647