目录
字符集和校对顺序
数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL
需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法。
字符集
为字母和符号的集合;
编码
为某个字符集成员的内部表示;
校对
为规定字符如何比较的指令。
使用字符集和校对顺序
通常系统管理在安装时定义一个默认的字符集和校对。此外,也可以在创建数据库时,指定默认的字符集和校对。
为了确定所用的字符集和校对
,可以使用以下语句:
![](https://i-blog.csdnimg.cn/blog_migrate/4ea3c81170f267630596d3c5b2ad989f.png)
实际上,字符集很少是服务器范围(甚至数据库范围)的设置。
不同的表,甚至不同的列都可能需要不同的字符集
,而且两者都
可以在创建表时指定。
为了
给表指定字符集和校对
,可使用带子句的
CREATE TABLE
![](https://i-blog.csdnimg.cn/blog_migrate/b1ea0a8796e217175ae51a7ce7375191.png)
如果指定
CHARACTER SET
和
COLLATE
两者,则使用这些值。
如果只指定
CHARACTER SET
,则使用此字符集及其默认的校对(如SHOW CHARACTER SET的结果中所示)。
如果既不指定
CHARACTER SET
,也不指定
COLLATE
,则使用数据库
默认。
除了能指定字符集和校对的表范围外,
MySQL还允许
对每个列设置它们的字符集和校对
![](https://i-blog.csdnimg.cn/blog_migrate/a74c5829c1db916935bcdc03e01b86c4.png)
如果你需要用
与创建表时不同的校对顺序排序
特定的
SELECT
语句,可以在SELECT
语句自身中进行:
![](https://i-blog.csdnimg.cn/blog_migrate/55eeb7eadf3385d6527b00edeac233bf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/913319ffdd01dbb68ce01b33c54834b9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/df78018010bd1f49ae8c9de23797ed97.png)
最后,值得注意的是,如果绝对需要,串可以在字符集之间进行转换。为此,使用Cast()
或
Convert
()
函数。
(
数据类型转换可以通过CAST()和CONVERT()函数来实现
)