序言
在企业信息化系统中,数据库是最核心的基础设施之一,而 DM(达梦数据库) 作为国产数据库代表,已在不少政府、企业及大型项目中被广泛采用。由于其在语法和存储机制上与 Oracle 等数据库存在一定差异,很多开发或运维人员在日常使用中常会遇到表结构调整、索引管理、字段类型修改等操作场景。
为了便于在工作中快速查找与参考,这里整理并记录了一些达梦数据库(DM)常见 SQL 操作示例,涵盖建表、表结构变更、字段修改、索引管理等典型场景。本文旨在作为一份实用备忘录,帮助开发人员在日常开发、调试或迁移过程中更加高效地完成数据库相关操作。
建表示例
1 | CREATE TABLE "CITY_STEWARD_BUS"."bus_contract" |
STORAGE(ON "MAIN", CLUSTERBTR) 参数说明
- 含义:指定表的存储参数,包含 存储位置 和 数据组织方式。
- 详细解释:
ON "MAIN":表示表数据存储在名为MAIN的表空间中。表空间是达梦管理物理存储的逻辑单元,可对应磁盘目录或文件。CLUSTERBTR:表明表的 数据存储结构 使用 聚集 B 树(Clustered B-Tree)组织。数据按某索引(通常是聚集索引)的 B 树结构物理排序,但需注意:- 若表中存在聚集索引(如未显式声明
NOT CLUSTER的主键),数据按该索引的 B 树存储 - 若所有索引均为非聚集(如本例),达梦可能以 堆表(Heap Table) 形式存储数据,即无序堆叠,此时
CLUSTERBTR可能无效或需进一步验证参数兼容性
- 若表中存在聚集索引(如未显式声明
表结构调整
添加字段并增加注释
1 | # 添加字段 |
参数说明:
BIZ_MISSION_FILL”.“MISSION:模式名+表名(需要增加字段的表)IS_DEPARTMENT_PLAN:增加的字段名称TINYINT:增加的字段类型(后面可以带上精度例:VARCHAR2 )
1 | ALTER TABLE "CITY_STEWARD_BUS"."om_contract_receive_pay_plan_service_project_detail" ADD "real_receive_pay_amount" DECIMAL(18, 2); |
修改字段类型或修改字段精度
1 | ALTER TABLE "CITY_BUS"."om_contract" MODIFY receive_pay_amount DECIMAL(18, 2) |
参数说明:
"CITY_BUS"."om_contract":模式加表receive_pay_amount:表里面的字段DECIMAL(18, 2):需要修改字段的字段类型或长度
字段重命名并修改注释
1 | ALTER TABLE "SZFMIMP"."T_STOCK_OUT_EXAMINE" RENAME COLUMN "spt_status" to "SFHB"; |
说明:
SZFMIMP”.“T_STOCK_OUT_EXAMINE:表- `spt_status:旧字段
"SZFMIMP”.“T_STOCK_OUT_EXAMINE":要修改的字段 (后面可以加上新字段的类型和长度)
大字段类型字段修改为varchar 类型
— 新建一个字段 确定要改的字段类型
1 | alter table "SZFMIMP"."T_STOCK_OUT_EXAMINE" add SYYY1 VARCHAR; — 把原有的字段值赋值给新字段 |
注:以上例子是要把 ssyy 类型(原类型为clob) 修改为 varchar 类型成功却不用删表
索引
创建
1 | # 唯一索引 |
删除索引
1 | DROP INDEX SZFMIMP.idx_type; |
说明
SZFMIMP:模式名idx_type:索引名