达梦数据库相关术语及管理操作
学习者:张源凯
目录
1. 数据存储的基本单元
2. 数据安全与一致性
3. 性能与业务优化工具
二、达梦数据库产品优势
1. 安全可控
2. 高效稳定
3. 易用可扩展:降低学习与迁移成本
三、达梦数据库相关操作
1. 表空间、表与模式的创建
(1)表空间
(2)对象
(3)表
2. 数据查询与操作
(1)单表查询
(2)子查询
3. 高级对象
(1)视图
(2)索引
一、达梦数据库相关核心术语
1. 数据存储的基本单元
表(Table):数据存储的最小实体,由 "字段(列)" 和 "记录(行)" 组成。
字段(Field):定义数据类型的载体,达梦支持 INT、VARCHAR、DATE等常用类型,需根据业务场景选择。
主键(Primary Key):唯一标识表中记录的字段,保障数据唯一性。
表空间(Tablespace):逻辑存储容器,关联物理数据文件。
2. 数据安全与一致性
事务(Transaction):不可分割的操作单元,遵循 ACID 原则。比如 "员工调薪" 需同时更新employees.salary
和salary_history
表,事务确保要么全成功,要么全回滚,避免数据不一致。
权限与角色:权限是用户操作数据库的 "通行证",角色则是权限的集合。通过角色分配权限,可简化多用户管理。
备份与恢复:定期将数据复制到备份介质(如磁盘、磁带),应对数据损坏或丢失。达梦支持全量备份(完整复制数据库)和增量备份(仅备份新增数据),结合归档日志可实现 "任意时间点恢复"。
日志(Log):记录所有数据库操作的 "账本",包括重做日志和归档日志。
3. 性能与业务优化工具
索引(Index):提升查询速度的 "目录",如给employees.position
创建索引,查询 "工程师" 相关记录时无需扫描全表。注意:索引会增加写入开销,避免过度创建。
视图(View):虚拟表,基于查询结果动态生成。
存储过程(Stored Procedure):预编译的 SQL 集合,减少网络传输量,提升业务执行效率。
触发器(Trigger):满足条件自动执行的 "规则",实现业务逻辑的自动化管控。
二、达梦数据库产品优势
1. 安全可控
达梦通过 "多层防护 + 国密合规" 构建安全体系:支持数据传输加密(SSL/TLS)和存储加密(国密 SM4 算法),防止数据在传输和存储中泄露;提供细粒度审计日志,记录每一次用户操作(如 "谁在什么时间修改了薪资"),满足金融、政务等行业的合规要求。更重要的是,达梦完全自主研发,无外部技术依赖,避免 "卡脖子" 风险。
2. 高效稳定
性能优化:内置智能查询优化器,能自动选择最优查询计划;
高可用架构:支持主备复制、分布式集群等部署方式。例如 "一主两备" 架构中,主节点故障时,备用节点可秒级切换,确保业务不中断;分布式集群则通过横向扩展节点,承载 PB 级数据存储与高并发访问。
3. 易用可扩展:降低学习与迁移成本
低门槛上手:提供图形化管理工具(如达梦管理工具 DM Manager),可视化创建表、备份数据,无需记忆复杂命令;支持标准 SQL 和 JDBC/ODBC 等通用接口,熟悉 MySQL/Oracle 的开发者可快速迁移。
完善生态支持:配套数据迁移工具(如 DM DTS),可一键从 Oracle/MySQL 迁移数据,自动处理语法差异;官方社区提供文档、视频教程和技术问答,新手遇到问题能快速找到解决方案。
三、达梦数据库相关操作
1. 表空间、表与模式的创建
(1)表空间
表空间是数据文件的逻辑载体,建议按业务类型划分(如员工数据、部门数据分开存储)。示例:创建员工数据专用表空间
sql
-- 创建用于存储员工数据的永久表空间,初始大小100M,满后自动扩展10M(最大200M)
CREATE TABLESPACE tbs_emp_data
DATAFILE '/dm/data/tbs_emp_data.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 200M;-- 查看表空间状态:确认是否创建成功、数据文件路径是否正确
SELECT tablespace_name, file_name, bytes/1024/1024 AS file_size_mb
FROM dba_data_files
WHERE tablespace_name = 'TBS_EMP_DATA';-- 扩展表空间:若数据文件满了,可手动增加大小
ALTER DATABASE DATAFILE '/dm/data/tbs_emp_data.dbf' RESIZE 150M;
(2)对象
模式(Schema)是数据库对象的逻辑分组,避免不同业务的表名冲突(如emp_schema.employees
和dept_schema.departments
)。示例:创建员工业务模式并授权
sql
-- 创建模式,指定所有者为emp_admin用户
CREATE SCHEMA emp_schema AUTHORIZATION emp_admin;-- 查看所有模式:确认模式归属与状态
SELECT schema_name, owner
FROM dba_schemas
WHERE schema_name = 'EMP_SCHEMA';-- 授权:允许开发用户dev_user访问该模式下的表
GRANT USAGE ON SCHEMA emp_schema TO dev_user;
(3)表
创建表时需明确字段类型、约束(主键、外键、非空等),确保数据完整性。示例:创建员工表与部门表(含外键关联)
sql
-- 创建部门表(主表)
CREATE TABLE emp_schema.departments (dept_id INT PRIMARY KEY, -- 部门ID(主键)dept_name VARCHAR(50) NOT NULL, -- 部门名称(非空)location VARCHAR(100) -- 部门位置
) TABLESPACE tbs_emp_data;-- 创建员工表(从表),通过dept_id关联部门表
CREATE TABLE emp_schema.employees (emp_id INT PRIMARY KEY, -- 员工ID(主键)emp_name VARCHAR(50) NOT NULL, -- 员工姓名(非空)position VARCHAR(50), -- 职位salary DECIMAL(10,2), -- 薪资(保留2位小数)hire_date DATE, -- 入职日期dept_id INT, -- 关联部门ID-- 外键约束:确保员工的部门ID在部门表中存在CONSTRAINT fk_emp_dept FOREIGN KEY (dept_id) REFERENCES emp_schema.departments(dept_id)
) TABLESPACE tbs_emp_data;
2. 数据查询与操作
(1)单表查询
查询 2025 年入职、薪资高于 5000 的员工信息
sql
SELECT emp_id, emp_name, position, salary, hire_date
FROM emp_schema.employees
WHERE hire_date >= TO_DATE('2025-01-01', 'YYYY-MM-DD') AND salary > 5000
ORDER BY salary DESC;
(2)子查询
需求:查询薪资高于本部门平均薪资的员工
sql
SELECT e.emp_name, e.dept_id, e.salary, (SELECT AVG(salary) FROM emp_schema.employees WHERE dept_id = e.dept_id) AS dept_avg_salary
FROM emp_schema.employees e
WHERE e.salary > (SELECT AVG(salary) FROM emp_schema.employees WHERE dept_id = e.dept_id);
3. 高级对象
(1)视图
需求:创建 "部门薪资 TOP3 员工" 视图,仅显示关键信息
sql
CREATE OR REPLACE VIEW emp_schema.v_dept_top3_salary AS
SELECT d.dept_name, e.emp_name, e.position, e.salary
FROM emp_schema.departments d
JOIN (SELECT emp_name, position, salary, dept_id,ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS rankFROM emp_schema.employees
) e ON d.dept_id = e.dept_id
WHERE e.rank <= 3
WITH CHECK OPTION;
SELECT * FROM emp_schema.v_dept_top3_salary;
(2)索引
需求:针对 "按职位 + 薪资查询员工" 的高频场景,创建联合索引
sql
CREATE INDEX idx_emp_pos_sal
ON emp_schema.employees (position, salary);