mysql数据库数据操作之校对集

[复制链接]
查看1650 | 回复0 | 2020-9-28 16:59 | 显示全部楼层 |阅读模式
1、概念:在某种字符集下,字符之间的比较关系,比如a和B的大小关系,如果区分大小写a>B,如果不区分大小写则a<B。比如赵钱孙李大小关系,不同的标准关系不一样
2、校对集依赖与字符集,不同的字符集的的比较规则不一样,如果字符集更改,校对集也重新定义。
3、不同的校对集对同一字符序列比较的结果是不一致的。
4、 可以在定义字符集的同时定义校对集、 语法:
  1. collate = 校对集
复制代码
例题:
定义两个表,相同字符集不同校对集
  1. mysql> create table stu1(
  2.     -> name char(1)
  3.     -> )charset=utf8 collate=utf8_general_ci;
  4. Query OK, 0 rows affected (0.05 sec)

  5. mysql> create table stu2(
  6.     -> name char(1)
  7.     -> )charset=utf8 collate=utf8_bin;
  8. Query OK, 0 rows affected (0.05 sec)

  9. mysql> insert into stu1 values ('a'),('B');
  10. Query OK, 2 rows affected (0.00 sec)
  11. Records: 2  Duplicates: 0  Warnings: 0

  12. mysql> insert into stu2 values ('a'),('B');
  13. Query OK, 2 rows affected (0.00 sec)
  14. Records: 2  Duplicates: 0  Warnings: 0
复制代码
测试:两个表的数据都是有小到大排序
  1. mysql> select * from stu1 order by name;   -- 不区分大小写
  2. +------+
  3. | name |
  4. +------+
  5. | a    |
  6. | B    |
  7. +------+
  8. 2 rows in set (0.08 sec)

  9. mysql> select * from stu2 order by name;   -- 区分大小写
  10. +------+
  11. | name |
  12. +------+
  13. | B    |
  14. | a    |
  15. +------+
  16. 2 rows in set (0.00 sec)
复制代码
小结校对集规则:
_bin:按二进制编码比较,区别大小写
_ci:不区分大小写

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

UID
1
贡献
387
丢币
38902
主题
4607
回帖
116
注册时间
2018-9-25
最后登录
2024-4-16