MySql 数据库 新建 字符集与字符校对设置

MySQL 5.1参考手册第10章:字符集支持
目录

10.1. 常规字符集和校对
10.2. MySQL中的字符集和校对
10.3. 确定默认字符集和校对
10.3.1. 服务器字符集和校对
10.3.2. 数据库字符集和校对
10.3.3. 表字符集和校对
10.3.4. 列字符集和校对
10.3.5. 字符集和校对分配示例
10.3.6. 连接字符集和校对
10.3.7. 字符串文字字符集和校对
10.3.8. 在SQL语句中使用COLLATE
10.3.9. COLLATE子句优先
10.3.10. BINARY操作符
10.3.11. 校对确定较为复杂的一些特殊情况
10.3.12. 校对必须适合字符集
10.3.13. 校对效果的示例
10.4. 字符集支持影响到的操作
10.4.1. 结果字符串
10.4.2. CONVERT()
10.4.3. CAST()
10.4.4. SHOW语句
10.5. Unicode支持
10.6. 用于元数据的UTF8
10.7. 与其它DBMS的兼容性
10.8. 新字符集配置文件格式
10.9. 国家特有字符集
10.10. MySQL支持的字符集和校对
10.10.1. Unicode字符集
10.10.2. 西欧字符集
10.10.3. 中欧字符集
10.10.4. 南欧与中东字符集
10.10.5. 波罗的海字符集
10.10.6. 西里尔字符集
10.10.7. 亚洲字符集
本章讨论以下主题:

· 什么是字符集和校对规则?

· 多级默认系统

· 字符集语法

· 相关函数和运算

· Unicode支持

· 每个字符集和校对规则的含义

MySQL5.1中的字符集支持包括在MyISAM、MEMORY和InnoDB存储引擎中。

10.1. 常规字符集和校对
字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。让我们使用一个假想字符集的例子来区别清楚。

假设我们有一个字母表使用了四个字母:‘A’、‘B’、‘a’、‘b’。我们为每个字母赋予一个数值:‘A’=0,‘B’= 1,‘a’= 2,‘b’= 3。字母‘A’是一个符号,数字0是‘A’的编码,这四个字母和它们的编码组合在一起是一个字符集。

假设我们希望比较两个字符串的值:‘A’和‘B’。比较的最简单的方法是查找编码:‘A’为0,‘B’为1。因为0 小于1,我们可以说‘A’小于‘B’。我们做的仅仅是在我们的字符集上应用了一个 校对规则。校对规则是一套规则(在这种情况下仅仅是一套规则):“对编码进行比较。”我们称这种全部可能的规则中的最简单的 校对规则为一个binary(二元)校对规则。

但是,如果我们希望小写字母和大写字母是等价的,应该怎样?那么,我们将至少有两个规则:(1)把小写字母‘a’和‘b’视为与‘A’和‘B’等价;(2)然后比较编码。我们称这是一个大小写不敏感的 校对规则。比二元校对规则复杂一些。

在实际生活中,大多数字符集有许多字符:不仅仅是‘A’和‘B’,而是整个字母表,有时候有许多种字母表,或者一个东方的使用上千个字符的书写系统,还有许多特殊符号和标点符号。并且在实际生活中,大多数 校对规则有许多个规则:不仅仅是大小写不敏感,还包括重音符不敏感(“重音符” 是附属于一个字母的符号,象德语的‘Ö’符号)和多字节映射(例如,作为规则‘Ö’=‘OE’就是两个德语 校对规则的一种)。

MySQL5.1能够做这些事情:

· 使用多种字符集来存储字符串

· 使用多种校对规则来比较字符串

· 在同一台服务器、同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合字符串

· 允许定义任何级别的字符集和校对规则

在这些方面,MySQL5.1不仅比MySQL4.1以前的版本灵活得多,而且比其它大多数数据库管理系统超前许多。但是,为了有效地使用这些功能,你需要了解哪些字符集和 校对规则是可用的,怎样改变默认值,以及它们怎样影响字符操作符和字符串函数的行为。

10.2. MySQL中的字符集和校对
MySQL服务器能够支持多种字符集。可以使用SHOW CHARACTER SET语句列出可用的字符集:

mysql> SHOW CHARACTER SET;
.KAMCHIHAU Replied at : 2011-05-25 21:56:04或者這樣說會簡單一點點的,

WHERE “陳大文” > “陳小文”

在字符串的比較上前者就大於後者, 但這個假定是基於編碼”GB2312”

但在 big5中可能是倒過來的,就是說 “陳小文” < “陳大文”

所以我們設定時就要設定上,比對就用GB2312,

但這個設定有沒有必要呢? 會不會多餘呢?多一個設定會不會嚇怕用家呢? 見仁見智,

可不可以連這個設定都沒有, 默認就是本機的LOCALE,

我反倒覺得連這個設定都可以沒有,

但當我們寫聲明時卻可以這樣寫 WHERE big5(“陳大文”) > big5(“陳小文”)

但我們這樣寫,好像MYSQL又封鎖了我們

你可能感兴趣的:(web开发)