如何配置 达梦数据库(DM Database) 的 字符集 和 排序规则。我会分成创建库时和修改已有库两种情况来说。
一、新建数据库时配置字符集和排序规则
在创建数据库的时候,达梦会要求设置字符集和排序规则。这一般通过 dminit
工具或者配置脚本来完成。
比如使用命令行 dminit
工具,可以这样指定:
dminit path=/dmdbms/data db_name=TEST charset=GB18030 page_size=16 extent_size=32 case_sensitive=1
charset
:就是指定字符集,比如:UTF-8
(国际通用)GB18030
(中文环境常用)ASCII
(纯英文场景)
case_sensitive
:大小写敏感设置,1表示敏感,0表示不敏感。- 排序规则(Collation)一般是根据字符集自动带入的,或者在后续建库脚本中进一步细调。
注意: 达梦数据库一旦建库完成后,字符集是不可更改的。
二、修改已有库的排序规则(局部调整)
如果数据库已经存在,只能在表、列、查询级别上去指定排序规则,比如:
- 创建表时指定列排序规则:
CREATE TABLE T_USER (
ID INT,
NAME VARCHAR(100) COLLATE "BIN"
);
COLLATE "BIN"
:按二进制比较,区分大小写。- 也可以用其他,比如
"CI_AI"
(不区分大小写、忽略重音)
- 查询时指定排序规则:
SELECT * FROM T_USER ORDER BY NAME COLLATE "CI_AI";
这样,哪怕数据库整体是大小写敏感的,你在具体查询中也可以做到局部控制。
三、常见字符集与排序规则
字符集 | 说明 | 适用场景 |
---|---|---|
UTF-8 | 国际标准编码,支持所有语言字符 | 多语言应用 |
GB18030 | 国家标准中文编码 | 中文系统 |
ASCII | 仅英文字符,最简单 | 轻量级英文应用 |
排序规则(Collation)常见的有:
"BIN"
:二进制比较(最快速,区分大小写)"CI_AI"
:Case Insensitive, Accent Insensitive(不区分大小写且忽略重音)"CS_AS"
:Case Sensitive, Accent Sensitive(区分大小写且区分重音)
总结一下
- 建库时用
dminit
指定好charset
,排序规则一般跟随字符集自动设置。 - 建库后不能改字符集,只能在表、列、查询时用
COLLATE
临时改变排序方式。 - 中文项目建议用
GB18030
,国际项目用UTF-8
。 - 排序规则合理选,能显著提升查询正确性和性能。