首先,明确一下字符集和校对规则的概念:
    字符集(charset):是一套符号和编码
    校对规则(collation):是在字符集内用于比较字符的一套规则,比如有的规则区分大小写,有的则无视

mysql服务器能够支持多种字符集,可以使用SHOW CHARACTER SET语句列出可用的字符集。如果希望列出一个字符集的校对规则,可以使用SHOW COLLATION语句。例如,如果希望查询以latin1开头的校对规则,可以使用如下语句SHOW COLLATION LIKE 'latin1%'。任何一个给定的字符集至少有一个校对规则,当然也可能存在多个校对规则。校对规则一般有如下特征:

  • 两个不同的字符集不能有相同的校对规则;
  • 每个字符集有一个默认校对规则
  • 存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。
   具体来说,我们系统使用的是utf8字符集,如果使用utf8_bin校对规则执行sql查询时区分大小写,使用utf8_general_ci 不区分大小写。不要使用utf8_unicode_ci。如create database demo CHARACTER SET utf8; 默认校对规则是utf8_general_ci 。
   mysql服务器中有六个关键位置使用了字符集的概念,它们分别是:client 、connection、database、results、server 、system。
  • client是客户端使用的字符集,相当于网页中的字符集设置<meta http-equiv="Content-Type" content="text/html; charset=utf-8">。
  • connection是连接数据库的字符集设置类型,如果php没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。
  • database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
  • results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。
  • server是服务器安装时指定的默认字符集设定。
  • system是数据库系统使用的字符集设定。
   system一般默认是utf-8字符集,server是最高的字符集设定,database没有单独设定就按照server的字符集设定。数据库内的每个表和字段也都有字符集的概念,一般都是根据上一级结构决定自身的字符集,比如表就根据database库的设定决定自己的字符集,字段根据表来决定自己的字符集。
   有关中修改mysql表、字段、库的字符集可见:http://fatkun.com/2011/05/mysql-alter-charset.html
 
   Unicode与UTF8
   Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储.
   UTF8字符集是存储Unicode数据的一种可选方法。 mysql同时支持另一种实现ucs2。
   如今,大多数网站开发都会选择UTF-8,因为它是世界性通用代码,可以完美的支持中文编码。
   如果对编码还不太清楚的话,推荐看这边文章,其中简要介绍了编码的来历,个人觉得很不错:http://www.jb51.net/web/25623.html

mysql中字符集和校对规则的更多相关文章

  1. 关于mysql中字符集和排序规则说明

    文章转自 http://blog.csdn.net/smallSBoy/article/details/52997138 数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set ...

  2. mysql中字符集和排序规则说明

    数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation). 一.字符集 字符集,即用于定义字符在数据库中的编码的集合. 常见 ...

  3. mysql中的字符集和校对规则(mysql校对集)

    1.简要说明介绍 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则. MySql在collation提供较强的支持,oracel在这方面没查到相应的资料. 不同字符 ...

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

    字符集的概念大家都清楚,校对规则很多人不了解,一般数据库开发中也用不到这个概念,mysql在这方便貌似很先进,大概介绍一下简要说明 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比 ...

  5. mysql创建数据库指定字符集和校对规则

    mysql创建数据库的语法格式: CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] ...

  6. MySQL数据库字符集和排序规则的四个级别

    MySQL数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列. 最初,服务器字符集和排序规则取决于启动mysqld时使用的选项.可以使用 --character-set-server该 ...

  7. mysql中对字符集和校对规则的认识

    字符集:指符号和字符编码的集合.校对规则:比较字符编码的方式.GBK2312:主要包括简体中文字符及常用符号,对于中文字符采用双字节编码的格式,也就是说一个汉字字符在存储占两个字节.GBK:包括有中. ...

  8. MySQL 是怎样运行的:从根儿上理解 MySQL:字符集和比较规则

    本文章借鉴自https://juejin.im/book/5bffcbc9f265da614b11b731 字符集和比较规则简介 一些重要的字符集 ASCII字符集 共收录128个字符,包括空格.标点 ...

  9. MySQL 字符集和校对

    字符集是指一种从二进制编码到某类字符符号的映射,校对是一组用于某个字符集的排序规则.每一类编码字符都有其对应的字符集和校对规则 MySQL 如何使用字符集 每种字符集都可能有多种校对规则,并且都有一个 ...

随机推荐

  1. 【solr】solr5.0整合tomcat

    1.下载 solr版本必须和lucene版本一致,这个链接http://archive.apache.org/dist/lucene/是apache子项目库,在这里可以下载lucene,我这里使用的是 ...

  2. java.io.FileNotFoundException:SESSIONS.ser (系统找不到指定的路径。)

    问题如下: java.io.FileNotFoundException: E:\apache-tomcat-8.0.37\work\Catalina\localhost\20161013Shoppin ...

  3. 转码:unescape("%u7B80%u4F53%u4E2D%u6587")--->escape("简体中文")

    unescape("%u7B80%u4F53%u4E2D%u6587")"简体中文"escape("简体中文") "%u7B80% ...

  4. spark基础练习(未完)

    1.filterval rdd = sc.parallelize(List(1,2,3,4,5))val mappedRDD = rdd.map(2*_)mappedRDD.collectval fi ...

  5. RAC_Oracle集群服务安装前期准备Prepare(案例)

    2014-07-08 Created By BaoXinjian

  6. OAF_EO系列3 - Initialize详解和实现(案例)

    2014-06-14 Created By BaoXinjian

  7. Codeforces Round #365 (Div. 2) Chris and Road

    Chris and Road 题意: 给一个n个顶点的多边形的车,有速度v,人从0走到对面的w,人速度u,问人最快到w的时间是多少,车如果挡到人,人就不能走. 题解: 这题当时以为计算几何,所以就没做 ...

  8. SQL语句的Select部分只写必要的列

    如果Select部分包含不需要的列,这会强制DB2必须进入数据页来得到所请求的特定列,这就要求更多的I/O操作.另外,如果再对这个不需要的列进行排序,就需要创建和传递一个更大的排序文件,相应地会使排序 ...

  9. TFS使用中的问题

    http://msdn.microsoft.com/zh-cn/library/vstudio/fda2bad5.aspx 项目映射步骤(项目上传): a.新建一个空的文件夹Team Server,用 ...

  10. java中使用session的一些细节

    获取session的时候会产出一个sessionid并且发给客户端,第二次回发的时候再根据该sessionid获取session.如果cookies被禁用,则需要通过URL传入. asp.net下的s ...