mysql 全球化和本地化(字符集和校对的设置)
全球化和本地化
字符集为字母和符号的集合;
编码为某个字符集成员的内部表示;
校对为规定字符如何比较的指令。(也就是 字符比较如何比较大小)
校对在对用ORDER BY子句检索出来的数据排序时起重要的作用
使用何种字符集和校对的决定在服务器、数据库和表级进行。
显示所有可用的字符集以及每个字符集的描述和默认校对:
SHOW CHARACTER SET;
显示所有可用的校对,以及它们适用的字符集:
SHOW COLLATION;
通常系统管理在安装时定义一个默认的字符集和校对。
也可以在创建数据库时,指定默认的字符集和校对。
为了确定所用的字符集和校对,可以使用以下语句:
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation%';
在创建数据库时,指定默认的字符集和校对:
创建表时,给表指定字符集和校对:
CREATE TABLE table_name(
...
)DEFAULT CHARACTER SET hebrew
COLLATE hebrew_general_ci;
# 指定一个字符集和一个校对顺序。
创建表时,给列指定字符集和校对:
CREATE TABLE table_name(
col_name1 VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_general_ci
...
)DEFAULT CHARACTER SET hebrew
COLLATE hebrew_general_ci;
# 指定一个字符集和一个校对顺序。
指定字符集和校对的规则:
如果指定CHARACTER SET和COLLATE两者,则使用这些值。
如果只指定CHARACTER SET,则使用此字符集及其默认的校对(如SHOW CHARACTER SET的结果中所示)。
如果既不指定CHARACTER SET,也不指定COLLATE,则使用数据库默认。
COLLATE
子句,还可以用于ORDER BY
,GROUP BY
,HAVING
,函数,别名等。
# 为了区分大小写的校对
SELECT * FROM table_name ORDER BY col_1, col_2 COLLATE Latin_general_cs;
如果绝对需要,串可以在字符集之间进行转换。为此,使用Cast()
或Convert()
函数。