- 浏览: 1432057 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (363)
- oracle (43)
- 缓存策略 (4)
- 数据库设计 (7)
- IntelliJ IDEA (8)
- freemarker (3)
- JSP (12)
- java基础 (75)
- tomcat (14)
- 服务器 (10)
- maven (3)
- linux (21)
- e-learning (2)
- 手机开发 (1)
- 设计模式 (6)
- 技术之外 (2)
- 工具的使用 (8)
- HTML 5 (5)
- 网站前台 (38)
- 网站后台 (11)
- 项目管理 (12)
- 面试题 (5)
- 幽默 (0)
- 系统架构 (8)
- 创业 (10)
- div-css (5)
- 诗词歌赋 (1)
- 网络课堂组知识库 (4)
- 杂家 (3)
- android (12)
- 框架 (14)
- 读书笔记 (1)
- 孙子兵法 (1)
- mysql (3)
- 小人书 (0)
- Jquery (6)
- eclipse (2)
- 正则表达式 (1)
最新评论
-
a98709474:
写的很详细,看完了,明白了这种概念了
数据库水平切分(拆库拆表)的实现原理解析(转) -
a98709474:
MYSQL分库分表总结 -
CatchU:
7年前的招聘要求,厉害厉害
面试要求 -
luozhixiong:
<table class="bbcode&qu ...
MYSQL分库分表总结 -
沈寅麟:
好用
freemarker格式化
Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了。依托于该语法,我们可以将一个表形结构的中以树的顺序列出来。
PARENT_ID存储的是上级ID,如果是顶级父节点,该PARENT_ID为0
1. 查找树中的所有顶级父节点
2.查找一个节点的直属子节点(所有儿子)
3.查找一个节点的所有 直属子节点(所有后代)
4.查找一个节点的直属父节点(父亲)
5.查找一个节点的所有直属父节点(祖宗)
这里查找的就是ID为363的所有直属父节点,打个比方就是找到一个人的父亲、祖父等。但是值得注意的是这个查询出来的结果的顺序是先列出子类节点再列出父类节点,姑且认为是个倒序吧。
上面列出两个树型查询方式,第3条语句和第5条语句,这两条语句之间的区别在于prior关键字的位置不同,所以决定了查询的方式不同。
当parent_id=PRIOR ID时,数据库会根据当前的ID迭代出parent_id与该ID相同的记录,所以查询的结果是迭代出了所有的子类记录;而PRIOR ID=parent_id时,数据库会跟据当前的parent_id来迭代出与当前的parent_id相同的id的记录,所以查询出来的结果就是所有的父类结果。
以下是一系列针对树结构的更深层次的查询,这里的查询不一定是最优的查询方式,或许只是其中的一种实现而已。
6.查询一个节点的兄弟节点(亲兄弟)
7.名称要列出名称全部路径
11.列出当前节点的根节点
12.列出当前节点是否为叶子
create table SECURITY_RES_CATEGORY ( ID NUMBER(6) not null, NAME VARCHAR2(100), DESCRIPTION VARCHAR2(200), PARENT_ID NUMBER(6), APP_ID NUMBER(3), STATUS NUMBER(1) default 1 )
PARENT_ID存储的是上级ID,如果是顶级父节点,该PARENT_ID为0
引用
表中最好别有null记录,这会引起全文扫描,建议使用0代替
1. 查找树中的所有顶级父节点
select * from security_res_category where parent_id=0
2.查找一个节点的直属子节点(所有儿子)
select * from security_res_category where parent_id=361
3.查找一个节点的所有 直属子节点(所有后代)
select * from security_res_category where app_id=181 START WITH ID=361 CONNECT BY parent_id = PRIOR ID;
4.查找一个节点的直属父节点(父亲)
SELECT b.* FROM security_res_category a JOIN security_res_category b ON a.parent_id = b.ID WHERE a.ID = 261;
5.查找一个节点的所有直属父节点(祖宗)
SELECT * FROM security_res_category START WITH ID = 363 CONNECT BY PRIOR parent_id = ID;
这里查找的就是ID为363的所有直属父节点,打个比方就是找到一个人的父亲、祖父等。但是值得注意的是这个查询出来的结果的顺序是先列出子类节点再列出父类节点,姑且认为是个倒序吧。
上面列出两个树型查询方式,第3条语句和第5条语句,这两条语句之间的区别在于prior关键字的位置不同,所以决定了查询的方式不同。
当parent_id=PRIOR ID时,数据库会根据当前的ID迭代出parent_id与该ID相同的记录,所以查询的结果是迭代出了所有的子类记录;而PRIOR ID=parent_id时,数据库会跟据当前的parent_id来迭代出与当前的parent_id相同的id的记录,所以查询出来的结果就是所有的父类结果。
以下是一系列针对树结构的更深层次的查询,这里的查询不一定是最优的查询方式,或许只是其中的一种实现而已。
6.查询一个节点的兄弟节点(亲兄弟)
select * from security_res_category where parent_id= (select parent_id from security_res_category where id=363)
7.名称要列出名称全部路径
SELECT SYS_CONNECT_BY_PATH (mc, '/') FROM security_res_category WHERE ID = 6498 START WITH parent_id=0 CONNECT BY parent_id = PRIOR ID
11.列出当前节点的根节点
SELECT CONNECT_BY_ROOT name, security_res_category.* FROM security_res_category where id=363 START WITH parent_id=0 CONNECT BY PRIOR id = parent_id;
12.列出当前节点是否为叶子
SELECT CONNECT_BY_ISLEAF, security_res_category.* FROM security_res_category where id=963 START WITH parent_id=0 CONNECT BY parent_id = PRIOR ID;
发表评论
-
一对多关系中,查没儿子的记录语句
2014-09-04 12:05 983SELECT B.* FROM tbl_mall_orde ... -
关于数据库反向索引
2014-03-24 14:24 1060反向索引与平时的常用索引不同的是,它将要增加索引的列的数据按字 ... -
常用SQL
2013-05-07 11:29 1224select to_date('2013-04-17 13:2 ... -
oracle重建索引
2012-10-20 17:39 1073alter index SYS_C0010453 rebu ... -
数据库无法启动问题
2012-09-12 09:55 1154登录数据库时提示:ORA-12514: TNS: 监听程序当前 ... -
group + decode
2012-09-07 16:07 990SELECT G.PO_ID, G.PROD_ ... -
两个日期相差几天
2012-09-05 22:33 1191SELECT trunc(sysdate-TO_date('2 ... -
复制一行记录 insert into select
2012-09-04 16:38 1357insert into tb_sys_menu (men ... -
父游标、子游标及共享游标
2012-07-20 09:26 1270游标是数据库领域较为 ... -
最好的分页
2012-07-19 23:00 982select t2.prod_id, t2.prod_name ... -
Druid 德鲁依
2012-03-21 14:22 1080Druid是一个JDBC组件,它包括三部分: DruidD ... -
ORACLE user_objects 表
2012-03-09 13:36 69091. OBJECT_TYPE select distinct( ... -
oracle net manager
2011-12-03 08:25 976url="jdbc:oracle:thin:@192 ... -
数据库视图的优点
2011-11-22 13:06 1190限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽创建视 ... -
悲观锁与乐观锁
2011-10-18 14:05 989... -
pl /sql导入表结构或者数据
2011-09-22 14:03 1378导出表结构: Tools-->Export User ... -
查询重复记录
2011-09-21 12:06 551select * from order_ticket ot W ... -
数据库有哪些缓存策略?
2011-09-01 15:03 19221:Query Cache 以SQL作为key值缓存查询 ... -
Oracle instr函数
2011-08-24 15:49 1162在Oracle中,可以使用instr函数对某个字符串进行判断, ... -
ORACLE的sign函数 和 DECODE函数
2011-08-24 15:00 42451:比较大小函数 SIGN sign()函数根据某个值是0 ...
相关推荐
Oracle树查询是数据库管理中一种非常实用的技术,它允许我们处理具有层级关系的数据。在Oracle中,树查询主要依赖于`SELECT...START WITH...CONNECT BY...PRIOR`语法,这个语法让我们能够按照层级结构遍历数据。本文...
Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...
Oracle 递归函数是一种特殊的PL/SQL函数,可以用于解决复杂的树形结构查询问题。递归函数可以自我调用,以便遍历树形结构的每个节点,直到达到停止条件。 在 Oracle 中,递归函数的定义语法如下所示: ```sql ...
Oracle 数据库在处理树形数据结构时,提供了一种强大的查询方法,即 `SELECT...START WITH...CONNECT BY...PRIOR` 语法。这种查询模式允许我们以递归方式遍历和检索具有层级关系的数据,例如组织结构、产品分类或者...
Oracle树查询是数据库管理中处理层次结构数据的重要技术,它主要依赖于`SELECT...START WITH...CONNECT BY...PRIOR`的语法。这个语法允许我们按照树的结构来组织和检索数据,尤其适用于表示组织结构、目录层级或者...
Oracle支持B树索引、位图索引、函数索引等多种类型。选择合适的索引类型,结合索引覆盖(covering index)和复合索引(composite index)策略,能有效提升查询效率。同时,定期进行索引分析和维护,如重建和合并索引...
4. 索引策略:正确使用B树索引、位图索引、函数索引等,能够显著提升查询速度。注意,过多的索引反而会降低写入性能。 5. 表和索引的统计信息:定期收集和更新统计信息,帮助优化器做出更准确的决策。 二、Oracle...
以上内容基于Oracle API及常用函数,结合可能的“Oracle九阴真经”概念,为学习和理解Oracle数据库提供了丰富的资料。通过这两个CHM文件,开发者和DBA可以深入理解Oracle的各种功能,并在实际工作中有效地应用它们。
oracle语句非常强大,支持各种函数的查询,解决实际复杂的业务逻辑问题,比如:对一个表的父子查询,迭代查询等,这篇文档教你很快掌握oracle的树形结构查询,欢迎下载!
这个压缩包文件"Oracle基本语句和基本函数.doc"显然包含了关于Oracle数据库操作的基础知识,包括SQL语句和内置函数的使用。 一、Oracle SQL基本语句 1. 数据查询:SQL的SELECT语句用于从数据库中检索数据,例如`...
Oracle SQL查询和SQL函数是数据库管理员、开发人员以及数据分析者在处理Oracle数据库时不可或缺的工具。这份手册详尽地介绍了如何有效地使用SQL语言来查询、分析和操作数据,旨在提供全面且实用的知识点。 1. **SQL...
### 提高Oracle数据库的查询统计速度 在现代企业级应用中,Oracle数据库因其稳定性和强大的功能而被广泛采用。然而,在处理大量数据时,如何优化查询统计速度成为了提高整体系统性能的关键因素之一。本文将围绕如何...
本资料包`( oracle+110个常用函数.zip )`聚焦于Oracle数据库中的110个常用函数,旨在帮助用户更好地理解和运用这些函数来解决实际问题。以下是关于Oracle常用函数的一些关键知识点: 1. **字符串处理函数**: - `...
Oracle数据库作为一款广泛使用的数据库管理系统,在进行数据处理与分析时提供了丰富的内置函数,这些函数可以极大地简化SQL查询的编写工作,并提高查询效率。本文将根据给定的内容对Oracle数据库中的一些重要SQL函数...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,它提供了丰富的SQL命令和内置函数,用于数据管理、查询、更新和分析。以下是对标题和描述中提到的一些关键知识点的详细解释: 1. **Oracle常用命令**: - ...
选择合适的索引类型(如B树、位图或函数索引)至关重要。 4. **绑定变量**:使用绑定变量可以避免SQL硬解析,提高SQL语句的复用性,减少系统资源的消耗。 5. **提示(Hints)**:在SQL查询中添加提示可以指导优化器...
第5~12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法。这部分知识常用于对一些复杂需求的实现及优化改写。最后两章介绍日常的优化改写案例。这部分是前面所学知识的扩展应用。, 如果您是开发...
正确选择索引类型(如B树、位图、函数索引等),并合理创建复合索引,可以减少全表扫描,提高查询速度。 - **执行计划分析**:理解SQL的执行计划,包括表的访问方式、连接顺序和排序操作,可以帮助识别性能瓶颈并...
本压缩包文件"oracle常用函数.rar"包含了一些关于Oracle数据库的重要知识点,主要包括“connect by”用法、SQL优化以及分页查询的方法。下面我们将逐一探讨这些主题。 首先,`CONNECT BY`是Oracle SQL中用于构建...