Oma*_*ari 13 mysql database collation
我知道排序规则是一组用于对字符集进行比较的规则.除了列排序规则之外,MySQL还具有表和数据库排序规则.我想知道这三个(数据库,表和列)的排序规则之间有什么区别.
非常感谢.
Car*_*ett 23
MySQL的字符集和排序规则可以解释为优先级项目的自上而下的列表.最顶层的是最低优先级,最底层是最优先级.
最高优先级最低优先顺序:
CAST
或CONVERT
)服务器排序规则由服务器设置,服务器设置在服务器内部my.cnf
或从源代码构建服务器时.默认情况下,这通常是latin1
或utf8
,取决于您的平台.
特定于连接的排序规则由客户端使用类似的查询设置SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';
.大多数客户端不设置特定于连接的排序规则,因此服务器将使用其自己的默认值,如上所述.
数据库排序规则在数据库创建期间设置,或稍后通过更新手动设置.如果您未指定一个,它将使用下一个更高级别的排序规则,该排序规则可以是特定于连接的排序规则,也可以是服务器排序规则.
表排序规则与数据库排序规则相同,除非留空,它将使用数据库作为其默认值,然后使用特定于连接的,然后最终使用服务器的排序规则.
列排序规则使用表的排序规则作为其默认值,如果没有排序规则集,则它将跟踪链以查找要使用的排序规则,如果未设置所有其他排序规则,则停在服务器上.
查询排序规则在查询中使用CAST
或指定CONVERT
,但否则将使用链中的下一个可用排序规则.除非使用函数,否则无法设置此项.
另请参阅手册页字符集支持.
简而言之。当您设置服务器排序规则时。为 UTF-8。所有未定义排序规则而创建的数据库都将从服务器继承它。
column iherits from table
table inherits from database
database inherits from server
Run Code Online (Sandbox Code Playgroud)
但是,您可以在其中之一覆盖默认服务器。那么一切都会继承它。