优秀的编程知识分享平台

网站首页 > 技术文章 正文

数据库,MySQL,字符集(Character Set)和校对规则(Collation)

nanyue 2024-07-20 23:52:10 技术文章 6 ℃

概念说明

1、字符集(Character Set)

定义了字符和二进制的对应关系,为字符分配了唯一的编号。

2、字符编码(Character Encoding)

字集码,规定了字符的编号存储到计算机中。如:ASCII、IOS-8859-1、GB2312、GBK,既表示了字符集又表示了对应的字符编码。

3、校对规则(Collation)

也可称为排序规则,在同一个字符集内字符之间的比较规则,字符集和校对规则是一对多的关系,每个字符集都有一个默认的校对规则,字符集和校对规则相辅相成,相互依赖关联。

4、总结

字符集定义了MySQL存储字符串的方式,校对规则定义了MySQL比较字符串的方式。

字符集(Character Set)

1、查询支持的字符集以及默认的校对规则

show character set;

2、查询当前MySQL使用的字符集

show variables like '%character%'

3、MySQL字符编码转换原理

①MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection。

②进行内部操作前将请求数据从character_set_connection转换为内部操作字符集。

校对规则(Collation)

1、查询支付的校对规则

show collation;

2、查询当前MySQL使用的校对规则

show variables like '%character%';

3、校对规则特征

①两个不同的字符集不能有相同的校对规则。

②每个字符集有一个默认校对规则。

③存在校对规则命名约定:以其相关的字符集名开始,中间包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。

4、说明总结

系统使用utf8字符集,若使用utf8_bin校对规则执行SQL查询时区分大小写,使用utf8_general_ci不区分大小写(默认的utf8字符集对应的校对规则是utf8_general_ci)。

实战常用

1、创建数据库指定编码及校对规则

create database demo1 character set=gbk collate=gbk_bin;  

2、创建表指定编码及校对规则

create table demo2(
	id int,
	name varchar(20)
) 
character set=gbk,collate=gbk_bin; 

3、创建表字段指定编码及校对规则

create table demo3(
	id int,
	name varchar(20),
	email varchar(100) collate gbk_bin,
	mobile varchar(100) collate utf8mb4_unicode_ci
) 
character set=gbk,collate=gbk_bin;   

Tags:

最近发表
标签列表