Mysql 字符集

字符集与字符比较

字符集

  字符集是某种字符的集合,比如最常见的ASCII码,由127个字符组成,只需要一个字节就能表示;

    我们常说的字符集还是GBK、ISOXXX、UTF8;

  Mysql 我们使用得最多的字符集就是GBK 和 UTF8了;他们都是变长字符集,如果字符在ASCII范围内就使用一个字节表示,其他的字符可能会是2个、3个、4个字节;

  Mysql中的UTF8 有3种, UTF-8字符集字节长度范围:1-4个字节,UTF-16字符集字节长度范围:2-4个字节,UTF-32就是使用4个字节;

    我们通常说的UTF8就是指UTF8mb3,只使用1-3个字节来存储;

  SHOW CHARSET; 可以查看Mysql服务能支持的所有字符集;

字符比较规则

  每种字符集都有自己的比较规则;也可能支持多种比较规则;

  SHOW COLLATION LIKE ‘%UTF%’;  来查看UTF的比较规则;

  后缀英文释义描述

    _ai accent insensitive不区分重音

    _as accent sensitive区分重音

    _ci case insensitive不区分大小写

    _cs case sensitive区分大小写

    _bin binary以二进制方式比较

小结:

1、修改字符集可能会影响字符的比较规则

2、修改字符的比较规则可能会影响字符串

3、他们都可应用于:服务器、库、表、列

  character_set_server(database),collation_server(database)

4、客户端调用服务器的字符变化:

系统变量描述

character_set_client        服务器解码请求时使用的字符集

character_set_connection     服务器处理请求时会把请求字符串从character_set_client转为character_set_connection

character_set_results       服务器向客户端返回数据时使用的字符集

5、不同字符集联表会向上转型:

A表(utf8) 连 B表(utf8mb4 ) B表可以走索引,

M表(utf8mb4) 连 K表(utf8 ) K表不会走索引

 

 

参考文章:<<MySQL是怎样运行的>>

 

posted @ 2019-06-20 09:41  lion_eagle  阅读(176)  评论(0编辑  收藏  举报