本篇文章给大家带来了关于Oracle的相关知识,主要介绍了一文解析ORACLE树结构查询,文章围绕主题展开详细的内容戒杀,下面一起来看一下,希望对大家有帮助。
推荐教程:《Oracle视频教程》
我们在日常程序设计中,经常会遇到树状结构的表示,例如组织机构、行政区划等等。这些在数据库中往往通过一张表进行展示。这里我们以一张简单的行政区划表为例进行展示,在实际使用过程中,可以为其添加其他描述字段以及层级。
表中通过ID和PID关联,实现树状结构的存储。建表以及数据语句如下:
-- Create table create table TREETEST ( id NVARCHAR2(50), pid NVARCHAR2(50), name NVARCHAR2(50) )
insert into TREETEST (ID, PID, NAME) values ('1', null, '山东省'); insert into TREETEST (ID, PID, NAME) values ('2', '1', '青岛市'); insert into TREETEST (ID, PID, NAME) values ('3', '1', '烟台市'); insert into TREETEST (ID, PID, NAME) values ('4', null, '河南省'); insert into TREETEST (ID, PID, NAME) values ('5', null, '河北省'); insert into TREETEST (ID, PID, NAME) values ('6', '2', '市南区'); insert into TREETEST (ID, PID, NAME) values ('7', '2', '市北区'); insert into TREETEST (ID, PID, NAME) values ('8', '2', '即墨市');
那对于树状结构如何查询呢?Oracle提供递归查询的方式进行查询,基本语法如下:
SELECT [Column]….. FEOM [Table] WHERE Conditional1 START WITH Conditional2 CONNECT BY PRIOR Conditional3 ORDER BY [Column]
说明:
- 条件1---过滤条件,对全部返回的记录进行过滤。
- 条件2---根节点的限定条件,固然也可以放宽权限得到多个根节点,也就是获取多个树
- 条件3---链接条件,目的就是给出父子之间的关系是什么,根据这个关系进行递归查询(在上述表中就是ID=PID)
- 排序---对全部返回记录进行排序
下面我们结合具体实例来看:
1、查询山东省下面的所有子节点
SELECT * FROM TREETEST t START WITH t.PID=1 CONNECT BY PRIOR t.ID = t.PID
其中ID为1的为山东省节点,查询结果如下:
2、查询青岛市的下一级子节点(注意和上面区分,全部子节点和下一级子节点)
3、如果需要获取将山东省青岛市等连接起来显示,可以使用SYS_CONNECT_BY_PATH来实现
SELECT t.ID, SYS_CONNECT_BY_PATH(t.NAME, '\') AS INDU_NAME FROM TREETEST t START WITH t.PID IS NULL CONNECT BY PRIOR t.ID = t.PID
查询结果如下:
4、同理,也可以从下往上进行查询
SELECT * FROM TREETEST t START WITH t.ID=8 CONNECT BY t.ID = PRIOR t.PID
推荐教程:《Oracle视频教程》
以上是一文解析ORACLE树结构查询的详细内容。更多信息请关注PHP中文网其他相关文章!

方法:1、利用“select*from user_indexes where table_name=表名”语句查询表中索引;2、利用“select*from all_indexes where table_name=表名”语句查询所有索引。

oracle asm指的是“自动存储管理”,是一种卷管理器,可自动管理磁盘组并提供有效的数据冗余功能;它是做为单独的Oracle实例实施和部署。asm的优势:1、配置简单、可最大化推动数据库合并的存储资源利用;2、支持BIGFILE文件等。

在Oracle中,可利用lsnrctl命令查询端口号,该命令是Oracle的监听命令;在启动、关闭或重启oracle监听器之前可使用该命令检查oracle监听器的状态,语法为“lsnrctl status”,结果PORT后的内容就是端口号。

在oracle中,可以利用“TO_SINGLE_BYTE(String)”将全角转换为半角;“TO_SINGLE_BYTE”函数可以将参数中所有多字节字符都替换为等价的单字节字符,只有当数据库字符集同时包含多字节和单字节字符的时候有效。

方法:1、利用“LOWER(字段值)”将字段转为小写,或者利用“UPPER(字段值)”将字段转为大写;2、利用“REGEXP_LIKE(字符串,正则表达式,'i')”,当参数设置为“i”时,说明进行匹配不区分大小写。

在oracle中,可以利用“drop sequence sequence名”来删除sequence;sequence是自动增加数字序列的意思,也就是序列号,序列号自动增加不能重置,因此需要利用drop sequence语句来删除序列。

在oracle中,可以利用“select ... From all_tab_columns where table_name=upper('表名') AND owner=upper('数据库登录用户名');”语句查询数据库表的数据类型。

方法:1、利用“alter system set sessions=修改后的数值 scope=spfile”语句修改session参数;2、修改参数之后利用“shutdown immediate – startup”语句重启服务器即可生效。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3汉化版
中文版,非常好用

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能