1 Character Set与Collation
任何资讯技术在处理资料的时候,如果只是单纯的数值和运算,那就不会有太复杂的问题;如果处理的资料是文字的话,就会面临世界上各种不同语言的问题。 以资料库来说,它必须正确的储存各种不同语言的文字,也就是一个资料库中,有可能同时储存繁体和简体中文、法文等不同语言的文字。
电脑在处理文字资料大多是使用一个「编码」来表示某一个字,对MySQL资料库来说,为了要处理不同语言的文字,它使用一套编码来处理一种语言的文字,称为「字元集、character set」。 以英文字母来说,每一个字母都有一个编码,例如A=65、B=66、C=67。
MySQL可以依照你的需要为资料库设定不同的字元集:
Collation指的是在一个字元集中,所有字元的大小排序规则。 以英文字母来说,我们会依照A到Z的顺序当成大小的顺序,小写的字母也是一样的。 这样的大小顺序是依照编码的大小来决定的,MySQL把它称为「binary collation」。
可是在真实的世界中,大小顺序却不是这么单纯,有时候你会把大小写的英文字母当成是一样的,例如大写的A和小写的a。 在这种情况下,大写和小写的字母会被当成是一样的大小,然后再依照编码来决定,例如大写A的编码比小写a的编码小。 MySQL把这样的方式称为「case-insensitive collation」。
在决定大小顺序的时候,如果只有考虑字母大小写因素的话,那还不算是太复杂的。 如果再考虑各种不同语言特性的话,在决定大小顺序的时候就会变得很复杂。 以繁体中文来说,它是没有区分大小写的,而且一个中文字会包含一个以上的位元组,其它的语言也都会有类似的情况。
1.1 Character Set
MySQL资料库把各种不同字元集的编码资料纪录在系统资料库中,你可以使用下列的指令查询MySQL资料库支援的字元集资讯:
SHOW CHARACTER SET
执行上列的查询指令后可以得到下列的结果:
1.2 COLLATION
MySQL除了支援各种不同的字元集,让资料库可以储存不同语言的文字外,每一种字元集都可以依照实际需要,搭配不同的Collation设定。 你可以使用下列的指令查询MySQL支援的Collation资讯:
SHOW COLLATION
执行上列的查询指令后可以得到下列的结果:
你也可以使用类似「WHERE」子句中的条件设定,查询某一种字元集支援的Collation资讯:
你可以从Collation名称分辨出排序的准则:
2 资料库
资料库(Database)是用来保存各种资料元件的容器,在安装好MySQL资料库伺服器软体后,就可以依照自己的需求建立资料库,MySQL对于资料库的数量并没有限制:
每一个MySQL资料库伺服器软体都会使用一个储存资料的资料夹,称为「data directory」。 在这个资料夹下,每建立一个资料库,MySQL都会建立一个资料夹,称为「资料库资料夹、database directory」,一个资料库包含的档案就会放在各自的资料库资料夹中:
注:使用「SHOW VARIABLES LIKE 'datadir'」叙述,可以查询MySQL资料库伺服器使用的资料库资料夹。
因为一个资料库会是档案系统中的一个资料夹,所以你要特别留意下列的特性:
- 虽然MySQL对于资料库的数量并没有限制,可是你要注意MySQL资料库伺服器软体所安装的作业系统,它对于资料夹与档案大小的限制。
- MySQL使用资料库名称作为资料库资料夹的名称,所以你要特别注意大小写的问题。 在资料夹名称不分大小写的作业系统(例如Windows),资料库名称「MyDB」和「mydb」是一样的;可是在资料夹名称会区分大小写的作业系统(例如Linux),资料库名称「MyDB」和「mydb」就不一样了。
- 每一个资料库资料夹中都有一个特别的档案,档案名称是「db.opt」,这个档案的内容是资料库的字元集与collation设定。
注:MySQL把「DATABASE」与「SCHEMA」当成是一样的,所有你在后续使用的指令,都可以把「DATABASE」换成「SCHEMA」。
点击阅读全文
更多参考:
本文转自: MySQL入门 (六) : 字元集与资料库
相关推荐
【《熊概,字元节》阅读附答案】 熊概 字元节.docx
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)字符表是计算机科学中一个基本的编码系统,它定义了128个不同的字符,包括数字、字母、标点符号以及一些控制字符。...
Gulp基本使用教学 :memo: 因为小弟觉得这东西非常实用,所以就简单写个教学文,顺便记录一下 :memo: ,希望能帮助想学的人 :grinning_face_with_...在cmd(命令提示字元)输入 node -v 如果有跑出node.js版本号代表安
4. 电子运算装置的接口与协议:如何在不同的电子设备上实现字元输入,并与其他硬件或软件系统交互。 5. 应用场景分析:在哪些行业中,字元式输入法起到了关键作用,如何改善工作效率。 6. 实践指导:可能包括具体的...
《基于Android平台的“字元码”输入法研究与实现》这篇文章主要探讨了一种创新的汉字输入法,针对没有拼音基础或不熟悉阿拉伯字母的中老年用户群体,通过将汉字分解为字元并分配到数字键上实现中文输入。文章作者...
【《郭震,字元振》阅读】 郭震字元振.docx
PReS指令集详细说明教程 PReS指令集是控制打印机输出的软件程序语言,用于描述打印机的输出格式和内容。本教程将详细介绍PReS指令集的语法和使用方法。 一、程序的结构 PReS指令集程序由多个部分组成,包括Common...
使用字元串流读取文字档.pptx
"c#遞迴字元排列"这个主题就是关于如何使用C#语言通过递归方法生成给定字符集的所有可能排列。 首先,我们需要理解什么是递归。递归是一种函数调用自身的方法,它通常与分治策略结合使用,将大问题分解为更小的子...
- **字元集简史**:回顾字符编码的历史背景。 - **美国标准**:介绍ASCII等早期编码标准。 - **国际方面**:探讨扩展ASCII和双字节字符集。 - **Unicode解决方案**:阐述Unicode如何解决了多语言支持问题。 - **宽...
ASCII 字元集使用 7 位元表示每个字元,或者电脑上普遍使用的每字元有 8 位元宽;而 Unicode 使用全 16 位元字元集。这使得 Unicode 能够表示世界上所有的书写语言中可能用於电脑通讯的字元、象形文字和其他符号。 ...
Linux 字元设备驱动程序是操作系统内核与特定硬件设备交互的核心组件。它们是系统调用层和硬件之间的一座桥梁,使得应用程序能够以统一、抽象的方式与硬件进行通信,而无需关心底层硬件的具体细节。设备驱动程序是...
本资料“电子政务-借助流动无线电网的短信息业务发送基本字元构成的亚洲文字”着重探讨了如何利用移动通信技术,尤其是短信息服务(SMS),来传递和处理亚洲文字。 亚洲文字,包括汉字、日文、韩文等多种文字系统,...
字元集简史 . 宽字元和C . 宽字元和WINDOWS 3. 视窗和讯息 . 自己的视窗 . WINDOWS程式设计的难点 4. 输出文字 . 绘制和更新 . GDI简介 . 卷动列 . 建立更好的滚动 5. 图形基础 . GDI的结构 . 装置...
3. 资料字元:ASCII字符集中的字母、数字或特殊符号。 4. 符号字元:表示数据的线条和空白组合。 5. 代码集:将数据字元转化为符号字元的规则。 6. 字码:符号字元的数值,是数据转换过程中的中间值。 7. 字元自我...