广告
返回顶部
首页 > 资讯 > 数据库 >Oracle树结构
  • 860
分享到

Oracle树结构

oracle树状结构acle 2022-10-18 01:10:19 860人浏览 薄情痞子
摘要

树结构层次关系即父子关系,类似公司中的部门组织结构树其中总经理是最大的父节点,下面有助理、市场部、行政办、研发部等子节点,而研发部又细分为研发一部和研发二部;如hr用户表employees中的employe

树结构层次关系即父子关系,类似公司中的部门组织结构树

Oracle树结构

其中总经理是最大的父节点,下面有助理、市场部、行政办、研发部等子节点,而研发部又细分为研发一部和研发二部;

如hr用户表employees中的employee_id和manager_id。employee_id表示该雇员的编号,manager_id表示领导该雇员的人的编号,即子节点的manager_id值等于父节点的employee_id值。在表的每一行中都有一个表示父节点的manager_id(除根节点外),通过每个节点的父节点,就可以确定整个树结构。

在SELECT命令中使用CONNECT BY 和蔼START WITH 子句可以查询表中的树型结构关系。其命令格式如下:
SELECT 。。。
CONNECT BY {PRIOR 列名1=列名2|列名1=PRIOR 裂名2}
[START WITH]
其中:CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中。PRioRY运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR运算符在的一侧表示父节点,另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。

START WITH 子句为可选项,用来标识哪个节点作为查找树型结构的根(起始)节点。若该子句被省略,则表示所有满足查询条件的行作为根节点。
START WITH:不但可以指定一个根节点,还可以指定多个根节点。

 

学习之前,让我们首先对于树结构章节会使用到的关键词有个概念上的认识和理解!

      prior:优先的

      STARTWITH:指定遍历的起点

     CONNECT BY PRIOR:指定遍历的顺序,比如从上到下,从下到上

     CONNECT BY NOCYCLE PRIOR:不进行循环遍历,可以避免死循环情况的发生

      SYS_CONNECT_BY_PRTH:函数,用于指定层次分隔符

     CONNECT_BY_ISLEAF:函数,返回0和1两个值,0代表非末级节点,即下面还有子节点;1代表最末级节点,即下面不再有子节点

 

据上面的关键字我们来组合一条sql语句:显示employees表中的用户的隶属关系,类似总经理/副总经理/行政办主任/办事员......

我们使用START WITH语句来指定遍历的源头,即从哪里开始,START WITH可以省略,如果省略则表示所有满足查询条件的行作为根节点

CONNECT BY PRIOR用来指定遍历的顺序,等号的两端连接的是父子关系,即是从老子开始找儿子,还是从儿子开始找老子......

e.employee_id=e.manager_id的意思是:首先找到员工的信息,然后再去找上级是这个员工的,这就是从上至下

关于LEVEL:LEVEL需要与CONNECT BY 配合使用,表示树状结构的层级,LEVEL是oracle保留关键字

--1:下面的sql语句是上至下进行员工遍历显示,层次结构使用/进行分割

SQL>SELECTLPAD(' ', 2 * LEVEL - 1) || SYS_CONNECT_BY_PATH(e.last_name, '/') AS path

                                 FROMemployees e

                                 STARTWITH e.manager_id IS NULL

CONNECT BY PRIORe.employee_id = e.manager_id

 

--2:查找由FORDBLAKE 领导的所有雇员的信息。

           SQL>SELECT EMPNO,ENAME,MGR

                  FROM EMP

                    CONNECT BY PRIOR EMPNO=MGR

                  START WITH ENAME IN(’FORD’,’BLAKE’);

             EMPNO       ENAME        MGR

              ——————————————————————————

             7698            BLAKE         7839

             7499            ALLEN         7698

             7521            WARD          7698

             7654            MARTIN      7698

 

3:树结构结果集中不包含Hartstein的树状关系,我们可以这样实现

SQL>SELECTLPAD(' ', 2 * LEVEL - 1) || SYS_CONNECT_BY_PATH(e.last_name, '/') AS path

                               FROM employees e

                               START WITHe.manager_id IS NULL

CONNECT BY PRIORe.employee_id = e.manager_id

          AND e.last_name <> 'Hartstein'

说明:通过在CONNECT BY 子句后面加AND关键字的方式进行条件筛选


您可能感兴趣的文档:

--结束END--

本文标题: Oracle树结构

