`
cljspn
  • 浏览: 47562 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
社区版块
存档分类
最新评论

树型数据结构SQL语句的写法

阅读更多
 

 在一个关系数据库中,可以表现分等级的信息。

建立的表结构如下:

CREATE TABLE employee (
emp_id          NUMBER (4) CONSTRAINT emp_pk PRIMARY KEY,
fname           VARCHAR2 (15) NOT NULL, 
lname           VARCHAR2 (15) NOT NULL, 
dept_id         NUMBER (2) NOT NULL,
manager_emp_id  NUMBER (4) CONSTRAINT emp_fk REFERENCES employee(emp_id),
salary          NUMBER (7,2) NOT NULL,
hire_date       DATE NOT NULL, 
job_id          NUMBER (3)
);

 

如果manager_emp_id 字段为空则表明这条记录为根结点。

简单的分级查询:

  1. 找出根结点,执行如下语句:
    SELECT emp_id, lname, dept_id, manager_emp_id, salary, hire_date 
    FROM employee 
    WHERE manager_emp_id IS NULL;
    
     
  2. 找出结点的父结点,本例中就是显示每个雇员的经理姓名,执行如下语句:
    SELECT e.lname "Employee", m.lname "Manager" 
    FROM employee e, employee m 
    WHERE e.manager_emp_id = m.emp_id;
    
     
  3. 找出所有的页节点,本例中就是找出所有的普通雇员,使用如下语句:
    SELECT emp_id, lname, dept_id, manager_emp_id, salary, hire_date 
    FROM employee e
    WHERE emp_id NOT IN 
    (SELECT manager_emp_id FROM employee 
    WHERE manager_emp_id IS NOT NULL);
  4. 能完成同样功能的语句如下:
  5.    SELECT emp_id, lname, dept_id, manager_emp_id, salary, hire_date 
                FROM employee e
                WHERE NOT EXISTS 
                (SELECT emp_id FROM employee e1 WHERE e.emp_id = e1.manager_emp_id);
    
     

         

复杂的查询:oralce提供对于Ansi Sql的一些扩展。

start with........connect by 子句

proir 操作符

level伪列

语法如下:

start with connection1 connect by connection2

start with connection1 指定根元素。能满足connection1认为是根元素。它可以包函子查询。

connect by connection2指定父行与子行的关系,connection2必须包函prior操作符,用来确定父行里的列,connection2不能包函子查询。

  1. 查找父结点与其子结点的结果,使用如下语句:
    SELECT lname, emp_id, manager_emp_id
    FROM employee
    START WITH manager_emp_id IS NULL
    CONNECT BY PRIOR emp_id = manager_emp_id
     
  2. level伪列--返回每行属于哪一层,使用如下语句:
    SELECT level, lname, emp_id, manager_emp_id
                FROM employee
                START WITH manager_emp_id IS NULL
                CONNECT BY manager_emp_id = PRIOR emp_id;
    
     
  3. 如何检查员工a是否可以管理员工b,由于a可能不是b的主管经理,所以我们不能直接通过manager_emp_id来判断,可以使用如下语句:
    SELECT emp_id, lname, dept_id, manager_emp_id, salary, hire_date 
                FROM employee
                WHERE lname = 'SMITH'
                START WITH lname = 'JONES'
                CONNECT BY manager_emp_id = PRIOR emp_id
     
  4. 列出员工及他管理的员工的工资总数:
    SELECT t2.lname, t2.salary,
                (SELECT SUM(t1.salary) FROM employee t1
                START WITH t1.lname = t2.lname
                CONNECT BY t1.manager_emp_id = PRIOR t1.emp_id) sum_salary
                FROM employee t2;
    
     

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    树型数据结构在铁路车站信号计算机联锁系统中的应用.pdf

    在探讨“树型数据结构在铁路车站信号计算机联锁系统中的应用”这一主题时,我们首先需要了解树型数据结构的基本概念以及在铁路车站信号系统中的应用场景。树型数据结构是一类非线性数据结构,它的每一个节点可以有两...

    树型数据结构在测井软件中的应用.pdf

    标题《树型数据结构在测井软件中的应用》表明了文章的主题是讨论在测井软件中应用树型数据结构。测井是指在石油勘探过程中,使用专业设备对地下岩石的物理和化学特性进行测量,并将数据记录下来以便于分析和解释。测...

    树型数据结构的探讨.pdf

    树型数据结构是一种在计算机科学中广泛使用的基本数据结构,它模拟了现实世界中的层次关系。树由节点组成,节点间存在分支,每个节点可以拥有零个或多个子节点。树型数据结构中的一个重要概念是“根节点”,它是整个...

    基于树型数据结构的双足机器人步行三维仿真.pdf

    标题《基于树型数据结构的双足机器人步行三维仿真》所涉及的知识点主要集中在机器人学、仿生技术以及三维仿真领域。 机器人学中的正运动学是机器人控制和仿真研究的一个重要分支,它主要是解决从机器人的关节角度到...

    树型数据结构中递归算法的实现.pdf

    树型数据结构是计算机科学中的一种基本数据结构,它以递归的方式模拟了自然界中树木的结构,以节点为基本元素构成,节点间具有明确的父子关系。在树型结构中,递归算法的应用广泛且重要,它通过函数自我调用的方式,...

    易语言树型数据类模块

    在易语言中,“树型数据类模块”是一种常见的数据结构实现,它模拟了自然界中的树状结构,常用于构建层级关系的数据模型。下面将详细解释这个模块的主要功能及其在编程中的应用。 1. **树型数据类模块**: 树型...

    JavaScript树型数据结构Baobab.zip

    Baobab 是一个 JavaScript 树型数据结构,支持游标。示例代码:var Baobab = require('baobab'); var tree = new Baobab({  palette: {  colors: ['yellow', 'purple'],  name: 'Glorious colors' ...

    易语言树型数据类模块源码

    "易语言树型数据类模块源码"是一个专注于易语言(EasyLanguage)编程环境下的数据结构实现,特别是树型结构。易语言是由王永涛先生创立的一种中文编程语言,旨在降低编程的难度,使更多的人能够参与到编程活动中来。...

    仙剑四里使用的树型数据结构实现PAL4Xml-master.zip

    仙剑四里使用的树型数据结构实现PAL4Xml-master.zip

    生成JSON树型表结构

    2. 构建树型数据:在后台处理中,可以通过SQL查询语句获取到层级关系的数据,然后将其转化为上述JSON格式。这通常涉及到递归操作,确保所有层级都被正确地表示出来。 3. 传递数据给EXT树:在前端,我们需要创建一个...

    使用冗余数据设计树型关系的数据结构.pdf

    由于提供的文件内容未能直接给出关于“使用冗余数据设计树型关系的数据结构”的具体知识点,而是包含了维普资讯的网址和资源达人分享计划的标签,我们无法从中提取到实际的文档内容用于生成知识点。不过,可以基于...

    易语言源码树型数据类模块源码.rar

    《易语言源码树型数据类模块源码》是一个针对初学者和专业开发者的资源,主要涉及易语言编程环境下的数据结构与算法实现。易语言是中国本土开发的一种面向对象的程序设计语言,以其简单易学的特点深受广大程序员喜爱...

    js做的树型结构javascript作的树型结构javascript作的树型结构

    js做的树型结构,应该是很好的,javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型...

    基于JDOM的XML技术用于“树型”数据结构的研究.pdf

    标题中的“基于JDOM的XML技术用于‘树型’数据结构的研究”表明本文将探讨如何利用JDOM这一Java处理XML的库来处理树型数据结构,并分析XML技术在该领域的应用及优势。 在描述中提到的“资源达人分享计划”可能是一...

    易语言树型数据类模块源码.zip

    "易语言树型数据类模块源码.zip" 是一个包含易语言编写的树型数据结构模块的源代码文件。这个压缩包可能包含了一个或多个易语言源文件,这些文件用于实现树型数据结构的功能,以便在程序中处理和存储层次化数据。 ...

    易语言树型数据类模块源码.zip易语言项目例子源码下载

    《易语言树型数据类模块源码》是一个适用于学习、毕业设计和小团队开发的项目实例,它提供了关于易语言中树型数据结构的操作和管理的详细实现。易语言是一种面向对象、简单易学的编程语言,其目标是降低编程门槛,让...

    XML技术用于存取“树型”数据结构.pdf

    标题《XML技术用于存取“树型”数据结构》已经直接指出了文档的核心主题,即利用XML技术来处理树型数据结构。树型数据结构是一种常用的数据结构,在计算机科学中广泛应用于各种场景,比如文件系统、组织架构、XML...

    网页树型结构快速加载大数据量数据的实现

    利用树型结构进行数据组织, 层次清晰、操作方便、用途广泛。介绍了一种基于 VS.NET 技术设计实现的大数据量树型结 构数据的快速加载方法, 通过一种改进的基于广度优先的算法, 将树型数据按照一定的层次和需要, 分散...

    在 Windows 或者 Linux 下设计一个二级(或者树型)结构文件系统

    在 Windows 或者 Linux 下设计一个二级(或者树型)结构文件系统,现虚拟文件系统的一般思路是调用系统的文件创建(如 c 中的 fopen 函数的w 方式即可)一个新文件,将此文件作为虚拟磁盘,在完成本设计要求的内容时...

    教你如何用java开发树型结构

    1. **树型数据结构**:首先,理解树的基本概念至关重要。每个节点包含一个值和指向其子节点的引用。根节点没有父节点,而叶子节点没有子节点。树的遍历主要有三种方式:前序遍历(根-左-右)、中序遍历(左-根-右)...

Global site tag (gtag.js) - Google Analytics