第九章 1mysql字符集和校对规则,选择合适的字符集,查询服务级,数据库级,表级别的字符集设置和校对规则

国际标准化组织 iso

 

GBK 全称<汉字内码扩展规范>  发布于 1995 年;

 

GBK 不是一个强制性的国家标准,只是一个行业指导规范,并没有强制力,但由于得到了 Microsoft windows 95的支持而大为流行;

 

Mysql支持 几十种字符集;应该如何选择呐,有以下可以参考:

  1. 如果需要支持各种语言,文字,或作发布使用不同语言或国家,mysql目前使用UTF-8;
  2. 需要考虑已有数据,如果已有数据,需要考虑字符集的兼容性,就是后来设置的字集要比之前使用的字集范围大;
  3. 如果只需要支持一般中文,并且数据量很大,性能要求很高,用jbk比较合适,因为jbk一个汉字占2个字符,utf8 占3个字符;满足需求的情况下gbk可以减少存储占用,提供检索效率;
  4. 如果只有少量汉字,主要处理英文 则建议选择UTF8;因为 utf8 英文只占一个字符;gbk英文占2个字符;所以会大大减少存储的大小;
  5. 如果客户端需要支持相同的字符集,则可以设置服务器级别的字符集:

在my.cnf 中配置 character-set-server = uft-8;  uft-8 只是示例,可以设置自己需要的字符集;

 

Oracle在同一数据库只能使用一种字符集,mysql 支持字符集涉及的级别有:服务器级别,数据库级别,表级别,列(字段)级别;所以MySQL在字符集设置上比oracle更灵活

 

查看所有可用(支持)的字符集:截图可用看到字符集的种类非常非常多;

Show character set;

 

 

Mysql字符集包括 存储字符集和校验规则;

存储字符集就是指数据存储字符串的方式;

校验规则就是用来定义比较字符串的方式。字符集和校验规则是一对多的关系;

可以用 show collation like ‘utf-8%’

 查看校对规则: 查询后没什么结果。。

也可以用 desc information_schema.CHARACTER_SETS  查看字符集和该字符集默认的校对规则;

 

校对规则命名规范: 第一个是字符集的名称开始 ,然后是 语言名称,最后是三种类型

_ci(大小写不敏感)  _cs(大小写敏感)  _bin(二元,即比较是基于字符集编码的值而与language无关【对大小写敏感】) ;例如 gbk_chinese_ci   ;

 

 

mysql 支持字符集涉及的级别有:服务器级别,数据库级别,表级别,列(字段)级别;

查看服务级别的编码设置:show VARIABLES like 'character_set_server';

查看数据库的编码字符集:show VARIABLES like 'character_set_database';

查看当前数据库的校对规则:

show VARIABLES like 'collation_database';

如果对表进行字符集的修改,表已存在的数据不会影响,还是以原来的字符集进行存放;

查看表的字符集和校对规则,可以用show create table 表名;

 

发布了301 篇原创文章 · 获赞 197 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/boss_way/article/details/98638356