MySQL的校对集

数据库的校对集
1:概述
1:每个字符集对应若干校对规则(collation)如果不指定,会有默认校对规则
服务器有字符集、数据库有字符集、表有字符集、列有字符集,如果不指定,会继承字符集,有了字符集如果不设置校对规则,就使用字符集的默认校对规则。在做比较时,最终起作用的是列的字符集和校对规则
2:比如 table1.col1=table2.col2,首先会拿table1.col1的校对规则与table2.col2的校对规则,进行比较,如果校对规则不兼容,就会出现,类似Error Code: 1267. Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '=' 的错误
3:必须在数据创建之前声明好,如果数据创建,将无法修改
2:校对集格式
ci: case insensitive,大小写不敏感,不区分大小写比较
cs: case sensitive,大小写敏感,区分大小写比较
bin: binary,二进制,使用二进制比较
3:查看数据库所支持的校对集(所有的)
show collation; 
MySQL的校对集
MySQL的校对集
MySQL的校对集

MySQL的校对集
3:创建表使用不同的校对集
使用utf8中的ci和bin
1:使用数据库
use test;

2;执行创建表
CREATE TABLE my_collate_bin(
NAME CHAR(1)
)CHARSET utf8 COLLATE utf8_bin;

CREATE TABLE my_collate_ci(
NAME CHAR(1)
)CHARSET utf8 COLLATE utf8_general_ci;
MySQL的校对集
MySQL的校对集
3:分别向两张表插入数据
发现没有区别,因为没有对比,是默认的字符集(校对集未生效)
MySQL的校对集

MySQL的校对集
4:根据某个字段进行排序比较
select * from 表名 order by 字段名 desc降序/asc 默认升序
MySQL的校对集
MySQL的校对集