oracle 递归查询-个人总结
首先,建表: create table T_TEST_WORD( id NUMBER, pid VARCHAR2(20), name VARCHAR2(20)) 插入数据: insert into T_TEST_WORD (id, pid, name)values (1, '-1', '中国');insert into T_TEST_WORD (id, pid, name)values (2, '1', '江苏');insert into T_
首先,建表:
create table T_TEST_WORD ( id NUMBER, pid VARCHAR2(20), name VARCHAR2(20) )
插入数据:
insert into T_TEST_WORD (id, pid, name) values (1, '-1', '中国'); insert into T_TEST_WORD (id, pid, name) values (2, '1', '江苏'); insert into T_TEST_WORD (id, pid, name) values (3, '1', '浙江'); insert into T_TEST_WORD (id, pid, name) values (4, '2', '南京'); insert into T_TEST_WORD (id, pid, name) values (5, '2', '无锡'); insert into T_TEST_WORD (id, pid, name) values (6, '1', '安徽'); insert into T_TEST_WORD (id, pid, name) values (7, '4', '雨花台区'); insert into T_TEST_WORD (id, pid, name) values (8, '-1', '美国'); insert into T_TEST_WORD (id, pid, name) values (9, '-1', '俄罗斯'); commit;
查询下表中的数据:
表1
其中PID为-1的代表根节点。
开始进行递归查询:
查询结果如下:
表2
说明:
select ... from tablename(表名) where 条件1 start with 条件2 connect by 条件3 and 条件4 ...
看下这个语句(由根节点向子节点查询):
select t.* , level from T_TEST_WORD t start with pid='-1' connect by prior
id = pid(由根节点向子节点查询)
从T_TEST_WORD表中查询所有记录,从pid=-1的开始查询,且上一次查询记录的id作为本次查询的pid,以上表为例,举例如下:
第一次查询出pid=-1的记录是id为1的那条。
第二次查询时,查询pid=1的(上次查询记录的id是1)记录,可以查询到id为2的那条记录
第三次查询时,查询pid=2的(上次查询记录的id是2)记录,可以查询到id为4的那条记录,以此类推......
由上,查询到了表2的记录。
由树的根节点向子节点查询时,查询节点的顺序是按照树的前序遍历(DLR)进行的(1,2,4,7,5,3,6,8,9),如下图1
图1:
(比较丑的图,凑合看吧,嘻嘻)
注意:那个level要有start with ...... connect by ...... 才有效哦,不然会报错的。
再看这句(由子节点向根节点查询):
select t.* ,level from T_TEST_WORD t start with pid='2' connect by id = prior pid
从pid=2的开始(向上)查询,且上一次查询记录的pid作为本次查询的id
prior挨着谁,就将谁作为本次查询的某某关键字,比如connect by id = prior pid,就是将上次的pid作为本次查询的id。
注意,level是伪列,查询数据所对应的级,或者说深度吧。
小菜的总结,有问题请指出,谢谢咯!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

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

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Oracle 数据库日志的保留期限取决于日志类型和配置,包括:重做日志:由 "LOG_ARCHIVE_DEST" 参数配置的最大大小决定。归档重做日志:由 "DB_RECOVERY_FILE_DEST_SIZE" 参数配置的最大大小决定。在线重做日志:不归档,在数据库重启时丢失,保留期限与实例运行时间一致。审计日志:由 "AUDIT_TRAIL" 参数配置,默认保留 30 天。

Oracle 数据库启动顺序为:1. 检查前置条件;2. 启动监听器;3. 启动数据库实例;4. 等待数据库打开;5. 连接到数据库;6. 验证数据库状态;7. 启用服务(如果需要);8. 测试连接。

要在 Oracle 中查找字符出现的次数,执行以下步骤:获取字符串的总长度;获取字符所在子字符串的长度;计算字符出现的次数:用总长度减去子字符串长度。

Oracle 所需内存量取决于数据库大小、活动水平和所需性能水平:用于存储数据缓冲区、索引缓冲区、执行 SQL 语句和管理数据字典缓存。具体数量受数据库大小、活动水平和所需性能水平影响。最佳实践包括设置适当的 SGA 大小、调整 SGA 组件大小、使用 AMM 和监控内存使用情况。

Oracle 数据库服务器硬件配置要求:处理器:多核,主频至少 2.5 GHz,大型数据库建议 32 核以上。内存:小型数据库至少 8GB,中等规模 16-64GB,大型数据库或高负载工作负载高达 512GB 或更多。存储:SSD 或 NVMe 磁盘,RAID 阵列提高冗余和性能。网络:高速网络(10GbE 或更高),专用网卡,低延迟网络。其他:稳定电源、冗余组件、兼容操作系统和软件、散热和冷却系统。

要在 Oracle 中创建每天执行一次的定时任务,需要执行以下三个步骤:创建一个作业。为作业添加一个子作业,并设置其计划表达式为“INTERVAL 1 DAY”。启用作业。

Oracle 数据库所需内存量取决于数据库大小、工作负载类型和并发用户数量。通常建议:小型数据库:16-32 GB,中型数据库:32-64 GB,大型数据库:64 GB 或更多。其他需考虑因素包括数据库版本、内存优化选项、虚拟化和最佳实践(监视内存使用情况、调整分配)。

Oracle 可以通过以下步骤读取 dbf 文件:创建外部表,引用 dbf 文件;查询外部表,检索数据;将数据导入 Oracle 表。
