news 2026/5/1 4:59:35

达梦数据库超详细查询指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
达梦数据库超详细查询指南

一、基础查询核心语法与实操(含示例)

(一)核心查询语句结构

达梦数据库查询语法兼容标准 SQL,基础结构为:

SELECT [DISTINCT] 字段1, 字段2, ... -- 去重关键字DISTINCT可选

FROM 表名 [别名]

[WHERE 筛选条件]

[GROUP BY 分组字段 [HAVING 分组筛选条件]]

[ORDER BY 排序字段 [ASC/DESC]]

[LIMIT 分页参数]; -- 限制返回结果条数

(二)常用查询场景示例

  1. 全量查询:查询员工表所有字段

SELECT * FROM emp; -- *表示所有字段,适用于快速查看表数据

  1. 条件筛选查询:查询薪资 > 5000 且部门 ID=3 的员工姓名、薪资

SELECT name, salary FROM emp WHERE salary > 5000 AND dept_id = 3;

  1. 排序查询:按入职日期降序查询部门 2 的员工信息

SELECT * FROM emp WHERE dept_id = 2 ORDER BY entrydate DESC;

  1. 分组聚合查询:按部门分组统计员工人数及平均薪资

SELECT dept_id, COUNT(id) AS emp_count, AVG(salary) AS avg_salary

FROM emp

GROUP BY dept_id

HAVING COUNT(id) > 5; -- 筛选员工数大于5的部门

  1. 分页查询:查询第 2 页数据(每页 10 条)

SELECT * FROM emp ORDER BY id LIMIT 10 OFFSET 10; -- OFFSET表示跳过前10条

二、高级查询技术(含多表关联与子查询)

(一)多表连接查询

达梦支持内连接、外连接、自连接等,适配复杂数据关联场景:

  1. 内连接(交集查询):查询员工与对应部门信息

-- 显式内连接

SELECT e.name AS emp_name, d.name AS dept_name

FROM emp e INNER JOIN dept d

ON e.dept_id = d.id; -- ON指定连接条件,表别名简化语法

  1. 左外连接(左表全量保留):查询所有员工及关联部门(无部门也显示)

SELECT e.*, d.name FROM emp e LEFT JOIN dept d ON e.dept_id = d.id;

  1. 自连接(同表关联):查询员工及其直属领导姓名

SELECT a.name AS 员工, b.name AS 领导

FROM emp a LEFT JOIN emp b

ON a.managerid = b.id;

(二)子查询进阶应用

  1. 标量子查询(返回单个值):查询薪资高于平均薪资的员工

SELECT name, salary FROM emp WHERE salary > (SELECT AVG(salary) FROM emp);

  1. 表子查询(返回多行多列):查询部门 3 中业绩 Top3 的员工

SELECT * FROM emp

WHERE (dept_id, salary) IN (

SELECT dept_id, salary FROM emp WHERE dept_id = 3 ORDER BY salary DESC LIMIT 3

);

  1. 子查询推入优化:达梦支持将主查询过滤条件推入子查询,提升效率

-- 优化后:子查询提前过滤部门ID,减少数据处理量

SELECT * FROM emp

WHERE dept_id IN (SELECT id FROM dept WHERE name LIKE '技术%');

三、查询工具操作指南(图形化 + 命令行)

(一)DM 管理工具图形化查询

  1. 连接数据库后,右键目标表→「浏览数据」,默认显示 100 条数据;
  1. 筛选数据:在下方筛选框选择字段→设置比较符(等于、大于等)→输入条件→点击「筛选」按钮;
  1. 自定义查询:点击「新建查询」→输入 SQL 语句→点击「执行」,结果实时展示,支持导出 Excel。

(二)命令行查询操作

  1. 登录数据库:dmmgr -U用户名/-P密码@数据库实例名(如dmmgr -Uscott/-Tiger@mydmdb);
  1. 执行查询:直接输入 SQL 语句,结尾加;回车执行,例如:

SELECT name, salary FROM emp WHERE dept_id = 1;

  1. 查看历史查询:通过VSQL_HISTORY视图查询执行过的 SQL,便于故障排查:

SELECT * FROM VSQL_HISTORY WHERE EXEC_TIME > 1000; -- 查询执行时间超1秒的SQL

