• MySQL字符集与collation基础应用知识

    collation应用于排序
    服务器君一共花费 14.513 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    在前面 MySQL中英文混合排序最简单的办法 小节里,order by 后面的 collate utf8_unicode_ci; 是什么意思呢?这里需要补充一些mysql字符集、collation的知识。

    mysql中对于字符串会按存储类型进行分类,分为二进制、非二进制。

    通常二进制存储的都是纯二进制文本,例如mp3、图像文件等,通常设定类型为blob、binary、varbinary。也可存储非二进制文本,通常类型为varchar、char、text 。

    通常对于二进制文本的存储,会设计到mysql字符集和collation,下面是字符集和collation的简单介绍。

    字符集即为二进制文本的存储类型,通常可通过

    mysql > show character set;
    mysql > show charset;
    

    进行查看,系统会列出所有支持的编码。

    我们也可查看某个表的character set(字符集)

    mysql > show create table news;
    
    | news  | CREATE TABLE `news` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `title` varchar(100) NOT NULL,
      `content` text NOT NULL
      PRIMARY KEY (`news_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1973 DEFAULT CHARSET=utf8 |
    

    utf8即为news table 的character set(charset)

    对于字符集的存储后,我们可能需要对字符进行排序,这个时候就用到了collation。collaction是针对字符集来存在的,通常排序有3种不同的方式,ci cs bin

    • ci capital ignore  无视大写
    • cs captial sensitive 大写敏感
    • bin 二进制排序

    可以使用

    mysql > show table status;
    

    查看collation。

    我们可以使用

    mysql > show collation;
    

    查看所有collation。 或者使用

    mysql > show collation like 'latin1%';
    

    查看latin1的collation

    通常我们进行order by的时候,都是使用默认collation,如上,使用了默认的 latin1_swedish_ci,我们可以对order by的时候增加特定的collation,如下:

    mysql > select * from t order by c collate latin1_general_cs;
    

    我们在对t搜索时使用c的latin1_general_cs进行排序。

    我们可以子创建表时候设定表的charset和collate

    mysql > create table user (
    	name varchar(10) character set utf8 collate utf8_general_ci
    ) engine = innodb default charset = utf8
    

    需要注意的是,我们在设定某个table中column的charset collate时,需要注意table的charset;

    我们可以使用collation() charset() 两个方法进行collation character set的获取

    可以使用convert进行charset的修改

    如下:

    mysql > select collation(user());
    mysql > select charset(user());
    mysql > select convert(user() using binary);
    

    由于convert后会直接显示在终端或返回字符串,可使用如下命令进行验证

    mysql > select charset(convert(user() using utf8));
    mysql > select collation(convert(user() usiing utf8));
    
    • 修改表的character set:alter database test character set utf8;
    • 修改表的character set:alter table employee character set utf8;
    • 修改列character set:alter table employee modify name varchar(50) character set utf8;
更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [PHP程序设计] PHP中的Hash算法 3 个条目
  2. [软件工程与项目管理] 呈现器的布局与绘制 11 个条目
  3. [PHP程序设计] PHP与函数式编程 1 个条目
  4. [Python程序设计] Python数据类型 11 个条目
  5. [PHP程序设计] 命令式编程范式 6 个条目
  6. [PHP程序设计] PHP扩展模块安装 1 个条目
  7. [智力开发与知识管理] 整体性学习步骤 9 个条目
  8. [数据库技术] 无限级分类数据表设计 4 个条目
  9. [软件工程与项目管理] 了解一点WebKit 9 个条目
  10. [Python程序设计] Tornado背景知识介绍 4 个条目
  11. [Python程序设计] 写几个简单的Tornado程序吧 5 个条目
  12. [PHP程序设计] PHP数组探索 4 个条目
窗口 -- [博客]