mysql8 collation_database 与collation_server优先级
时间: 2024-02-02 19:03:01 浏览: 39
在 MySQL 8 中,`collation_database` 和 `collation_server` 都是用来设置字符集和排序规则的参数,但是它们的优先级是不同的。
`collation_server` 是设置 MySQL 服务器的默认字符集和排序规则的参数,它会影响到所有的数据库和表。如果没有在数据库或表中指定字符集和排序规则,那么就会使用 `collation_server` 的设置。
而 `collation_database` 则是设置当前数据库的字符集和排序规则的参数,它会覆盖 `collation_server` 的设置。如果在使用数据库时指定了不同的字符集和排序规则,那么就会使用 `collation_database` 的设置。
因此,`collation_database` 的优先级高于 `collation_server`。如果在数据库中指定了字符集和排序规则,那么就会使用数据库中的设置,而不是使用服务器的默认设置。如果没有在数据库中指定,那么就会使用服务器的默认设置。
相关问题
collation_database
"collation_database" 是 MySQL 数据库中的一个系统变量,它指定了数据库默认的字符集排序规则(collation)。字符集指定了字符的编码方式,而排序规则则指定了如何对这些字符进行排序。在创建数据库时,可以通过指定字符集和排序规则来设置 "collation_database" 的值。如果没有指定排序规则,则使用字符集的默认排序规则。
例如,如果创建一个名为 "mydatabase" 的数据库,并将其字符集设置为 "utf8mb4",则可以使用以下命令设置默认排序规则:
```
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
```
这将将 "collation_database" 设置为 "utf8mb4_general_ci",其中 "ci" 表示 "case-insensitive",表示在排序时不考虑字符的大小写。如果需要区分大小写,则可以使用 "utf8mb4_bin" 排序规则。
collation_server
`collation_server` 是 MySQL 数据库中用于字符集排序(collation)的服务器。MySQL 中的字符集排序规则决定了如何比较和排序字符串。例如,在某些语言中,字母的顺序可能与英文不同,因此需要不同的排序规则。
`collation_server` 可以通过在 MySQL 配置文件中设置 `collation-server` 参数来指定。默认情况下,MySQL 使用 `latin1_swedish_ci`,这是一个适用于英语和西欧语言的排序规则。如果需要使用其他字符集排序规则,可以在创建表或列时指定该规则。
在 MySQL 中,collation_server 在查询时也可以被覆盖,可以使用 `COLLATE` 关键字来覆盖表或列的默认字符集排序规则。例如:
```
SELECT name FROM mytable ORDER BY name COLLATE utf8_general_ci;
```
这将使用 `utf8_general_ci` 排序规则对 `name` 列进行排序。