码迷,mamicode.com
首页 > 数据库 > 详细

02 | MySQL字符集和校对顺序

时间:2020-03-04 09:59:42      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:并且   处理   除了   tom   strong   全球   nis   table   sql   

全球化与本地化

本文主要介绍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 SETCOLLATE两者,则使用这些值。
  • 如果只指定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字符集和校对顺序

标签:并且   处理   除了   tom   strong   全球   nis   table   sql   

原文地址:https://www.cnblogs.com/xm08030623/p/12407529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!