一、DM 数据库安装
- 系统要求检查
- 确保操作系统满足 DM 数据库的要求,例如,对于 Linux 系统,检查内核版本、内存、磁盘空间等。以 CentOS 7 为例,推荐内存至少 1GB,磁盘空间剩余 5GB 以上。
- 检查是否安装了必要的依赖库,如 glibc 等。
- 下载 DM 数据库安装包
- 从达梦官方网站(武汉达梦数据库股份有限公司)下载适合操作系统的 DM 数据库安装包,如 DM8 的 Linux 版安装包。
- 安装步骤
- 以 root 用户登录系统,进入安装包所在目录,执行安装命令。例如:
收起
bash
./DMInstall.bin -i
- 根据安装向导提示进行操作,选择安装语言、安装路径(默认路径为
/dm8
)、是否创建数据库实例等。在选择安装组件时,可以根据需求选择典型安装或自定义安装。典型安装会安装数据库服务器、客户端工具等常用组件。 - 安装完成后,会提示是否初始化数据库实例。如果选择初始化,将进入实例配置阶段;如果选择稍后初始化,可以手动使用
dminit
命令进行初始化。
二、实例配置
- 使用 dminit 命令初始化实例
- 如果在安装时未初始化实例,可以使用
dminit
命令手动初始化。例如:
- 如果在安装时未初始化实例,可以使用
收起
bash
dminit PATH=/dm8/data PAGE_SIZE=16 LOG_SIZE=2048 CASE_SENSITIVE=0 CHARSET=0 DB_NAME=DMDB INSTANCE_NAME=DMDB_INSTANCE
- 上述命令指定了实例的数据文件路径、页大小、日志文件大小、是否区分大小写、字符集以及数据库名和实例名等参数。其中,
PATH
参数指定数据文件存储路径,PAGE_SIZE
设置页大小为 16KB,LOG_SIZE
设置日志文件大小为 2048MB,CASE_SENSITIVE=0
表示不区分大小写,CHARSET=0
表示使用默认字符集(GB18030),DB_NAME
为数据库名称,INSTANCE_NAME
为实例名称。
- 注册数据库服务
- 初始化实例后,需要注册数据库服务才能启动和停止实例。在 Linux 系统中,可以使用
dm_service_installer.sh
脚本注册服务。例如:
- 初始化实例后,需要注册数据库服务才能启动和停止实例。在 Linux 系统中,可以使用
收起
bash
./dm_service_installer.sh -t dmserver -p DMDB_INSTANCE -dm_ini /dm8/data/DMDB/dm.ini
- 其中
-t dmserver
表示注册数据库服务类型,-p
指定实例名,-dm_ini
指定实例的配置文件路径。
- 启动和停止数据库实例
- 启动数据库实例:
systemctl start DmServiceDMDB_INSTANCE
- 停止数据库实例:
systemctl stop DmServiceDMDB_INSTANCE
三、备份还原
- 备份数据库
- 全库备份:
sql
BACKUP DATABASE FULL BACKUPSET '/dm8/backup/full_bak';
- 上述 SQL 语句将整个数据库备份到指定的
/dm8/backup/full_bak
目录下,会生成备份集文件。 - 增量备份:
sql
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm8/backup/full_bak' BACKUPSET '/dm8/backup/inc_bak';
- 该语句基于之前的全库备份(
/dm8/backup/full_bak
)进行增量备份,备份集生成在/dm8/backup/inc_bak
目录。
- 还原数据库
- 首先停止数据库实例。
- 全库还原:
sql
RESTORE DATABASE FROM BACKUPSET '/dm8/backup/full_bak';
- 增量还原(假设已有全库还原基础):
sql
RESTORE DATABASE FROM BACKUPSET '/dm8/backup/inc_bak';
- 还原完成后,需要使用
RECOVER DATABASE
命令进行数据库恢复操作,使数据库处于可用状态。例如:
收起
sql
RECOVER DATABASE UPDATE DB_MAGIC;
四、函数用法
- 日期函数
SYSDATE
函数:获取当前系统日期和时间。
sql
SELECT SYSDATE FROM DUAL;
DATEADD
函数:在日期上增加或减少指定的时间间隔。例如,将当前日期增加 1 天:
sql
SELECT DATEADD(DAY, 1, SYSDATE) FROM DUAL;
- 字符串函数
SUBSTRING
函数:截取字符串的一部分。例如,截取字符串'Hello, World!'
中的'Hello'
:
sql
SELECT SUBSTRING('Hello, World!', 1, 5) FROM DUAL;
UPPER
函数:将字符串转换为大写。
sql
SELECT UPPER('hello') FROM DUAL;
- 数学函数
ABS
函数:获取一个数的绝对值。
sql
SELECT ABS(-5) FROM DUAL;
ROUND
函数:对数值进行四舍五入。例如,将 3.14159 四舍五入到小数点后 2 位:
sql
SELECT ROUND(3.14159, 2) FROM DUAL;
五、SQL 语句查询与程序设计
- 简单查询
- 查询表中所有数据:
sql
SELECT * FROM tablename;
- 例如,查询员工表(
employees
)中的所有记录:
sql
SELECT * FROM employees;
- 条件查询:查询工资大于 5000 的员工信息。
sql
SELECT * FROM employees WHERE salary > 5000;
- 连接查询
- 内连接:查询员工表和部门表中员工所属部门的信息。
收起
sql
SELECT employees.employee_name, departments.department_name
FROM employees
JOIN departments ON employees.department_id = departments.department_id;
- 左连接:查询所有员工及其所属部门信息,如果员工没有所属部门也显示员工信息。
sql
SELECT employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;
- 子查询
- 查询工资高于平均工资的员工信息。
sql
SELECT * FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
- 程序设计思路与步骤(以存储过程为例)
- 创建存储过程:例如创建一个存储过程计算员工的奖金。
sql
CREATE PROCEDURE calculate_bonus
AS
BEGIN
UPDATE employees SET bonus = salary * 0.1;
END;
- 调用存储过程:
sql
CALL calculate_bonus();
- 存储过程可以接受参数,例如创建一个根据员工编号计算奖金的存储过程:
sql
CREATE PROCEDURE calculate_bonus_by_id(emp_id INT)
AS
BEGIN
UPDATE employees SET bonus = salary * 0.1 WHERE employee_id = emp_id;
END;
- 调用带参数的存储过程:
收起
sql
CALL calculate_bonus_by_id(1001);
通过以上对 DM 数据库的安装、实例配置、备份还原、函数用法以及 SQL 语句查询和程序设计的介绍,可以较为全面地掌握 DM 数据库的基本操作和应用开发能力,在实际项目中根据具体需求灵活运用这些知识构建稳定高效的数据库应用系统。