无论是用代码创建数据库还是使用可视化工具创建数据库时,有一个可选项无法避免,那就是 字符集的编码和 排序规则的设置。如果你有这方面的困惑请往下看。
数据库建立
字符集:
一般选择 UTF-8
一般有两个推荐项,供我们选择:utf8
和utf8mb4
。
这个两个的关系和解释
utf8mb4
兼容utf8
,且比utf8能表示更多的字符。- utf8mb4:utf8mb4字符集主要从mysql5.5开始被支持,正在成为未来趋势字符集。
- utf8:中英文混合的环境,目前使用的比较多,互联网场景的Linux/UNIX及MySQL都支持UTF8。
正常使用utf8
即可(因为现在用的多,utf8更精简),选择utf8mb4
也可以。
Ps:如果不设置该内容,默认是latin1
,在中文插入操作中会出现问题,故不推荐使用默认字符集。
排序规则:
一般选择 utf8_general_ci
这里会涉及到一个数据库数据选择,需要根据具体情况去选择编码。字符集的编码一般会通过数据库的方式进行统一,而排序规则会根据表或者根据字段去重新指定。
通常我们会用到utf_bin
和utf_general_ci
;而这两个的解释和区别:
utf_bin
排序规则,该字段的大小写会被区别对待,例如:a 和 A 会别区别对待。utf_general_ci
排序规则,则不会区分大小写,一般区分大小写的密码不太适合用这个。
例如SELECT * FROM table WHERE txt = 'a'
因为utf8_bin是区分大小写的,所以在utf8_bin中执行SELECT
找不到 txt = 'A' 的那一行, 而 utf8_general_ci则可以。
排序规则列举
utf8_bin
:字符串每个字符串用二进制数据编译存储。区分大小写,而且可以存二进制的内容utf8_general_ci
校对速度快,但准确度稍差。(准确度够用,一般建库选择这个)utf8_unicode_ci
准确度高,但校对速度慢。
Sql语句创建数据库
这里给出Sql语句创建数据库,并且同时指定两个规则,可以直接复制使用。
以下语句创建了一个demo
数据库,并指定了utf8
编码和utf8_general_ci
排序规则。
CREATE DATABASE demo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;