MySQL处理不同字符集和语言的基础知识
字符集和校对顺序
数据库表被用来存储和检索数据。
不同的语言和字符集需要以不同的方式存储和检索
MySQL需要适应不同的字符集(字母和字符),应应不同的排序和检索数据的方法
- 字符集:字母和符号的集合
- 编码:某个字符集成员的内部表示
- 校对:规定字符如何比较的指令
校对的重要性
排序英文字母根据区分大小写排序的结果有所不同,其影响到排序ORDER BY和搜索WHERE等子句。如果使用不给予拉丁文的字符集将更为复杂
使用何种字符集和校对的决定在服务器、数据库和表级进行
使用字符集和校对顺序
MySQL支持众多的字符集
- 字符集
SHOW CHARACTER SET;
显示所有可用的字符集以及每个字符集的描述和默认校对
- 校对
SHOW COLLATION;
有的字符集不止一种校对,_cs表示区分大小写,_ci表示不区分大小写
确定使用的字符集和校对
SHOW VARIABLES LIKE "CHARACTER%";
SHOW VARIABLES LIKE "collation%";
给表指定字符集和校对
CREATE TABLE mytable (
column1 INT,
column2 VARCHAR ( 10 )) DEFAULT CHARACTER
SET hebrew COLLATE hebrew_general_ci;
创建一个包含两列的表,并且指定一个字符集和一个校对顺序

- CHARACTER SET和COLLATE指定了字符集和校对
1.如果同时有CHARACTER SET、COLLATE则使用这些值
2.如果只有CHARACTER SET则默认使用此字符集的校对
3.如果都没有则使用数据库默认值
给指定列设置字符集和校对
除了表之外,还支持不同列设置不同的字符集和校对
CREATE TABLE mytable1 ( column1 INT, column2 VARCHAR ( 10 ), column3 VARCHAR ( 10 ) CHARACTER SET latin1 COLLATE latin1_general_ci ) DEFAULT CHARACTER
SET hebrew COLLATE hebrew_general_ci;
其对整个表和特定的列都设置了不同的字符集和校对
对SELECT语句指定校对
与创建表时不同的校对顺序排序特定的SELECT语句,可以在SELECT语句自身中进行
SELECT
*
FROM
customers
ORDER BY
cust_id,
cust_city COLLATE latin1_general_cs;
SELECT的其他COLLATE子句
除了ORDER BY之外,还可用于ROUP BY、HAVING、聚集函数、别名等
Comments | 0 条评论