本文链接: https://www.lsjlt.com/news/35845.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle树结构
    树结构层次关系即父子关系,类似公司中的部门组织结构树其中总经理是最大的父节点,下面有助理、市场部、行政办、研发部等子节点,而研发部又细分为研发一部和研发二部;如hr用户表employees中的employe...
    99+
    2022-10-18
    oracle 树状结构 acle
  • 一文解析ORACLE树结构查询
    我们在日常程序设计中,经常会遇到树状结构的表示,例如组织机构、行政区划等等。这些在数据库中往往通过一张表进行展示。这里我们以一张简单的行政区划表为例进行展示,在实际使用过程中,可以为其添加其他描述字段以及层级。 表中通...
    99+
    2022-09-02
    ORACLE树结构查询 ORACLE树结构
  • PHP数组转树形结构、树形结构转数组
    PHP数组转树形结构、树形结构转数组 一、实现功能二、原数据三、数组转数据树四、数据树转数组五、结语 一、实现功能 在日常工作中大家会经常遇到将数组转换为树形菜单(如菜单)或者将树形结构转...
    99+
    2023-09-18
    开发语言 php
  • oracle表中树形结构与分级查询
    1.此处以emp表为例 此表中 empno 字段与 mgr 字段存在 下级与上级关系 2从上往下查 最顶级的boss 此处的level是三大伪列之一 级别select level...
    99+
    2022-10-18
    oracle 表中 树形结构
  • Python数据结构__树
    树是一种非常重要的数据结构,它是非线性结构,它不是Python内置的数据结构;树:  1.非线性结构,每个元素可以有多个前驱和后继;  2.树是n(n>=0)个元素的集合    n=0时,称为空树;    树只有一个特殊的没有前驱的元...
    99+
    2023-01-31
    数据结构 Python
  • 数据结构(四):树
    树 概念:树是一些节点的集合,一棵树由称作根(root)的节点 r 以及0个或多个非空的(子)树组成,这些子树中每一棵的根都被来自根 r 的一条有向的边(edge)连接。每一棵子树的根叫做根 r 的儿子(child),r 是每一棵子树的根...
    99+
    2023-01-31
    数据结构
  • 树形结构查询
    提示:以下内容仅供参开 文章目录 前言一、需求场景二、数据库表三.实现方式1.方式1:2.方式2: 总结 前言 提示: 提示:以下是本篇文章正文内容,下面案例可供参考 一、需...
    99+
    2023-09-05
    mybatis java mysql
  • MySQL 树形索引结构 B树 B+树 - G
    MySQL 树形索引结构 B树 B+树   如何评估适合索引的数据结构 索引的本质是一种数据结构 内存只是临时存储,容量有限且容易丢失数据。因此我们需要将数据放在硬盘上。 在硬盘上进行查询时也就产生了硬盘的I/O操作,而硬盘的I...
    99+
    2021-08-06
    MySQL 树形索引结构 B树 B+树 - G
  • 【Java 数据结构】树和二叉树
    篮球哥温馨提示:编程的同时不要忘记锻炼哦! 一棵倒立过来的树.  目录 1、什么是树? 1.1 简单认识树  1.2 树的概念  1.3 树的表示形式 2、二叉树 2.1 二叉树的概念 2.2 特殊的二叉树...
    99+
    2023-09-17
    算法 数据结构
  • PHP数组转树结构以及树结构转数组的示例
    本文将为大家详细介绍“PHP数组转树结构以及树结构转数组的示例”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“PHP数组转树结构以及树结构转数组的示例”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体...
    99+
    2023-06-06
  • Python 数据结构 tree 树
    树节点类 TreeNode 作为最简单的树节点,我们只需要3个基本属性 name: 当前节点的名字(使用str来保存) parent: 父节点对象(对根节点来说,该值为Null) child: 字节点对象们(使用dict来保存...
    99+
    2023-01-31
    数据结构 Python tree
  • Linux目录树的结构
    本篇内容介绍了“Linux目录树的结构”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录树的主要部分有root(/)、/USR、/var、/...
    99+
    2023-06-13
  • JS实现树形结构与数组结构相互转换并在树形结构中查找对象
    总是有很多需求是关于处理树形结构的,所以不得不总结几个常见操作的写法。 首先假设有一个树形结构数据如下 var tree=[ { 'id': '1', 'name...
    99+
    2022-11-13
    JS 树形结构 数组结构 相互转换 查找对象
  • jQuery treeview树形结构应用
    本文实例为大家分享了jQuery treeview树形结构的应用代码,供大家参考,具体内容如下 继Bootstrap-treeview应用后,我又尝试了用jquery-treevie...
    99+
    2022-11-11
    jQuery treeview 树形结构
  • vue实现目录树结构
    本文实例为大家分享了vue实现目录树结构的具体代码,供大家参考,具体内容如下 效果图 代码 组件部分 components/leftTree.vue <template>...
    99+
    2022-11-13
    vue目录树结构 vue目录结构 vue树结构
  • MySQL查询树结构方式
    目录MySQL 查询树结构1. 关于树结构2. MySQL自定义函数的方式2.1 创建测试数据2.2 获取 某节点下所有子节点2.3 获取 某节点的所有父节点3. Oracle数据库...
    99+
    2022-11-12
    MySQL查询 MySQL树结构 查询树结构
  • 详解Java中的树结构
    这篇文章将为大家详细讲解有关详解Java中的树结构,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java...
    99+
    2023-06-14
  • 如何处理MySQL/Oracle邻接模型树形结构问题
    下文给大家带来关于如何处理MySQL/Oracle邻接模型树形结构问题,感兴趣的话就一起来看看这篇文章吧,相信看完如何处理MySQL/Oracle邻接模型树形结构问题对大家多少有点帮助吧。数据库对层次结构的...
    99+
    2022-10-18
    oracle mysql acle
  • MySQL-树型结构数据查询
    建表 SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure f...
    99+
    2023-09-03
    mysql 数据库 sql
  • Java数据结构学习之树
    目录一、树1.1 概念1.2 术语1.3 树的实现1.3.1 用数组来实现一棵树?1.3.2 用链表实现一棵树?1.3.3 树的转化1.4 二叉树1.4.1 二叉树的性质1.4.2 ...
    99+
    2022-11-12
    Java树 Java数据结构
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作