Mysql的字符集与排序规则
Mysql的排序规则
在新建MySQL数据库或表的时候经常会选择字符集和排序规则。数据库用的字符集和排序规则是什么呢?
字符集
字符集一般都选择utf8,那么utf8mb4又是什么呢?
utf8mb4兼容utf8,且比utf8能表示更多的字符。至于什么时候用,看做什么项目了,在博文
http://blog.****.net/leelyliu/article/details/52879685
看unicode编码区从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候需要存储那些字符,你才用utf8mb4,否则只是浪费空间(utf8mb4比utf8所占空间大)。
排序规则:
是指对指定字符集下不同字符的比较规则。其特征有以下几点:
- 两个不同的字符集不能有相同的排序规则;
- 两个字符集有一个默认的排序规则;
- 有一些常用的命名规则。如_ci结尾表示大小写不敏感(caseinsensitive),_cs表示大小写敏感(case
sensitive),_bin表示二进制的比较(binary),a 和 A 会别区别对待.。
utf-8有默认的排序规则:
命令:SHOW CHARSET LIKE ‘utf8%’;
补充
- utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
- utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
- utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容
- utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
- utf8_general_ci校对速度快,但准确度稍差。 (准确度够用,一般建库选择这个)
- utf8_unicode_ci准确度高,但校对速度稍慢。