学习SQL日记(六)

①ORACLE 层次查询 --(递归语句)--(查询树状结构)

  select × from  table

  start with table.col1 = ‘001‘ --根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。

  onnect by proir col1 = parent_id   ---上一条语句中的col1 = 本条记录的parent_id

扫描树结构表时,需要依此访问树结构的每个节点,一个节点只能访问一次,其访问的步骤如下:
     第一步:从根节点开始;
     第二步:访问该节点;
     第三步:判断该节点有无未被访问的子节点,若有,则转向它最左侧的未被访问的子节,并执行第二步,否则执行第四步;
     第四步:若该节点为根节点,则访问完毕,否则执行第五步;
     第五步:返回到该节点的父节点,并执行第三步骤。

总之:扫描整个树结构的过程也即是中序遍历树的过程

时间: 2024-11-01 12:22:15

学习SQL日记(六)的相关文章

学习SQL日记(一)

写一下总结吧 总是学了就忘. 11.01 重新学习SQL -------Oracle #1. column format 通过使用COLUMN命令  可以控制查询结果集中列的显示格式. 语法格式:column[column_name  alias option] column_name参数用于指定将要控制的列的名称 alias 参数用于指定列的别名 option参数用于指定某个列的显示格式 option选项的部分取值及意义 clear 清除为该列设置的显示属性,使其使用默认的显示属性 color

学习SQL日记(五)

①where 子句里面根据传入参数 决定使用哪一个条件 SQL> select 1 from dual where decode(1,1,1,0)=1; SQL> select 1 from dual where (case when 1=1 then 1 else 0 end) = 1;

学习SQL日记(七)

Ⅰ.在存储过程中使用游标 ①声明游标 CURSOR CUR_EMP IS SELECT * FROM EMP ; ②打开游标 ③循环取数 ④设置退出条件 ⑤关闭循环 ⑥关闭游标 CREATE OR REPLACE PROCEDURE PRO_EMP_TEST IS EMP_T EMP%ROWTYPE; CURSOR CUR_EMP IS SELECT * FROM EMP ; BEGIN OPEN CUR_EMP; LOOP FETCH CUR_EMP INTO EMP_T ; EXIT WHE

学习SQL日记(八)--ORACLE CASE WHEN

Ⅰ. ORACLE  WHERE 字句里面使用CASE WHEN 25行 Ⅱ.  嵌套使用 CASE WHEN  2~13行 1 SELECT 2 SUM(CASE WHEN M.MV_AVG < 800 AND C.THICKNESS >= 0.5 AND C.THICKNESS <= 0.9 THEN (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END ) END ) R1CD

学习SQL日记(二)

#1. 查询语句中使用函数 @1. round(d1,d2)  用于数字的四舍五入 d1表示数字 d2表示小数点后的位数 (d2不写 默认为零) @2. trunc(d1,d2) 截取  去尾法 @3. 日期函数 sysdate select sysdate from dual; ----获取系统当前时间 @4. 日期数据相减,得到两个日期之间的天数差 不足一天用小数表示 @5.months_between(d1,d2)  得到d1 ,d2两个日期数据之间所差的月份 小数表示 @6.计算d2个月

学习SQL日记(三)

#1. 系统日期 .时间函数 ^1.SELECT TO_CHAR (SYSDATE ,'YYYY-MM-DD HH24:MI:SS') FROM DUAL -- 查询系统当前日期 ^2.SELECT SYSTIMESTAMP FROM DUAL --查询带时区的系统日期 ^3.SELECT DBTIMEZONE FROM DUAL --查询当前时区 SELECT SESSIONTIMEZONE FROM DUAL--查询当前会话的时区 ^4.SELECT TO_CHAR(ADD_MONTHS(T

学习SQL日记(九)--ORACLE 创建函数

Ⅰ.创建函数 Ⅱ.截取字符串函数 : REGEXP_SUBSTR 1 CREATE OR REPLACE FUNCTION GET_NUM(GALV_COOT VARCHAR2) RETURN NUMBER IS 2 RESULT NUMBER; 3 BEGIN 4 RESULT := TO_NUMBER(REGEXP_SUBSTR(GALV_COOT , '\d{2,3}')); --取字符串里最少两位 最多三位 的数字 5 IF RESULT IS NULL 6 THEN RETURN 0

学习SQL日记(四)

问题① PRODCOILS表里有10000条数据 左连接 另一个表 temp (40000条数据) 得出结果40000条数据  不用想了 40000条里有大量重复数据 为什么有 重复数据  :temp 是 查询结果集  coils 表 连接 steel_grade 用的不是主键 - -! 造成数据重复  使用distinct就能解决

我的MYSQL学习心得(六)

我的MYSQL学习心得(六) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数 数学函数 1.求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,他返回除法运算后的精确余数 SELECT MOD(31,8) 2.四舍五入函数TR