标签:建库 读书笔记 order by 比较 efault 通过 字符 collect 返回结果
字符集指的是某个字符范围的编码规则
ASCII(128个):1个字节进行编码,包含空格,标点符号,数字,大小写字母,一些不可见字符
ISO 8859-1/latin1(256个):1个字节进行编码,ASCII基础上扩充了128个西欧常见字符
GB2312(6762个):因兼容ASCII字符集,所以在ASCII内的1个字节进行编码,反之2个字节;包含6763个汉字,682个拉丁字母,希腊字母,日本平假名/片假名,俄语西里尔字母
GBK:对GB2312进行扩充
Unicode
因为一个字符所用的最大字节长度会影响数据库的存储和性能,所有一般我们都使用的1-3个字节表示字符。但如果有存储emoji等使用4个字节来编码一个字符的情况,可使用utf8mb4
可通过命令show charset;查看当前数据库支持的字符集,及其默认比较规则default_collection和最大长度max_len。
MySQL中字符集和比较规则有四种级别:
服务器级别:可在配置文件中更改
查看字符集:SHOW VARIABLES LIKE ‘character_set_server‘; ? 查看比较规则:SHOW VARIABLES LIKE ‘collation_server‘;
数据库级别:建库时不指定默认使用服务器级别配置,建后不可更改。
查看字符集:SHOW VARIABLES LIKE ‘character_set_database‘;
查看比较规则:SHOW VARIABLES LIKE ‘collation_database‘;
表级别:建表时不指定默认使用数据库级别配置,建后不可更改。
列级别:建列时不指定默认使用表级别配置,可通过alter修改。
客户端与服务器请求过程中涉及三个系统变量,影响客户端请求内容和服务器返回结果的字符集转换。如果这三个系统变量不一致,将影响请求结果与我们期望的不一致。
系统变量 | 描述 |
---|---|
character_set_client | 服务器解码请求时使用的字符集 |
character_set_connection | 服务器处理请求时会把请求字符串从character_set_client 转为character_set_connection |
character_set_results | 服务器向客户端返回数据时使用的字符集 |
可通过SET NAMES 字符集名;同时更改这三个变量,等同于SET character_set_client = 字符集名; SET character_set_connection = 字符集名;SET character_set_results = 字符集名;
或者希望在客户端启动时设置成一样的,可在配置文件中写为default-character-set=utf8
比较规则的作用体现在字符串大小的表达式,对某个字符串的排列(order by)
注:来自MySQL是怎样运行的读书笔记
标签:建库 读书笔记 order by 比较 efault 通过 字符 collect 返回结果
原文地址:https://www.cnblogs.com/hangzhi/p/10947966.html