02 | MySQL字符集和校对顺序
Posted mhp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、聚集函数、别名等。
以上是关于02 | MySQL字符集和校对顺序的主要内容,如果未能解决你的问题,请参考以下文章