金仓数据库KingbaseES迁移—Oracle与KingbaseES层次查询兼容

关键字:

    KingbaseES、Oracle、层次查询、迁移

一、层次查询

层次查询是一种特定类型的查询,用于在基于父子关系的数据中以层次顺序返回结果集中的记录。通常,层次是用一个反转顺序的树结构表示。树由相互连接的节点组成。每个节点可能会连接0个或多个子节点。在层次查询中,结果集的记录为一或多棵树中的节点。

语法:

      SELECT ... FROM

           [WHERE condition]                             --过滤某些节点

           [ START WITH [nocycle] start_condition]    --定义查询的起点, 可以使用子查询

          CONNECT BY [[nocycle] PRIOR COLUMN1 = COLUMN2 [AND ...]];   --定义父子关系

          order [ sibilings ] by ...

KingbaseES和Oracle均支持层次查询,且二者兼容。

下表列出了层次查询中的操作符:

伪列与普通列十分相似,但其值并不是和表数据存储在一起的。层次查询具有三个伪列,具体如下表所示。

二、测试案例

2.1 测试用表

图2-1 测试用表数据信息

emp表树状数据结构图:

2.2 在Oracle和KingbaseES 中层次查询

2.2.1 Oracle层次查询案例

基本的层次查询,显示员工(empno)和部门经理(mgr)之间的层次关系。

图2-2 Oracle 层次查询案例1

层次查询伪列的示例。通过对伪列LEVEL值执行LPAD操作,雇员名称被缩进,这样能够进一步强调每条记录在层次中的深度。

图2-3 Oracle 层次查询案例2

层次查询的WHERE过滤的示例。

图2-4 Oracle 层次查询案例3

2.2.2 KingbaseES中层次查询案例

基本的层次查询,显示员工(empno)和部门经理(mgr)之间的层次关系。

图2-5 KingbaseES 层次查询案例1

层次查询伪列的示例。通过对伪列LEVEL值执行LPAD操作,雇员名称被缩进,这样能够进一步强调每条记录在层次中的深度。

图2-6 KingbaseES 层次查询案例2

层次查询的WHERE过滤的示例。

图2-7 KingbaseES 层次查询案例3

  • 总结

通过以上案例可以获知,对于Oracle的层次查询的语法,在KingbaseES V8R6的环境下已经具备了很好的兼容性,基本上在Oracle数据库上执行的层次查询语句,迁移到KingbaseES V8R6的环境时,可以不做改写,即可以运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
人大金仓数据库可以通过使用持久连接和DBLink来实现远程访问Oracle数据库。首先,我们需要使用以下语句在人大金仓数据库中创建一个到目标Oracle数据库的持久连接: SELECT dblink_connect_u('myconn_db_b', 'hostaddr=xxx.xxx.xxx.xxx port=54321 dbname=db_b user=u_b password=密码'); 其中,xxx.xxx.xxx.xxx是目标Oracle数据库的主机地址,54321是目标Oracle数据库的端口号,db_b是要访问的数据库名称,u_b和密码是用于连接目标Oracle数据库的用户名和密码。这将会创建一个名为myconn_db_b的持久连接。 接下来,您可以使用人大金仓数据库的DBLink功能来访问远程Oracle数据库。具体使用方法可以参考人大金仓数据库的相关文档或者使用以下语句: SELECT * FROM tablename@myconn_db_b; 其中,tablename是您要访问的远程Oracle数据库中的表名,myconn_db_b是上一步创建的持久连接名称。通过这种方式,您可以在人大金仓数据库中访问并操作远程Oracle数据库的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数据库审计系统需求说明.docx](https://download.csdn.net/download/qq_43934844/87590316)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [.NET CORE ORM 达梦 人大金仓 操作数据库 访问 连接](https://blog.csdn.net/jhl52771/article/details/109631622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [人大金仓Kingbase数据库使用dblink进行跨库操作示例](https://blog.csdn.net/wsdhla/article/details/130963638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值