字符集是指一种从二进制编码到某类字符符号的映射,校对是一组用于某个字符集的排序规则。每一类编码字符都有其对应的字符集和校对规则

MySQL 如何使用字符集

每种字符集都可能有多种校对规则,并且都有一个默认的校对规则。每个校对规则都是针对某个特定的字符集的,和其他的字符集都没有关系。校对规则和字符集总是一起使用的,我们也将这样的组合统称为一个字符集。

MySQL的设置可以分为两类:创建对象时的默认值在服务器和客户端通信时的设置

创建对象时的默认值

MySQL服务器有默认的字符集和校对规则,每个数据库、数据表也有自己的默认值。这是一个逐层继承的默认设置,最终最靠底层的默认设置将影响我们创建的对象。这些默认值,从上而下地告诉MySQL应该使用什么字符集来存储某个列。

在这个阶梯的每一层,你都可以指定一个特定的字符集或者让服务器使用它的默认值:

  • 在创建数据库的时候,将根据服务器上的 character_set_server 设置来设定该数据库的默认字符集
  • 创建表的时候,将根据数据库的字符集设置指定这个表的字符集设置
  • 创建列的时候,将根据表的设置指定列的字符集设置

需要注意的是: 真正存放数据的是列,所以更高“阶梯”的设置只是指定默认值。一个表的默认字符集设置无法影响存储在这个表中某个列的值。只有当创建列而没有列指定字符集的时候,如果没有指定字符集,表的默认字符集才有作用。

服务器和客户端通信时的设置

当服务器和客户端通信的时候,他们可能使用不同的字符集。这时,服务器端将进行必要的翻译转换工作,如图所示:

根据需要,可以使用 SET NAMES 或者 SET CHARACTER SET 语句来改变上面的设置。不过在服务器上使用这个命令只会改变服务器端的设置。客户端程序和客户端的API也需要使用正确的字符集才能避免在通信时出现问题。

选择字符集和校对规则

在一个数据库中使用多个不同的字符集是一件很让人头疼的事情,字符集之间不兼容问题会很难缠。有时候一切看起来很正常,但是当某个特殊字符出现的时候,所有类型的操作可能都无法进行。

正确的方法是,最好先为服务器(或者数据库) 选择一个合理的字符集。然后根据不同的实际情况,让某些列选择合适的字符集。

下面展示了在创建数据库、表、列的时候如何显式地指定字符集和校对规则:

CREATE DATABASE d CHARSET latin1;
CREATE TABLE d.t(col1 CHAR(1),col2 CHAR(1) CHARSET utf8,col3 CHAR(1) COLLATE latin1_bin
)DEFAULT CHARSET=cp1251;

这个表最后的字符集和校对规则如下:

Field Type Collation
col1 char(1) cp1251_general_ci
col2 char(!) utf8_general_ci
col3 char(!) latin1_bin

字符集和校对规则如何影响查询

某些字符集和校对规则可能会需要更多的CPU操作,可能会消耗更多的内存和存储空间,甚至还会影响索引的正常操作。

只有在排序查询要求的字符集和服务器数据的字符集相同的时候,才能使用索引进行排序。索引根据数据列的校对规则进行排序。如果希望使用别的校对规则进行排序,那么MySQL就需要使用文件排序。

转载于:https://www.cnblogs.com/AmosH/p/10294230.html

MySQL 字符集和校对相关推荐

  1. MySQL字符集和校对规则(Collation)

    MySQL字符集和校对规则(Collation) 阅读目录:MySQL的字符集和校对规则 MySQL的字符集 MySQL与字符集 正确使用字符集 MySQL客户端与字符集 字符集编码转换原理 字符集常 ...

  2. mysql字符集和校对规则

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

  3. mysql 字符集和校对规则

    为什么80%的码农都做不了架构师?>>>    1,常规字符集及校对 假设我们有一个字母表使用了四个字母:'A'.'B'.'a'.'b'.我们为每个字母赋予一个数值:'A'=0,'B ...

  4. 11、MySQL字符集和校对规则详解

    在讲解字符集和校对规则之前,我们先来简单了解一下字符.字符集和字符编码. 字符(Character)是计算机中字母.数字.符号的统称,一个字符可以是一个中文汉字.一个英文字母.一个阿拉伯数字.一个标点 ...

  5. mysql 引擎 校对,MySQL 字符集和校对

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

  6. MySQL数据库——MySQL字符集和校对规则详解

    在讲解字符集和校对规则之前,我们先来简单了解一下字符.字符集和字符编码. 字符(Character)是计算机中字母.数字.符号的统称,一个字符可以是一个中文汉字.一个英文字母.一个阿拉伯数字.一个标点 ...

  7. 关于MySQL字符集和校对集问题

    字符集 一.字符集基础知识 数据在计算机的最终存储一定是二进制: 但是计算机内部的存储都是字节为基本单位: 最小单位是位(bit)只有两个状态0或者1. 但是表示的数据太少, 计算机都是以字节为操作单 ...

  8. mysql连接校对_mysql字符集和校对规则(Mysql校对集)

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

  9. mysql字符集与校对规则设置_mysql中的字符集和校对规则(mysql校对集)

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

  10. Mysql数据库字符集和校对集

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

最新文章

  1. 用 Javascript 获取页面大小、窗口大小和滚动条位置
  2. 分析解决Java运行时异常
  3. java interface泛型_java – 使用泛型和接口实现组合
  4. 关于wordpress 点击文章查看内容跳转加载失败(404)的解决方法
  5. css --- 弹性盒子
  6. C#泛型委托Predicate、Action、Func
  7. 数据分析初学者必备!10分钟搭建RFM客户价值模型,一学就会
  8. 【QT】QT从零入门教程(一):图像处理自编软件
  9. 【Unity】12.3 Off Mesh Link组件
  10. 施乐700彩机服务器维修,施乐700DCP彩色数码复印机维修手册:700dcp_sc_ver1.1_chap05(208页)-原创力文档...
  11. matlab汽车牌的识别,matlab车牌号识别
  12. 合宙 Air 724UG模组(4G Cat.1通信模组)测试过程
  13. java毕业设计补课管理系统Mybatis+系统+数据库+调试部署
  14. NLP-文本挖掘-综述
  15. 2023年全国管理类联考综合试卷真题及解析
  16. 计算机最最最底层的 工作原理是怎么运行的
  17. 微信公众号开发,移动端开发遇到的问题及其他技巧
  18. 流媒体之Jitterbuffer笔记
  19. 语音处理/语音识别基础(三)- 声音的特征和声音的能量
  20. ubuntu18.04显卡和触摸板驱动的问题

热门文章

  1. 二叉树 --5.1.3 Binary Tree Zigzag Level Order Traversal --图解
  2. eclipse-memory-analyzer使用说明
  3. Android中AndFix使用
  4. 使用adb命令从Android手机中取出已安装的app包,导出apk
  5. php面试题 mysql 主从_php面试题之五——MySQL数据库(基础部分)
  6. python冒泡排序算法详解_Python 3.0冒泡排序算法示例源码
  7. Prototype使用Hash对象
  8. 【渝粤教育】电大中专电商运营实操_1作业 题库
  9. 经典机器学习系列(六)【集成学习】
  10. 软件类配置(七)【ubuntu16.04安装netbeans、opencv并配置开发环境。】