跳到主要内容

数据库级字符集和字符序

每个数据库都有默认字符集和默认字符序。

指定数据库的字符集和字符序

CREATE DATABASE 语句用于指定数据库的字符集和字符序,语法如下:

CREATE DATABASE database_name
[DEFAULT] CHARACTER SET [=] charset_name
[[DEFAULT] COLLATE [=] collation_name]

ALTER DATABASE database_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]

其中,CHARACTER SETCOLLATE 子句可以在同一 OBServer 上创建具有不同字符集和字符序的数据库。

创建和修改数据库字符集的示例如下:

/* 直接创建 latin1 数据库 */
CREATE DATABASE latin1_db CHARSET latin1;

/* 将一个已经存在的 utf8 数据库修改成 latin1 数据库*/
CREATE DATABASE db CHARSET=utf8mb4;
ALTER DATABASE db CHARSET latin1;

选择数据库的字符集和字符序

seekdb 通过以下方式选择数据库的字符集和字符序:

  • 如果同时指定了 CHARACTER SET charset_nameCOLLATE collation_name,则使用字符集 charset_name 和字符序 collation_name

  • 如果指定了 CHARACTER SET charset_name 但未指定 COLLATE,则使用字符集 charset_name 及其默认字符序。要查看每个字符集的默认字符序,请使用 SHOW CHARACTER SET 语句。

  • 如果指定了 COLLATE collation_name 但未指定 CHARACTER SET,则使用与 collation_name 关联的字符集和指定的字符序。

  • 如果既不指定 CHARACTER SET 也不指定 COLLATE,使用服务器的字符集和字符序。

默认数据库的字符集和字符序可以通过 character_set_databasecollation_database 系统变量的值来确定。要查看指定数据库的默认字符集和字符序,请使用以下语句:

USE database_name;
SELECT @@character_set_database, @@collation_database;

或者:

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'database_name';

示例如下:

SET collation_database = 'latin1_swedish_ci';
Query OK, 0 rows affected (0.000 sec)