这是一份面向初学者的达梦数据库DM Database快速上手文档目标是做到“打开即看、复制即用、照着即可完成基础操作”。适用对象第一次接触达梦数据库的同学需要快速搭建本地测试环境的开发者需要掌握达梦常用 SQL、用户管理、备份恢复基础的运维或实施同学1. 达梦数据库是什么达梦数据库通常简称为DM是国产关系型数据库管理系统常见版本包括 DM8。它的使用方式整体上与 Oracle、MySQL、PostgreSQL 等传统关系型数据库类似支持库、模式、表、索引、视图SQL 查询与事务用户、角色、权限管理备份与恢复JDBC、ODBC 等常见连接方式如果你之前接触过 Oracle会发现达梦在很多管理习惯和 SQL 风格上比较容易迁移理解。2. 第一次连接数据库连接数据库通常需要下面几个参数参数示例主机127.0.0.1端口5236用户名SYSDBA密码你的密码连接字符串思路主机:端口 127.0.0.1:5236首次连接建议使用管理员账号后续业务开发不要长期直接使用SYSDBA。8. 达梦里的核心概念在正式写 SQL 前先把几个核心概念搞清楚8.1 用户用户是登录数据库和拥有对象的主体。8.2 模式Schema通常一个用户会对应一个同名模式表、视图等对象一般放在这个模式下。8.3 表表用来存业务数据。8.4 索引索引用于提升查询速度。8.5 事务事务保证一组操作要么全部成功要么全部失败。9. 快速开始从零跑通一套 SQL下面是一套适合直接练手的最小示例。9.1 创建测试用户CREATE USER TEST_DM IDENTIFIED BY Test123456;9.2 给用户授权GRANT CONNECT, RESOURCE TO TEST_DM;如果你的环境权限模型不同也可能需要额外授权建表或登录权限。最稳妥的做法是由管理员按实际环境补充。9.3 使用测试用户登录后建表CREATE TABLE STUDENT ( ID INT PRIMARY KEY, NAME VARCHAR(50), AGE INT, CREATE_TIME TIMESTAMP );9.4 插入数据INSERT INTO STUDENT (ID, NAME, AGE, CREATE_TIME) VALUES (1, 张三, 20, CURRENT_TIMESTAMP); INSERT INTO STUDENT (ID, NAME, AGE, CREATE_TIME) VALUES (2, 李四, 22, CURRENT_TIMESTAMP);9.5 查询数据SELECT * FROM STUDENT;9.6 条件查询SELECT ID, NAME, AGE FROM STUDENT WHERE AGE 21;9.7 更新数据UPDATE STUDENT SET AGE 23 WHERE ID 2;9.8 删除数据DELETE FROM STUDENT WHERE ID 1;9.9 提交事务COMMIT;如果你执行后能正常查到结果说明你已经完成了达梦最基础的一轮入门。10. 常用数据类型初学阶段先掌握这些就够用了类型说明示例INT整数年龄、数量BIGINT大整数大量数据主键VARCHAR(n)变长字符串姓名、手机号CHAR(n)定长字符串状态码DATE日期2026-06-18TIMESTAMP日期时间2026-06-18 09:30:00DECIMAL(p,s)精确小数金额CLOB大文本长说明建表示例CREATE TABLE ORDERS ( ID BIGINT PRIMARY KEY, ORDER_NO VARCHAR(64), AMOUNT DECIMAL(18,2), REMARK CLOB, CREATE_TIME TIMESTAMP );11. 常用查询语法11.1 排序SELECT * FROM STUDENT ORDER BY AGE DESC;11.2 分组统计SELECT AGE, COUNT(*) AS CNT FROM STUDENT GROUP BY AGE;11.3 模糊查询SELECT * FROM STUDENT WHERE NAME LIKE 张%;11.4 区间查询SELECT * FROM STUDENT WHERE AGE BETWEEN 18 AND 25;11.5 去重SELECT DISTINCT AGE FROM STUDENT;12. 主键、索引与性能基础12.1 主键主键用于唯一标识一条记录。CREATE TABLE DEPT ( ID INT PRIMARY KEY, DEPT_NAME VARCHAR(100) );12.2 普通索引CREATE INDEX IDX_STUDENT_NAME ON STUDENT(NAME);12.3 什么时候建索引适合建索引的字段经常出现在WHERE条件中经常参与排序经常参与关联查询不建议盲目给所有字段加索引因为索引会占空间插入和更新会变慢13. 多表关联查询13.1 创建部门表和学生表关系CREATE TABLE DEPARTMENT ( ID INT PRIMARY KEY, NAME VARCHAR(100) ); CREATE TABLE EMPLOYEE ( ID INT PRIMARY KEY, NAME VARCHAR(100), DEPT_ID INT );13.2 插入测试数据INSERT INTO DEPARTMENT (ID, NAME) VALUES (10, 研发部); INSERT INTO DEPARTMENT (ID, NAME) VALUES (20, 测试部); INSERT INTO EMPLOYEE (ID, NAME, DEPT_ID) VALUES (1, 王明, 10); INSERT INTO EMPLOYEE (ID, NAME, DEPT_ID) VALUES (2, 赵红, 20); COMMIT;13.3 关联查询SELECT E.ID, E.NAME AS EMP_NAME, D.NAME AS DEPT_NAME FROM EMPLOYEE E LEFT JOIN DEPARTMENT D ON E.DEPT_ID D.ID;14. 事务基础事务最核心的几个动作执行 SQLCOMMIT提交ROLLBACK回滚示例UPDATE ORDERS SET AMOUNT 199.00 WHERE ID 1001; ROLLBACK;含义是更新已执行但因为回滚所以最终不生效再看提交示例UPDATE ORDERS SET AMOUNT 199.00 WHERE ID 1001; COMMIT;这次变更会真正写入。15. 视图基础视图可以理解为“保存起来的查询结果定义”。CREATE VIEW V_STUDENT_ADULT AS SELECT ID, NAME, AGE FROM STUDENT WHERE AGE 18;查询视图SELECT * FROM V_STUDENT_ADULT;视图适合简化复杂 SQL给不同用户暴露统一的数据口径16. 用户、角色与权限16.1 创建角色CREATE ROLE APP_READONLY;16.2 给角色授权GRANT SELECT ON STUDENT TO APP_READONLY;16.3 把角色授予用户GRANT APP_READONLY TO TEST_DM;建议17. 备份与恢复实战使用命令行工具disql达梦数据库提供了命令行工具dexp数据导出和dimp数据导入进行逻辑备份与恢复。以下是使用这些工具的完整实战操作。17.1 准备工作确保你已经安装达梦数据库并配置好环境变量知道数据库的连接信息主机、端口、用户名、密码有足够的磁盘空间存放备份文件17.2 导出整个数据库使用dexp工具导出整个数据库的所有对象和数据dexp SYSDBA/SYSDBA127.0.0.1:5236 \ FILEfull_backup.dmp \ LOGfull_backup.log \ FULLY \ DIRECTORY/opt/dm_backup参数说明SYSDBA/SYSDBA用户名/密码127.0.0.1:5236主机:端口FILE导出的备份文件名LOG导出过程的日志文件FULLY导出整个数据库DIRECTORY备份文件存放目录17.3 导出指定模式Schema如果你只需要备份某个特定用户模式下的所有对象dexp TEST_DM/Test123456127.0.0.1:5236 \ FILEtest_schema.dmp \ LOGtest_schema.log \ OWNERTEST_DM \ DIRECTORY/opt/dm_backup参数说明TEST_DM/Test123456模式所属用户的用户名/密码OWNER指定要导出的模式用户名其他参数同上17.4 导出指定表如果只需要备份特定的表dexp SYSDBA/SYSDBA127.0.0.1:5236 \ FILEtables_backup.dmp \ LOGtables_backup.log \ TABLESSTUDENT,COURSE \ DIRECTORY/opt/dm_backup参数说明TABLES指定要导出的表名多个表用逗号分隔17.5 导入数据恢复使用dimp工具导入备份文件17.5.1 导入整个数据库dimp SYSDBA/SYSDBA127.0.0.1:5236 \ FILEfull_backup.dmp \ LOGimport_full.log \ FULLY \ DIRECTORY/opt/dm_backup17.5.2 导入指定模式dimp SYSDBA/SYSDBA127.0.0.1:5236 \ FILEtest_schema.dmp \ LOGimport_schema.log \ SCHEMASTEST_DM \ DIRECTORY/opt/dm_backup17.5.3 导入指定表dimp SYSDBA/SYSDBA127.0.0.1:5236 \ FILEtables_backup.dmp \ LOGimport_tables.log \ TABLESSTUDENT,COURSE \ DIRECTORY/opt/dm_backup17.6 常用参数详解参数说明示例FILE备份文件名FILEbackup.dmpLOG日志文件名LOGexport.logDIRECTORY文件存放目录DIRECTORY/backupFULL是否全库导出/导入FULLYOWNER导出指定用户模式OWNERTEST_DMSCHEMAS导入指定模式SCHEMASTEST_DMTABLES指定表名TABLESSTUDENT,COURSEROWS是否导出数据Y/NROWSYCONSTRAINTS是否导出约束CONSTRAINTSYINDEXES是否导出索引INDEXESY17.7 实战示例备份与恢复流程场景备份 TEST_DM 用户的所有数据然后恢复到新环境导出备份dexp TEST_DM/Test123456127.0.0.1:5236 \ FILEtest_dm_backup_20240722.dmp \ LOGexport_20240722.log \ OWNERTEST_DM \ ROWSY \ CONSTRAINTSY \ INDEXESY \ DIRECTORY/opt/dm_backup在新环境创建用户如果需要CREATE USER TEST_DM IDENTIFIED BY Test123456; GRANT CONNECT, RESOURCE TO TEST_DM;导入恢复dimp SYSDBA/SYSDBA127.0.0.1:5236 \ FILEtest_dm_backup_20240722.dmp \ LOGimport_20240722.log \ SCHEMASTEST_DM \ DIRECTORY/opt/dm_backup17.8 注意事项权限要求执行导出导入操作的用户需要有相应权限通常使用 SYSDBA 或具有 DBA 权限的用户版本兼容确保导出和导入的数据库版本兼容字符集源库和目标库的字符集应保持一致空间检查导入前确保目标库有足够的存储空间日志监控导出导入过程中查看日志文件及时发现问题生产环境生产环境建议在业务低峰期执行并先进行测试恢复验证17.9 自动化备份脚本示例Linux#!/bin/bash # 达梦数据库自动备份脚本 BACKUP_DIR/opt/dm_backup DATE$(date %Y%m%d_%H%M%S) LOG_FILE${BACKUP_DIR}/backup_${DATE}.log DUMP_FILE${BACKUP_DIR}/full_backup_${DATE}.dmp echo 开始备份: $(date) ${LOG_FILE} dexp SYSDBA/SYSDBA127.0.0.1:5236 FILE${DUMP_FILE} LOG${LOG_FILE} FULLY DIRECTORY${BACKUP_DIR} if [ $? -eq 0 ]; then echo 备份成功: $(date) ${LOG_FILE} echo 备份文件: ${DUMP_FILE} ${LOG_FILE} 删除7天前的备份 find ${BACKUP_DIR} -name .dmp -mtime 7 -delete find ${BACKUP_DIR} -name .log -mtime 7 -delete else echo 备份失败: $(date) ${LOG_FILE} exit 1 fi通过掌握dexp和dimp工具的使用你可以灵活地进行达梦数据库的逻辑备份与恢复为数据安全提供保障。