MySQL的校对规则,你必须要知道。

尹洪亮Kevin

共 1203字,需浏览 3分钟

 · 2021-06-27

在 MySQL 中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下:

CREATE DATABASE [IF NOT EXISTS] <数据库名>[[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>];

MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。

也把校对规则称为排序规则、或对比规则。

二、COLLATE校对规则

对于MySQL中那些字符类型的列,如VARCHARCHARTEXT类型的列,都需要有一个COLLATE类型来告知MySQL如何对该列进行排序和比较

COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCT、GROUP BY、HAVING语句的查询结果。

另外,MySQL建索引的时候,如果索引列是字符类型,也会影响索引创建,总之,凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。

2.1 各种COLLATE的区别

COLLATE通常是和数据编码(CHARSET)相关的,一般来说每种CHARSET都有多种它所支持的COLLATE,并且每种CHARSET都指定一种COLLATE为默认值。例如Latin1编码的默认COLLATElatin1_swedish_ciGBK编码的默认COLLATEgbk_chinese_ciutf8mb4编码的默认值为utf8mb4_general_ci

很多COLLATE都带有_ci字样,这是Case Insensitive的缩写,即大小写无关,也就是说"A"和"a"在排序和比较的时候是一视同仁的。selection * from table1 where field1="a"同样可以把field1为"A"的值选出来。与此同时,对于那些_cs后缀的COLLATE,则是Case Sensitive,即大小写敏感的。

2.2 查询collation

在MySQL中使用show collation指令可以查看到MySQL所支持的所有COLLATE。以utf8和utf8mb4为例,该编码所支持的所有COLLATE如下图所示。

show collation;-- 只查询utf8的collationshow collation like '%utf8%';

 点“在看”变好看噢

浏览 58
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报