数据库级字符集 和字符序
每个数据库都有默认字符集和默认字符序。
指定数据库的字符集和字符序
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 SET 和 COLLATE 子句可以在同一 OBServer 上创建具有不同字符集和字符序的数据库。
创建和修改数据库字符集的示例如下:
/* 直接创建 latin1 数据库 */
CREATE DATABASE latin1_db CHARSET latin1;
/* 将一个已经存在的 utf8 数据库修改成 latin1 数据库*/
CREATE DATABASE db CHARSET=utf8mb4;
ALTER DATABASE db CHARSET latin1;
选择数据库的字符集和字符序
seekdb 通过以下方式选择数据库的字符集和字符序:
-
如果同时指定了
CHARACTER SET charset_name和COLLATE 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_database 和 collation_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)