mysql gbk排序规则_mysql 学习笔记 编解码 排序规则

mysql分客户端和服务端,客户端所使用的字符集和当前操作系统一致。linux----utf8,windows---gbk,macOS---utf8。

character_set_client服务器解码请求时使用的字符集

character_set_connection服务器运行过程中使用的字符集

character_set_results服务器向客户端返回数据时使用的字符集

这些都是可以设置的。如果出现乱码等现象,比如客户端使用gbk,服务端解析请求使用utf-8,那么就会识别乱码,此时可以根据上面的说明进行相应参数的设置。而服务器内部的编码都是服务器自己根据规则进行转换的。最后把返回的数据用character_set_results的编码方式返回给客户端,如果这个和客户端的一样,就会正常显示在我们客户端屏幕上。通常这三个参数设置的都是一样的,不然很麻烦。

select * from ....出来的东西的先后顺序就叫排序规则。比如 a,A,b,B,我 这几个字符。如果按默认的比较规则gbk_chinese_ci中是不区分大小写的。所以出来的就是上面的顺序。而gbk_bin是区分大小写而直接比较字符的编码。所以出来的是A,B,a,b,我 。其实就是根据二进制数据比较,或者加上一些自定义的规则。以前在java写红黑树的时候,对于排序都是要实现compareto方法的,其实也是自定义比较规则的,只不过mysql这里直接都给你写好了,你自己选择就行了。

感觉着,其实用java也可以写个mysql。也就是定制个应用层的通信协议,然后传传数据啥的,服务器这边再提供相应的功能啥的。mysql研究的人多了,所以写得就比较好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值