数据库系列&达梦系列:达梦数据库基础操作-查询




达梦数据库基础操作-查询

一、基础查询

1 )单表查询

1. 查看表结构

使用两种方式可查看数据库的表结构:

在这里插入图片描述
在这里插入图片描述
查询后会显示该表的创建语句以及结构

2. 查询全表

使用 SELECT * 查询全表,此时数据库会返回表所有列

在这里插入图片描述

3. 行过滤

使用条件查询进行过滤,例如查询所有 ID 大于 103 的行
在这里插入图片描述

4. 查找控制

使用 IS NULL 为条件查找控制:
在这里插入图片描述

5. 查询满足多个条件的行

使用 OR 字句来查询满足多个条件的行,但在实际应用中使用 OR 会严重降 低数据库的性能,所以尽量避免使用 OR ,可以改为 IN

在这里插入图片描述

6. 别名

使用 AS 在查询时给列取别名
在这里插入图片描述

7. 列拼接

使用 || 可将几条列拼接起来,可以拼为一句话

在这里插入图片描述

8. 根据条件查询并对返回的信息进行标识

使用 CASE...END AS 对返回的信息进行标识,用 AS 为新的列取别名作为返回
的信息
在这里插入图片描述

9. 使用 limit 限制返回结果的行数

在这里插入图片描述

2 )查询结果排序

使用 ORDER BY 对查询结果进行排序, ASC 为升序, DESC 为降序
在这里插入图片描述

3 )使用 UNION ALL 进行多表联合检索

在这里插入图片描述

需注意多表联合检索时列的数据类型必须匹配,否则会报错
在这里插入图片描述
使用 UNION ALL 合并结果集后如果有重复数据可以使用 UNION 来合并
UNION 有去重功能,例如使用 UNION ALL

在这里插入图片描述
使用 UNION 后就不会出现重复行

在这里插入图片描述

二、层次查询

1.概念

在实际生产应用中有很多地方会用到树状的数据结构,例如某部门的组织结
构,下辖有各个分部门,各个分部门下辖又有各个组织,这种数据结构在进行查
询时就使用到层次查询,涉及到父节点、子节点、叶节点等的应用。

2.层次查询子句

1 ) LEVEL 伪列

LEVEL 伪列是表示当前数据在树状的数据结构图中的层级,不存在于表中,
查询时动态生成,树状数据结构的根节点 LEVEL1 ,以它开始依次向下递增,
例如:
在这里插入图片描述

2 ) CONNECT_BY_ISLEAF 伪列

CONNECT_BY_ISLEAF 伪列是表示当前节点是否是叶节点(即不存在子节点,
例如上图中最下排三个节点就是叶节点), 1 表示是叶节点, 0 表示不是叶节点。

3 ) CONNECT_BY_ISCYCLE 伪列

检测 CONNECT BY 查询中 是否存在 循环。当 查询到达 一个循环 时,
CONNECT_BY_ISCYCLE 会返回 1 ,表示存在循环;否则返回 0 ,表示不存在循环。
这对于避免无限循环非常重要,因为在处理层次结构数据时,循环可能导致查询
永远无法结束。

4 ) connect by 与 PRIOR 关键字

使用 connect by 指定一个或多个父子关系的列, 数据库根据这些关系递归地检
索数据,然后 使用 PRIOR 关键字指定从一个行到另一个行建立连接,建立父子关
系,在以下这个例子中,通过 CONNECT BY 递归地查询所有下属员工。通过指定
PRIOR 关键字来建立员工之间的父子关系,可以构建整个层次结构的数据。
例如 EMPLOYEE_ID=101 的员工上级节点为 MANAGER_ID=100 ,这两个节点
之 间 就 建 立 了 父 子 关 系 , 子 节 点 记 录 的 MANAGER_ID= 父 节 点 记 录 的EMPLOYEE_ID

在这里插入图片描述
查询 LEVELCONNECT_BY_ISLEAFCONNECT_BY_ISCYCLE 伪列

在这里插入图片描述

5 ) start with 关键字

使用 start with 关键字指定从哪一行开始查询,即将该节点作为根节点进行
查询
在这里插入图片描述

三、并行查询

1. 自动并行

1 )查询默认的并行策略,此时是关闭的

在这里插入图片描述

2 )开启并行,并设置最大并行查询数为 4 ,执行完成后重启数据库生效

在这里插入图片描述

3 )未开启并行时查看查询表 T1 的执行计划

在这里插入图片描述
开启并行查询后查看查询表 T1 的执行计划

在这里插入图片描述

可以看到此时执行计划出现 LOCAL COLLECT ,这指的是在并行查询过程中,
各个并行执行的节点将它们处理的数据局部汇总的操作。

2. 手动并行

1 )修改 PARALLEL_POLICY 参数为 2 ,开启手动并行模式,并重启数据库

在这里插入图片描述

2 )执行命令查看执行计划,可以看到此时不是并行查询的

在这里插入图片描述

3 )因为开启了手动并行,所以需要使用 HINT 来指定并行度,语法如下
/*+ PARALLEL([< 表名 >] < 并行任务个数 >) */

在这里插入图片描述

四、闪回查询

1.闪回技术

当用户操作不当导致错误的删改数据时,可以使用闪回技术可以帮助查询找
回,通过 ENABLE_FLASHBACK 参数控制闪回功能的开启关闭( 1 为开启, 0 为关
闭),开启闪回功能后数据库会保留回滚段一段时间,由 UNDO_RETENTION
数指定回滚段的时长(缺省 90 秒,最大一天)。

限制: MPP 不支持闪回,数据守护环境下,备库不支持闪回。
不能对系统表、临时表、 HUGE 表、内部辅助表、动态表等执行闪回
表操作。

2.操作

1 )开启闪回功能

在这里插入图片描述

2 )查看当前回滚段保留时间,显示当前默认回滚段保留时间为 90s

在这里插入图片描述

3 )修改回滚段保留时间
4 )按时间查询历史记录,通过指定一个 timestamp 时间类型,来查询过去某个特定时刻的表;查询当前时间表的状态和时间

在这里插入图片描述
在这里插入图片描述
在表中插入新的数据:

在这里插入图片描述
闪回查询之前时间点的表(因为我的虚拟机时间和数据库时间不一样,所以更换
Windows 上的数据库操作):
在这里插入图片描述

5 )创建临时表并进行闪回查询

查看当前时间
在这里插入图片描述

临时表 T2 中插入数据,使用闪回查询查询插入之前的 T2
在这里插入图片描述
执行命令后出现报错,由此可见数据库不支持临时表的闪回查询
在这里插入图片描述

同样的,创建视图也不支持闪回查询
达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台







Esoragoto11

达梦数据库基础操作-查询

posted @   坦笑&&life  阅读(1317)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示