四、查询优化核心技巧

(一)索引优化

  1. 为查询频繁的字段创建索引,例如:CREATE INDEX idx_emp_dept ON emp(dept_id);;
  1. 单值查询优先使用唯一索引,达梦会通过 SSEK 操作符实现索引唯一扫描;
  1. 复合索引遵循 “最左前缀原则”,查询条件匹配索引前缀字段时生效。

(二)执行计划优化

  1. 查看执行计划:在 SQL 前加EXPLAIN,分析查询瓶颈,例如:

EXPLAIN SELECT * FROM emp WHERE salary > 8000;

  1. 优化方向:避免SELECT *、减少JOIN表数量、用IN替代OR、合理使用 HINT 调整执行计划。

(三)AI 智能优化

达梦启云平台支持 AI 驱动的 SQL 优化,通过自然语言描述需求即可生成最优 SQL,还能自动调优参数,比人工调优性能提升 5% 左右。

五、常见查询故障排查

(一)结果集异常

  1. 定位问题 SQL:通过应用日志、VSQL_HISTORY视图提取执行语句;
  1. 排查方法:验证 SQL 语法、绑定参数一致性,裁剪 SQL 语句定位出错片段,通过修改 HINT 或改写语句调整执行计划。

(二)查询超时

  1. 原因:无索引、数据量过大、JOIN 逻辑复杂;
  1. 解决:添加索引、分页查询、优化 JOIN 顺序,通过SET LONG_QUERY_TIME调整超时阈值。

(三)进程异常

  1. 查看数据库日志,定位异常 SQL;
  1. 终止慢查询:通过SP_KILL_SESSION(会话ID)终止阻塞进程。

核心查询语句结构

达梦数据库查询语法兼容标准 SQL,基础结构如下:

SELECT [DISTINCT] 字段1, 字段2, ... -- 去重关键字DISTINCT可选 FROM 表名 [别名] [WHERE 筛选条件] [GROUP BY 分组字段 [HAVING 分组筛选条件]] [ORDER BY 排序字段 [ASC/DESC]] [LIMIT 分页参数]; -- 限制返回结果条数

常用查询场景示例

全量查询:查询员工表所有字段

SELECT * FROM emp; -- *表示所有字段,适用于快速查看表数据

条件筛选查询:查询薪资 > 5000 且部门 ID=3 的员工姓名、薪资

SELECT name, salary FROM emp WHERE salary > 5000 AND dept_id = 3;

排序查询:按入职日期降序查询部门 2 的员工信息

SELECT * FROM emp WHERE dept_id = 2 ORDER BY entrydate DESC;

分组聚合查询:按部门分组统计员工人数及平均薪资

SELECT dept_id, COUNT(id) AS emp_count, AVG(salary) AS avg_salary FROM emp GROUP BY dept_id HAVING COUNT(id) > 5; -- 筛选员工数大于5的部门

分页查询:查询第 2 页数据(每页 10 条)

SELECT * FROM emp ORDER BY id LIMIT 10 OFFSET 10; -- OFFSET表示跳过前10条

多表连接查询

达梦支持内连接、外连接、自连接等,适配复杂数据关联场景。

内连接(交集查询):查询员工与对应部门信息

SELECT e.name AS emp_name, d.name AS dept_name FROM emp e INNER JOIN dept d ON e.dept_id = d.id; -- ON指定连接条件,表别名简化语法

左外连接(左表全量保留):查询所有员工及关联部门(无部门也显示)

SELECT e.*, d.name FROM emp e LEFT JOIN dept d ON e.dept_id = d.id;

自连接(同表关联):查询员工及其直属领导姓名

SELECT a.name AS 员工, b.name AS 领导 FROM emp a LEFT JOIN emp b ON a.managerid = b.id;

子查询进阶应用

标量子查询(返回单个值):查询薪资高于平均薪资的员工

SELECT name, salary FROM emp WHERE salary > (SELECT AVG(salary) FROM emp);

表子查询(返回多行多列):查询部门 3 中业绩 Top3 的员工

SELECT * FROM emp WHERE (dept_id, salary) IN (SELECT dept_id, salary FROM emp WHERE dept_id = 3 ORDER BY salary DESC LIMIT 3);

