使用字符集和校对顺序
MySQL支持众多的字符集。为查看所支持的字符集完整列表,使用以下语句:
输入:
分析:这条语句显示所有可用的字符集以及每个字符集的描述和默认校对。
为了查看所支持校对的完整列表,使用以下语句:
输入:
分析:此语句显示所有可用的校对,以及它们适用的字符集。可以看到有的字符集具有不止一种校对。例如, latin1 对不同的欧洲语言有几种校对,而且许多校对出现两次,一次区分大小写(由 _cs 表示),一次不区分大小写(由 _ci 表示)。
通常系统管理在安装时定义一个默认的字符集和校对。此外,也可以在创建数据库时,指定默认的字符集和校对。为了确定所用的字符集和校对,可以使用以下语句:
输入:
实际上,字符集很少是服务器范围(甚至数据库范围)的设置。不同的表,甚至不同的列都可能需要不同的字符集,而且两者都可以在创建表时指定。
为了给表指定字符集和校对,可使用带子句的 CREATE TABLE:
输入:
分析:此语句创建一个包含两列的表,并且指定一个字符集和一个校对顺序。
这个例子中指定了 CHARACTER SET 和 COLLATE 两者。一般,MySQL如下确定使用什么样的字符集和校对。
1.如果指定 CHARACTER SET 和 COLLATE 两者,则使用这些值。
2.如果只指定 CHARACTER SET ,则使用此字符集及其默认的校对(如SHOW CHARACTER SET 的结果中所示)。
3.如果既不指定 CHARACTER SET ,也不指定 COLLATE ,则使用数据库默认。
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
除了能指定字符集和校对的表范围外,MySQL还允许对每个列设置它们,如下所示:
输入:
分析:这里对整个表以及一个特定的列指定了 CHARACTER SET 和COLLATE 。
如前所述,校对在对用 ORDER BY子句检索出来的数据排序时起重要的作用。如果你需要用与创建表时不同的校对顺序排序特定的 SELECT 语句,可以在 SELECT 语句自身中进行:
输入:
分析:此 SELECT 使用 COLLATE 指定一个备用的校对顺序(在这个例子中,为区分大小写的校对)。这显然将会影响到结果排序的次序。
临时区分大小写 上面的 SELECT 语句演示了在通常不区分大小写的表上进行区分大小写搜索的一种技术。当然,反过来也是可以的。
SELECT 的其他 COLLATE 子句 除了这里看到的在 ORDER BY子句 中使用以外, COLLATE 还可以用于 GROUP BY 、 HAVING 、聚集函数、别名等。
最后,值得注意的是,如果绝对需要,串可以在字符集之间进行转换。为此,使用 Cast() 或 Convert ()函数。
【相关推荐】
1.
mysql免费视频教程
2.
MySQL字符集和校对顺序简介
3.
MySQL事务-使用保留点、更改默认的提交行为详解
4.
MySQL事务-ROLLBACK,COMMIT用法详解
5.
MySQL事务处理实例讲解
show character set;show collation;show variables like 'character%';
show variables like 'collation%';create table mytable
(
columnn1 int,
columnn2 varchar(10)
)default character set hebrew collate hebrew_general_ci;create table mytable
(
columnn1 int,
columnn2 varchar(10),
columnn3 varchar(10) character set latin1 collate latin1_general_ci
latin_grneral_ci
)default character set hebrew collate hebrew_general_ci;select * from customers order by lastname,firstname collate latin1_general_cs;