Mysql数据库字符集与排序规则

字符集

因为各国的语言不同对应的语言编码不同,数据库字符集就是用来定义字符在数据库中的编码的集合。

常见的字符集:utf8、Unicode、GBK、GB2312(支持中文)、ASCCI(不支持中文)

排序规则

目前大家基本通用的utf8,对应的常用排序规则为:utf8_general_ci,排序规则主要的作用是二进制保存和区分大小写

排序尾缀一般分为两种:utf_bin和utf_general_ci

utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容
utf8_general_ci校对速度快,但准确度稍差。(准确度够用,一般建库选择这个)
utf8_unicode_ci准确度高,但校对速度稍慢。

utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。

影响

库的字符集对表和字段的字符集的影响

  • 数据库字符集 > 表的字符集 > 字段的字符集 (从前往后优先级由低到高,从左往右继承,如果表没设置字符集,继承数据库的,如果字段没设置,继承表的)
  • 数据库的字符集如果是utf8,表和字段的字符集继承
  • 字段的字符集和排序规则继承自表,例如表的字符集为latin1,那表的字段(字符型)都是latin1
  • 修改表的字符集对新增加字段有用,但是老字段字符集不变,应再编写脚本修改老数据的字符集
  • show variableslike “%char%” ;显示 character_set_database 为 latin1,如果想显示utf8,应该修改所有数据库的默认字符集为utf8

You May Also Like

About the Author: 一块自由的砖

码农一个,一块自由勤恳的砖,哪里需要哪里搬!( ̄▽ ̄)"