详解MYSQL中COLLATE的作用及各种COLLATE区别
文 / @WordPress主题
在MySQL中,COLLATE关键字用于指示MySQL如何对字符类型的列进行排序和比较。COLLATE的设置不仅会影响ORDER BY语句的顺序,还会影响WHERE条件中大于和小于号等条件筛选的结果,以及DISTINCT、GROUP BY、HAVING等语句的查询结果。此外,如果索引列是字符类型,在MySQL建立索引时也会受到COLLATE的影响。
每个CHARSET都有多个支持的COLLATE,且每个CHARSET都有一种默认的COLLATE。对于Latin1编码,默认的COLLATE为latin1_swedish_ci,对于GBK编码,默认的COLLATE为gbk_chinese_ci,对于utf8mb4编码,默认的COLLATE为utf8mb4_general_ci。
值得注意的是,从MySQL 8.0开始,默认的CHARSET已经不再是Latin1了,而改为了utf8mb4,且默认的COLLATE也改为了utf8mb4_0900_ai_ci。不少人推荐使用utf8mb4_unicode_ci,但是对于已经使用了utf8mb4_general_ci的系统,并没有必要进行修改。
在MySQL中,COLLATE可以在实例级、库级、表级、列级和SQL语句中指定设置。此外,在SQL查询时,可以明确指定COLLATE,以覆盖任何库、表和列的COLLATE设置。
在系统设计中,应尽量避免让系统严重依赖中文字段的排序结果。在MySQL的查询中,也应该尽量避免使用中文作为查询条件。
相关文章
-
MySQL Workbench怎么建立数据库(附:sql语句创建数据库方法) 2023-07-20 12:22:29
-
MySQL Workbench是什么?(附:如何设置中文教程) 2023-07-20 11:42:31
-
一起聊聊MySQL主从延时的处理方案 2023-05-14 07:00:03
-
mysql修改表结构的语句是什么 2023-05-14 07:00:03
-
MySQL 语法整理介绍 2023-05-14 07:00:03
-
mysql驱动是什么 2023-05-14 07:00:03
-
qt5.8如何连接mysql 2023-05-14 07:00:03
-
mysql怎么将查询结果赋给变量 2023-05-14 07:00:03
-
mysql乐观锁和悲观锁的区别是什么 2023-05-14 07:00:03
-
MySQL学习总结之触发器详解 2023-05-14 07:00:02