子查询推入优化:达梦支持将主查询过滤条件推入子查询,提升效率

SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE name LIKE '技术%');

查询工具操作指南

图形化查询
连接数据库后,右键目标表→「浏览数据」,默认显示 100 条数据。
筛选数据:在下方筛选框选择字段→设置比较符(等于、大于等)→输入条件→点击「筛选」按钮。
自定义查询:点击「新建查询」→输入 SQL 语句→点击「执行」,结果实时展示,支持导出 Excel。

命令行查询操作
登录数据库:

dmmgr -U用户名/-P密码@数据库实例名 # 例如 dmmgr -Uscott/-Tiger@mydmdb

执行查询:直接输入 SQL 语句,结尾加;回车执行,例如:

SELECT name, salary FROM emp WHERE dept_id = 1;

查看历史查询:

SELECT * FROM VSQL_HISTORY WHERE EXEC_TIME > 1000; -- 查询执行时间超1秒的SQL

查询优化核心技巧

索引优化
为查询频繁的字段创建索引,例如:

CREATE INDEX idx_emp_dept ON emp(dept_id);

单值查询优先使用唯一索引,达梦会通过 SSEK 操作符实现索引唯一扫描。
复合索引遵循“最左前缀原则”,查询条件匹配索引前缀字段时生效。

执行计划优化
查看执行计划:

EXPLAIN SELECT * FROM emp WHERE salary > 8000;

优化方向:避免SELECT *、减少 JOIN 表数量、用 IN 替代 OR、合理使用 HINT 调整执行计划。

AI 智能优化
达梦启云平台支持 AI 驱动的 SQL 优化,通过自然语言描述需求即可生成最优 SQL,还能自动调优参数。

常见查询故障排查

结果集异常
定位问题 SQL:通过应用日志、VSQL_HISTORY视图提取执行语句。
排查方法:验证 SQL 语法、绑定参数一致性,裁剪 SQL 语句定位出错片段,通过修改 HINT 或改写语句调整执行计划。

查询超时
原因:无索引、数据量过大、JOIN 逻辑复杂。
解决:添加索引、分页查询、优化 JOIN 顺序,通过SET LONG_QUERY_TIME调整超时阈值。

进程异常
查看数据库日志,定位异常 SQL。
终止慢查询:

SP_KILL_SESSION(会话ID); -- 终止阻塞进程
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 2:40:58

从0到1构建智能售后系统:Open-AutoGLM核心模块深度拆解

第一章:从0到1构建智能售后系统:Open-AutoGLM核心模块深度拆解 在智能化服务架构演进中,Open-AutoGLM作为一款面向售后场景的自动化语言理解引擎,其核心设计聚焦于意图识别、上下文记忆与动态响应生成。该系统通过模块化解耦实现高…

作者头像 李华
网站建设 2026/4/23 12:26:31

LangFlow镜像安全性分析:数据隐私与本地部署保障

LangFlow镜像安全性分析:数据隐私与本地部署保障 在大语言模型(LLM)迅速渗透各行各业的今天,越来越多企业希望利用GPT、Llama等模型构建专属智能系统——从客服机器人到内部知识助手。然而,一个现实问题随之浮现&#…

作者头像 李华
网站建设 2026/4/25 23:24:07

n8n+Ollama+Qwen3构建企业级RAG检索系统-知识库

1、Qwen3-Embedding介绍 硅基流动:https://cloud.siliconflow.cn/me/models 魔搭社区:https://www.modelscope.cn/search?searchQwen3-Embedding HuggingFace:https://huggingface.co/Qwen/collections 2、Ollama安装下载 Ollama官方地址…

作者头像 李华
网站建设 2026/5/1 4:07:02

为什么顶尖电商团队都在用Open-AutoGLM做活动报名?真相曝光

第一章:为什么顶尖电商团队都在用Open-AutoGLM做活动报名?真相曝光在高并发、快节奏的电商营销场景中,活动报名系统的稳定性与智能化程度直接决定转化率。越来越多头部电商团队选择 Open-AutoGLM 作为其核心报名引擎,背后并非偶然…

作者头像 李华