字符集:指符号和字符编码的集合。
校对规则:比较字符编码的方式。
GBK2312:主要包括简体中文字符及常用符号,对于中文字符采用双字节编码的格式,也就是说一个汉字字符在存储占两个字节。
GBK:包括有中、日、韩字符的大字符集,GB2312也是GBK的一个子集,就是说GB2312中的所有字符,GBK中全有,在这种情况下,我们也会将GBK称为GB2312的超集,GBK也是双字节编码的格式,将子集中的字符转换成超集中保存不会丢失信息(出现乱码);但反之则不一定。

UTF-8:它对于英文字符集使用一个字节编码,而对于多字节符(如中文)则使用3个字节编码,UTF-8能够支持大部分常见的字符,包括西、中、日、韩、法、俄等各种文字,因此意以上提到的几种字符集都视为UTF-8的子集。

UTF-8MB4:它是UTF-8的超集,是MySQL5.5版本才引进的,其引进是为了处理像emoji这类表情字符,一个字符使用4个字节编码,能支持的字符最广,但是相应占用的空间也最大。

一个字符集至少会有一个校对规则,显示字符集的校对规则可以使用show collation 语句

mysql数据库中字符集的校对规则都有一些共同的特点:

1.每种校对规则只能属于一种字符集,
2.每个字符集都有一个默认的校对规则
3.校对规则的名称也有规则,通常开头的字符是校对规则所属的字符集,而后是其所属的语言,最后是校对规则类型的简写形式,有下列3种格式:
。_cs:全称为case insensitive,这表示大小写不敏感的规则
_cs:全称为case sensitive,这表示大小写敏感的规则
_bin :即binary,表示这是一个二元校对规则,话说二元规则也是一定是大小写敏感规则

MySQL服务响应客户端操作的字符的字符集和客户端信息处理过程:

1.客户端发出的SQL语句,所使用的字符集由系统变量character_set_client来指定
2.MySQL服务端接收语句后,会用character_set_connection和collation_connection两个系统变量中的设置,并且会将客户端发送的语句字符集由character_set_client转到character_set_connection(除非用户执行语句时,已经对字符列明确指定了字符集)。对于语句中指定的字符串比较或排序,还需要应用collation_connection中指定的校对规则处理,而对于语句中指定的列的比较则无关collation_connection的设置了,因为对象的列表拥有自己的校对规则,他们拥有更高的优先级
3.MySQL服务执行完语句后,会按照character_set_result系统变量设置的字符集返回结果集(或错误信息)到客户端。
可以用语句:show global variables like 'character_set_\%';查看这些系统变量设置。

固化连接时的字符集设置:

SET NAMES和SET CHARACTER SET命令都是基于会话设定的,也就是说,仅作用于当前会话,退出登录后所做设置也就失效,如果希望设置长期有效,可以在启动MySQL服务时,通过设置相关系统变量,达到永久生效的目的,可以到参数文件my.ini增加一行:
[mysql]
default-character-set=gbk
这样,只要我们使用mysql命令行工具连接服务器后,连接的默认字符集就都会是设定好的GBK字符集。

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

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

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

  2. mysql中字符集和校对规则

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

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

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

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

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

  5. 【mysql】 数据库字符集和排序规则

    库的字符集影响表和字段的字符集 数据库字符集 >表的字符集 > 字段的字符集 (从前往后优先级由低到高,从左往右继承,如果表没设置字符集,继承数据库的,如果字段没设置,继承表的) 数据库的 ...

  6. MySQL 字符集和校对

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

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

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

  8. mysql字符集和排序规则

    1.关于字符集和排序规则所为字符集,就是用来定义字符在数据库中的编码的集合.常见的字符集有:utf8(支持中文)和AccIS(不支持中文) 数据库中的排序规则用来定义字符在进行排序和比较的时候的一种规 ...

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

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

随机推荐

  1. js滚动加载小插件

    本文实例讲述了jquery滚动加载数据的方法.分享给大家供大家参考.具体分析如下: 少废话直接上代码!!!粗暴,直接,干脆 0//lk-2017-05-04 1(function($, win) { ...

  2. 网页加速特技之 AMP

    据统计,40%的人会放弃使用加载时间超过3秒的网站.对于加载慢的页面我也是没耐心等待的,同类型网站那么多,为什么不选择加载速度更快体验更好的呢.为了解决网页加载慢的问题,Google联合数十家技术机构 ...

  3. 【开源】canvas图像裁剪、压缩、旋转

    前言 前段时间遇到了一个移动端对图像进行裁剪.压缩.旋转的需求. 考虑到已有各轮子的契合度都不高,于是自己重新造了一个轮子. 关于图像裁剪.压缩 在HTML5时代,canvas的功能已经非常强大了,可 ...

  4. 有序GUID

    背景 常见的一种数据库设计是使用连续的整数为做主键,当新的数据插入到数据库时,由数据库自动生成.但这种设计不一定适合所有场景. 随着越来越多的使用Nhibernate.EntityFramework等 ...

  5. MXNet之ps-lite及parameter server原理

    MXNet之ps-lite及parameter server原理 ps-lite框架是DMLC组自行实现的parameter server通信框架,是DMLC其他项目的核心,例如其深度学习框架MXNE ...

  6. while循环小练习-猜答案

    条件 1.每个用户只能猜10次产品的价格2.每次猜玩价格,提示用户价格是多了还是少了或者对了3.如果用户才对则终止程序执行 break! i = 0 #设置一个次数变量 price = 38 #设置一 ...

  7. 基于 HTML5 WebGL 的 3D 仓储管理系统

    仓储管理系统(WMS)是一个实时的计算机软件系统,它能够按照运作的业务规则和运算法则,对信息.资源.行为.存货和分销运作进行更完美地管理,使其最大化满足有效产出和精确性的要求.从财务软件.进销存软件C ...

  8. VMWare安装Win10虚拟机

    这两天突发奇想安了个win10虚拟机,在安装的过程中还遇到了不少麻烦,所以在此与大家分享下. 首先我们用VMWare12来安装,VMWare已经更新到14但是不太稳定,所以为了保险起见还是用12吧. ...

  9. PHP扩展代码结构详解

    PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展  内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/ ...

  10. .9-浅析webpack源码之NodeEnvironmentPlugin模块总览

    介绍Compiler的构造比较无趣,不如先过后面的,在用到compiler的时候再做讲解. 这一节主要讲这行代码: // 不管这里 compiler = new Compiler(); compile ...