LZ你好
创新互联公司专注于盱眙企业网站建设,成都响应式网站建设公司,商城网站建设。盱眙网站建设公司,为盱眙等地区提供建站服务。全流程按需开发网站,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
这个rpad是右边填充的意思,但是填充的是
但这个RPAD( ' ', 2*(LEVEL-1), '-' )意思是在空格右侧填充2*(LEVEL-1)个长度的横杠,这个你理解的好像没问题
level开始是从start with开始算起的,你这里就是START WITH UPPERDEPID IS NULL,因为根据父ID,你这个为空的就是最顶层,这个你也可以改成
START WITH UPPERDEPID =0 看下效果
树形结构的意思,我简单给你说一下
家里有爷爷,爷爷有两个儿子,每个儿子又有两个儿子
那么画图出来就是这样
CONNECT_BY_ROOT 从你start with的开始算起,最顶端结点就是总经办,这个你看下查询结果就能看出来
CONNECT_BY_ISLEAF 如果下边还有子节点,就为0,无子节点了就是1,按照我给你发的图,也就是四个孙子下边都没节点了,他们最后都显示1,上边爷爷和儿子都显示0
level,就是爷爷是最顶端,为1,依次类推
给你举例子的图画的难看了点哈,见笑了
晕,你补充了好多啊,你先看吧,哪不懂你再问,我再给你解释
最常用的有rownum和rowid
ROWNUM伪列是Oracle首先进行查询获取到结果集之后在加上去的一个伪列,这个伪列对符合条件的结果添加一个从1开始的序列号
ROWID是一种数据类型,它使用基于64为编码的18个字符来唯一标识一条记录物理位置的一个ID,类似于Java中一个对象的哈希码,都是为了唯一标识对应对象的物理位置,需要注意的是ROWID虽然可以在表中进行查询,但是其值并未存储在表中,所以不支持增删改操作
比如,oracle常用分页方法:SELECT * FROM (SELECT ROWNUM nums,emp.* FROM emp) WHERE nums 5 AND nums = 10;
select *
from (select tab.*, rownum as rk from tab order by 单价 desc) t
where rk between 6 and 10
伪列:数据库没有实际保存的列。
例如,rownum。 就是行号。你可以在任何一个talbe,view,或者select中查到这个列,但是,这个列不存在任何的物理的存储。
另外的例子: level , rowid 都是伪列
普通的列,是实际有存储的,在物理存储上就有这个数据。伪列就没有,是算出来的。可以认为是一种特殊的函数。
Oracle基础知识:伪列rownum,伪列就像表中的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改操作。
在查询的结果集中,ROWNUM为结果集中每一行标识一个行号,第一行返回1,第二行返回2,以此类推。通过ROWNUM伪列可以限制查询结果集中返回的行数。ROWNUM与ROWID不同,ROWID是插入记录时生成,ROWNUM是查询数据时生成。ROWID标识的是行的物理地址。ROWNUM标识的是查询结果中的行的次序。