ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【MySQL】关于MySQL中的字符集?

2021-11-17 22:33:44  阅读:130  来源: 互联网

标签:字节 utf8 MySQL 字符集 关于 规则 比较


  • MySQL支持哪些字符集?

    我们可以通过输入以下命令进行查看

    SHOW CHARACTER SET
    

    上图查询结果中的MaxLen列,其含义表示的是该字符集中表示一个字符最多需要的字节数。通过上图红框,我们可以看出MySQL中的utf8字符集、utf8mb4字符集的MaxLen值分别为3、4。而我们知道实际在utf8字符集中,其需要1~4个字节来表示一个字符。那为啥MySQL下的utf8字符集却最多只需3个字节呢?原因在于MySQL中一个字符所用的最大字节长度有时可能会对存储、性能等方面造成影响,故早期MySQL设计者对于utf8字符集的支持只到3个字节长度的字符,即其对于utf8中需要4个字节表示的字符是不支持的。故MySQL中的utf8字符集又被称之为utf8mb3字符集(most bytes 3) 。通常3字节的utf8字符已经能够满足绝大多数场景的需要了。但对于一些特殊场景,如emoji表情在实际的utf8字符集中就需要4个字节来表示。为此MySQL从5.5.3版本开始,提供了utf8mb4字符集,其是utf8(utf8mb3)的超集,将utf8字符的支持拓展到4字节。故utf8mb4才是我们真正意义上的utf8字符集。

  • MySQL支持哪些排序规则(Collation) ?

    我们在创建数据库的时候除了会设置字符集还会选择一个叫Collation的东西,我们通常叫它排序规则。

    我们可以通过输入以下命令进行查看

    SHOW COLLATION
    

    在MySQL中,一个字符集下可以支持多个比较规则,而一个比较规则却只关联一个字符集。故比较规则的命名是以其所关联的字符集名称开头,即名称utf8_general_ci中的"utf8"表示该比较规则只能在utf8字符集下才可以使用。当然该关联性也可以从Charset列看出。名称中间的部分表示该比较规则以哪种语言的规则进行比较,例如utf8_croatian_ci规则的"croatian"表示克罗地亚语,则该比较规则是以克罗地亚语的规则进行比较。这里名称utf8_general_ci中的"general"表示其是一种通用的规则。而名称中的"ci"后缀则意为该比较规则不区分大小写。下面列出了常见后缀的含义。上图Default列如果为YES,则表示该比较规则是其所关联的字符集的默认比较规则,即utf8_general_ci是MySQL中utf8字符集默认的比较规则.

    MySQL中的字符集、比较规则有四个级别——即服务器级别、数据库级别、表级别、列(字段)级别。其作用范围正如其名,依次降低分别为MySQL服务、数据库、表、列(字段)。某个级别如果没有显式指定字符集和比较规则,则会用上一个级别的字符集和比较规则的设定。比如,创建表时若未指定字符集和比较规则,则该表会继承使用其所在数据库的字符集、比较规则配置

    我们知道在一个字符集下其可能对应有多个比较规则,并且其中有一个比较规则是该字符集的默认比较规则,故当我们仅显式的配置字符集而未指定比较规则时,则会使用该字符集对应的默认比较规则;而对于一个比较规则而言,其只可能关联一个字符集,故当我们仅显式的配置比较规则而未指定字符集时,则会使用该比较规则所关联的字符集

  • 查看表的字符集

    SHOW CREATE TABLE xxxx;
    

标签:字节,utf8,MySQL,字符集,关于,规则,比较
来源: https://www.cnblogs.com/gronbu1/p/15569891.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有