`
注意点啊
  • 浏览: 35685 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

mysql字符集和校对规则(Mysql校对集)

 
阅读更多
简要说明

字符集和校对规则
字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。
MySql在collation提供较强的支持,oracel在这方面没查到相应的资料。
不同字符集有不同的校对规则,命名约定:以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束
校对规则一般分为两类:
binary collation,二元法,直接比较字符的编码,可以认为是区分大小写的,因为字符集中'A'和'a'的编码显然不同。
字符集_语言名,utf8默认校对规则是utf8_general_ci
mysql字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。
具体来说,我们系统使用的是utf8字符集,如果使用utf8_bin校对规则执行sql查询时区分大小写,使用utf8_general_ci 不区分大小写。不要使用utf8_unicode_ci。
如create database demo CHARACTER SET utf8; 默认校对规则是utf8_general_ci 。

Unicode与UTF8
Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储.
UTF8字符集是存储Unicode数据的一种可选方法。mysql同时支持另一种实现ucs2。

详细说明

字符集(charset):是一套符号和编码。
校对规则(collation):是在字符集内用于比较字符的一套规则,比如定义'A'<'B'这样的关系的规则。不同collation可以实现不同的比较规则,如'A'='a'在有的规则中成立,而有的不成立;进而说,就是有的规则区分大小写,而有的无视。
每个字符集有一个或多个校对规则,并且每个校对规则只能属于一个字符集。

binary collation,二元法,直接比较字符的编码,可以认为是区分大小写的,因为字符集中'A'和'a'的编码显然不同。除此以外,还有更加复杂的比较规则,这些规则在简单的二元法之上增加一些额外的规定,比较就更加复杂了。
mysql5.1在字符集和校对规则的使用比其它大多数数据库管理系统超前许多,可以在任何级别进行使用和设置,为了有效地使用这些功能,你需要了解哪些字符集和 校对规则是可用的,怎样改变默认值,以及它们怎样影响字符操作符和字符串函数的行为。

校对规则一般有这些特征:

两个不同的字符集不能有相同的校对规则。
每个字符集有一个默认校对规则。例如,utf8默认校对规则是utf8_general_ci。
存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束


确定默认字符集和校对
字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。
数据库字符集和校对
每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则:
例如:
CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL这样选择数据库字符集和数据库校对规则:
· 如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。
· 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。
· 否则,采用服务器字符集和服务器校对规则。
在SQL语句中使用COLLATE
•使用COLLATE子句,能够为一个比较覆盖任何默认校对规则。COLLATE可以用于多种SQL语句中。
使用WHERE:
select * from pro_product where product_code='ABcdefg' collate utf8_general_ci
Unicode与UTF8
Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储.Unicode码可以采用UCS-2格式直接存储.mysql支持ucs2字符集。
UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。
UTF8字符集(转换Unicode表示)是存储Unicode数据的一种可选方法。它根据RFC 3629执行。UTF8字符集的思想是不同Unicode字符采用变长字节序列编码:
· 基本拉丁字母、数字和标点符号使用一个字节。
· 大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言。
· 韩语、中文和日本象形文字使用三个字节序列
摘自:用梦想丈量人生,用奔跑丈量激情


校对集

MySQL5.5.8中共有字符集39,校对集195个

#显示所有的校对集

Show collation

#显示所有的字符集

show character set

所以一个字符集对应多个校对集,即同样的一个字符集有多重排序规则

比如一个utf8的字符集共有22中排序规则

Utf8字符集默认的校对集为utf8_general_ci

通过show collation like ‘utf8\_%'

即可查看



注意:

utf8_general_ci 按照普通的字母顺序,而且不区分大小写(比如:a B c D)

utf8_bin 按照二进制排序(比如:A排在a前面,B D a c)


详细出处参考:http://www.jb51.net/article/30865.htm
分享到:
评论

相关推荐

    深入 MySQL 字符集与校对规则:配置指南

    MySQL 是一个广泛使用的开源关系数据库管理系统,它支持多种字符集和校对规则,以满足不同语言和应用场景的需求。字符集决定了数据库能够存储的字符范围,而校对规则则定义了字符之间的比较和排序方式。本文将详细...

    精通MySQL字符集与校对集

    ### 精通MySQL字符集与校对集 在MySQL中,正确地管理和配置字符集与校对集对于确保数据的正确性和一致性至关重要。字符集主要用于定义如何存储和表示文本数据,而校对集则定义了如何比较这些文本数据。本篇文章将...

    mysql字符集和校对集

    ### MySQL字符集与校对集详解 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,在处理各种语言环境下的数据时,字符集和校对集的正确配置至关重要。本文旨在深入探讨MySQL中的字符集(Character ...

    MySQL 函数结果的字符集和校对规则.pdf

    MySQL 函数结果的字符集和校对规则

    设置mysql字符集

    ### MySQL字符集的基本概念 字符集(Character Set)定义了数据在存储和处理时所采用的编码标准,而校对集(Collation)则规定了字符集下的排序规则和比较方式。在MySQL中,主要涉及以下几个关键变量: - `...

    Mysql字符集

    MySQL字符集和校对规则的设置具有层次性,分为四个级别: 1. **服务器级**:在`my.cnf`配置文件中或启动时通过命令行参数设定,如`default-character-set=gbk`或`./configure --with-charset=gbk`。 2. **数据库...

    定制MySQL的字符交响乐:字符集与排序规则配置指南

    通过对MySQL字符集和排序规则的深入理解与配置,我们可以更好地管理和维护数据库中的数据。合理地选择和配置字符集及排序规则不仅可以提高数据的一致性和准确性,还可以增强应用程序的国际化能力。掌握了这些技巧,...

    MySQL字符集

    MySQL字符集是数据库管理系统中的一个重要概念,它定义了数据在存储和检索时的编码方式,影响着数据库中字符串的表示和处理。字符集的选择对于多语言支持、数据一致性以及跨平台兼容性至关重要。MySQL支持多种字符集...

    mysql字符集等常用命令

    ### MySQL字符集设置与解决UTF-8乱码问题 在MySQL数据库中,字符集的设置对于数据的正确存储和检索至关重要。特别是在使用UTF-8字符集时,如果配置不当很容易出现乱码问题。本文将详细介绍如何通过MySQL命令来正确...

    MySQL客户端选项中的字符集配置.pdf

    #### 一、MySQL字符集与校对序概述 在MySQL中,字符集和校对序是非常重要的概念。字符集(character set)定义了一组字符及其对应的二进制编码方式,而校对序(collation)则是用来定义字符比较规则的一组规则。...

    MySQL字符编码及乱码解决方案.txt

    MySQL字符编码及乱码解决方案 · 使用多种字符集来存储字符串 · 使用多种校对规则来比较字符串 · 在同一台服务器, 同一个数据库或甚至在同一个表中使用不同字符集或校对...· 允许定义任何级别的字符集和校对规则

    MySQL数据库中乱码成因及解决办法探究.pdf

    乱码主要由字符集配置不当引起,这涉及到MySQL支持的多种字符集和校对规则。MySQL支持的字符集包括GBK、UTF-8、UTF-16等,用于表示不同语言的字符。校对规则则是用于比较字符的规则,比如区分大小写、排序顺序等。 ...

    mysql的校对规则引起的问题分析

    MySQL中的校对规则(Collation)对于数据库操作和数据存储具有重要的影响,尤其是在涉及字符集(Character Set)和数据比较时。本问题主要探讨了在MySQL中由于未注意校对规则而导致的问题及其解决方案。 首先,问题...

    解决Mysql乱码问题

    ### MySQL字符集与校对规则 首先,理解MySQL中的字符集(Character Set)和校对规则(Collation)是非常重要的。字符集定义了数据库能支持的字符范围,而校对规则则决定了字符之间的比较方式,包括大小写敏感性、...

    mysql中文成乱码.pdf

    3. 通过phpMyAdmin进行字符集和校对规则的调整:文档中提到了phpMyAdmin工具,这是一个基于Web的MySQL数据库管理工具,可以用来执行一些管理操作,包括设置数据库的默认字符集和校对规则。例如,`ALTER DATABASE '...

    查看和设置MySQL数据库字符集[归纳].pdf

    ### 查看和设置MySQL数据库字符集 ...本文介绍了多种查看和设置MySQL字符集的方法,包括通过配置文件全局设置以及针对特定数据库或连接进行设置。开发者可以根据实际需求选择最适合的方式进行操作。

    MySql 5.1 参考手册.chm

    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. 亚洲字符集 11. 列类型 ...

    mysql必知必会读书笔记.doc

    ### MySQL字符集与校对规则理解 #### 一、MySQL中的字符集概念 在MySQL中,字符集(Character Set)是指一组符号或字符以及用于表示这些符号或字符的方法。字符集通常包括拉丁字母、数字、标点符号以及特定语言中...

Global site tag (gtag.js) - Google Analytics