MySQL必知必会-第27章 全球化和本地化(字符集和校对)

全球化和本地化

1.重要术语

1)字符集:字母和符号的集合;
2)编码:字符的内部表示;
3)校对:规定字符如何比较的指令;

2.字符集和校对可以在哪些等级设置

1)列级、表级、数据库级、服务器级;
2)字符集很少是在数据库级和服务器级指定的,因为不同的表、不同的列都可能需要不同的字符集;

3.使用字符集和校对顺序

3.1 一些常用的语句
-- 1. 查看MySLQ支持的所有字符集的完整列表
--    以及每个字符集对应的【描述】和【默认的校对】
show character set;
-- 2. 查看MySQL支持的校对以及它们适用的字符集
--    一种字符集不止一种校对
--    以_cs结尾的校对区分大小写, 以_ci结尾的校对不区分大小写
show collation;
-- 3. 查看当前使用的字符集和校对
show variables like 'character%';
show variables like 'collation%';
3.2 创建表的时候指定字符集和校对
-- 基本语法
CREATE TABLE 表名(
	列名1 列类型1 其他要求,
	列名2 列类型2 ... character set latin1 collate latin1_general_ci,
	...
)default character set hebrew
collate hebrew_general_ci;

【说明】
1)这里分别在表级和列级指定了character set 和 collation,要注意指定collation的时候使用的是collate关键字;
2)创建表的时候:
a.如果指定character set 和 collate,则使用这些值;
b.如果只指定了character set,则使用该字符集及其默认的校对;
c.如果都没指定,则使用数据库默认;

3.3 select的collate子句

a.在order by子句中指定collate

-- 在排序的时候,使用于建表时不同的校对顺序进行排序
select * from 表名
order by 列名1,列名2,..
collate 校对(如 latin1_general_cs);

【说明】
这个例子演示了在通常不区分大写的表上区分大小写搜索的一种技术。
b.collate还可以用于
1)group by子句;
2)having子句;
3)聚合函数;
4)别名等。

3.4 cast()或convert()函数

可以使用cast()或者convert()函数使字符串在不同字符集之间进行转换

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页