02 | MySQL字符集和校对顺序
全球化与本地化
本文主要介绍mysql处理不同字符语言的基础知识
字符集和校对顺序
由于不同的语言和字符集需要以不同的方式存储和检索MySQL,因此需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法。
重要术语
术语 | 含义 |
---|---|
字符集 | 字母和符号的集合 |
编码 | 某个字符集成员的内部表示 |
校对 | 规定如何比较字符集的指令 |
使用字符集和校对顺序
查看所支持的字符集的完整列表
-- 查看所有的可支持的字符集 SHOW CHARACTER SET; -- 查看所有可支持的校对顺序 SHOW COLLATION;
查看目前所使用的字符集和校对顺序
SHOW VARIABLES LIKE 'character%'; SHOW VARIABLES LIKE 'collation%';
不同的表,甚至不同的列都可能需要不同的字符集,而且两者都可以在创建表时指定
给表指定字符集和校对
CREATE TABLE mytable ( column1 INT, column2 VARCHAR(10) ) DEFAULT CHARACTER SET hebrew COLLATE hebrew_general_ci;
此语句创建一个包含两列的表,并且指定一个字符集和一个校对顺序
MySQL可使用如下方式确定使用什么样的字符集和校对:
- 如果指定
CHARACTER SET
和COLLATE
两者,则使用这些值。 - 如果只指定
CHARACTER SET
,则使用此字符集及其默认的校对(如SHOW CHARACTER SET
的结果中所示)。 - 如果既不指定
CHARACTER SET
,也不指定COLLATE
,则使用数据库默认。
给每个列指定字符集和校对顺序
CREATE TABLE mytable( column1 INT, column2 VARCHAR(10), column3 VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_danish_ci )DEFAULT CHARACTER SET hebrew COLLATE hebrew_general_ci;
校对在对用ORDER BY
子句检索出来的数据排序时起重要的作用。如果需要用与创建表时不同的校对顺序排序特定的SELECT语句,可以在SELECT语句自身中进行:
SELECT * FROM customers ORDER BY CAST(cust_name AS ) ,cust_address COLLATE latin1_general_cs;
SELECT的其他COLLATE子句:除了这里看到的在ORDER BY子句中使用以外, COLLATE还可以用于GROUP BY、 HAVING、聚集函数、别名等。
相关推荐
CoderToy 2020-11-16
bianruifeng 2020-11-16
云中舞步 2020-11-12
敏敏张 2020-11-11
暗夜之城 2020-11-11
好记忆也需烂 2020-11-11
Coder技术文摘 2020-09-29
huacuilaifa 2020-10-29
Gexrior 2020-10-22
lpfvip00 2020-10-07
云中舞步 2020-09-11
康慧欣 2020-09-10
emmm00 2020-11-17
王艺强 2020-11-17
ribavnu 2020-11-16
wangshuangbao 2020-11-13
苏康申 2020-11-13
vivenwan 2020-11-13