mysql修改校对集_关于MySQL字符集和校对集问题

字符集

一、字符集基础知识

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

字符集: 字符的集合, 用户在计算机中所能看到的任何一个不可被拆分的符号.计算机不能存储图形符号: 只能使用二进制来代表图形符号.

计算机的存储数据的基本单位字节: 一个字节 = 8位(bits) = 2 ^ 8种状态 = 256种

英文环境下: 达不到256中符号: 美国制定了一套规则: 规定了一个字节存储的二进制转换成十进制之后对应的是什么符号: ASCII: 维护了字符(英文)与二进制的一个对应关系.

中国以汉字为符号: 常用的汉字有5K多, 一个字节不够存储: 中国定制了一个规则: 使用2个字节来表示中文字符: 2字节 = 16位 = 256 * 256 = 65536种状态(GBK==>GB2312===>big5)

世界范围内: 除了汉字还有很多其他国家的符号, 全世界的符号加起来超过了65536种, 使用三个字节(unicode ===> utf-8: 可能是2-4个字节)

二、Mysql的字符集

Mysql是c/s结构软件: 客户端 ----> 服务端(数据)

数据是由客户端进入到服务端 ---> 服务端将数据显示给客户端

如果客户端的数据进入到服务端的时候,两端的字符集不一样: 数据没有办法被正常理解(操作中断)

49562664d5f4901974e18c880ed5f56c.png

原因: 客户端的数据的字符集是GBK(一个汉字两个字节), 但是服务器端一定不是GBK

查看服务器所支持的所有字符集: show character set;

41c952372b175549f263ee9ce773fe93.png

查看mysql服务器默认的接收数据的字符集: show variables like ‘character_set%’;

b1354669507fdd739136f2804d8181ab.png

客户端不能插入中文数据的原因: 客户端是GBK, 服务端认为的客户端是utf8:

客户端是不能改变(固定是GBK): 修改服务端认为的客户端的字符集(服务端支持很多字符集)

89971290152a90747f19ab49f092c6d1.png

再次插入中文数据

9ca63d46a011f9017d1b1f0da25f76b3.png

查看数据

0eb6748497f46faab194341f42f95e79.png

原因: 客户端是GBK,而服务端认为客户端可以解析的字符集utf8: character_set_results

修改服务端认为的客户端的解析字符集为GBK

set character_set_results = GBK;

03089a2d693c0efb244a851816958e63.png

凡是使用set character_set_client%修改都是临时的(会话级别): 当前用户当次连接有效(关闭连接就失效)

54a0e773e2c6a449c6232c5308630cf8.png

有一种快捷方式能够直接一次性修改多个服务器端的默认的外部字符集

set names 字符集;

ad74fbbc536cd30397ebacf80cf280b9.png

校对集

校对: 本身的比较的意思: 校对集是一种比较的集合: 当数据进行比较的时候,会自动使用校对集来进行验证,从而实现比较效果.

查看所有校对集: 一个字符集会有多个校对集

show collation;

a69a0866b10213bf4dd57e8e08dfdc2a.png

校对集分为三种

_bin: binary, 二进制比较, 区分大小写

_cs: case sensitive, 大小写敏感(区分大小写)

_ci: case insensitive,大小写不敏感(不区分大小写)

比较: 两张表一张使用_bin一张使用_ci

186d93f7526dcf4b36211c5d4925eb01.png

插入数据

103c679643bde92c18b7256414bf3c80.png

比较数据: 使用order by对字段进行排序: 比较的过程(校对集)

Order by 字段名 [asc|desc]; asc是默认的: 升序; desc是降序

acc7984bc8f5f5bbc5078d58ef15ff9f.png

校对集必须在表一开始的时候就设置好: 后期修改无效(如果表中已经有数据)

f9a329ef45b0dfa8d620fc4bf92501f3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值