MySQL提供了多种字符集和排序规则选择,其中字符集设置和数据存储以及客户端与MySQL实例的交互相关,排序规则和字符串的对比规则相关
(1). 字符集的设置可以在MySQL实例、数据库、表、列四个级别
(2). MySQL设置字符集支持在InnoDB, MyISAM, Memory三个存储引擎
(3). 查看当前MySQL支持的字符集的方式有两种,一种是通过查看information_schema.character_set系统表,一种是通过命令【 show character set; 】查看。
2. 排序规则
每个指定的字符集都会有一个或多个支持的排序规则,可以通过两种方式查看,一种是查看information_schema.collations表,另一种是通过【show collation】命令查看
(1). 查看utf8mb4字符集对应的排序规则有哪些。
show collation where charset ='utf8mb4';
PS: A. 当仅指定了字符集而没有指定排序规则时,则会使用该字符集的默认排序规则 B. 当仅指定了排序规则而没有字符集时,则在该排序规则名称上含有的字符集会被使用 C. 当数据库创建时没有指定这两项,则使用实例级别的字符集和排序规则 更多C++后台开发技术点知识内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。 C/C++Linux服务器开发高级架构师/C++后台开发架构师免费学习地址 【文章福利】另外还整理一些C++后台开发架构师 相关学习资料,面试题,教学视频,以及学习路线图,免费分享有需要的可以点击领取
二. 实操
1. 查看数据库编码
windows下mysql5.7默认编码如下图
show variables like '%character%';
PS:
(1). 每个数据库客户端连接都有自己的字符集和排序规则属性,客户端发送的语句的字符集是由character_set_client决定,而与服务端交互时会根据character_set_connection和collation_connection两个参数将接收到的语句转化。当涉及到显示字符串的比较时,由collation_connection参数决定,而当比较的是字段里的字符串时则根据字段本身的排序规则决定
(2). character_set_result 参数决定了语句的执行结果以什么字符集返回给客户端
(3). 客户端可以很方便的调整字符集和排序规则,比如使用SET NAMES'charset_name' [COLLATE 'collation_name']表明后续的语句都以该字符集格式传送给服务端,而执行结果也以此字符集格式返回。
SET character_set_client = utf8mb4; SET character_set_results = utf8mb4; SET character_set_connection = utf8mb4; 2. 安装完MySQL后的通用配置