楼主: yellowlee

[原创] 总结笔记之【开发篇sql】

[复制链接]
论坛徽章:
26
2011新春纪念徽章
日期:2011-02-18 11:43:34马上有房
日期:2014-02-18 16:42:02问答徽章
日期:2014-04-14 17:58:34马上有车
日期:2014-10-11 12:20:37马上有钱
日期:2014-11-17 11:02:102015年新春福章
日期:2015-03-04 14:51:122015年新春福章
日期:2015-03-06 11:57:31暖羊羊
日期:2015-05-19 13:53:31暖羊羊
日期:2015-06-17 17:19:26暖羊羊
日期:2015-07-07 11:02:48
21#
发表于 2010-6-1 08:21 | 只看该作者
Thank you!

使用道具 举报

回复
论坛徽章:
87
2015年新春福章
日期:2015-03-06 11:58:182010广州亚运会纪念徽章:轮滑
日期:2010-09-23 17:19:212010年世界杯参赛球队:乌拉圭
日期:2010-07-14 17:54:242010年世界杯参赛球队:美国
日期:2010-06-30 13:13:582010年世界杯参赛球队:墨西哥
日期:2010-06-25 12:49:452010年世界杯参赛球队:墨西哥
日期:2010-04-05 10:23:502010新春纪念徽章
日期:2010-03-01 11:06:232010新春纪念徽章
日期:2010-01-04 08:33:08生肖徽章2007版:龙
日期:2009-11-12 16:31:13参与WIN7挑战赛纪念
日期:2009-11-09 11:50:09
22#
发表于 2010-6-1 09:25 | 只看该作者
呵呵
学习中.....

使用道具 举报

回复
论坛徽章:
32
奥运会纪念徽章:摔跤
日期:2012-08-23 11:03:05青年奥林匹克运动会-击剑
日期:2014-09-19 10:58:152014年世界杯参赛球队:巴西
日期:2014-07-07 12:19:232014年世界杯参赛球队: 瑞士
日期:2014-05-19 12:18:36马上有钱
日期:2014-04-08 12:12:232014年新春福章
日期:2014-04-04 14:20:47马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09红旗
日期:2014-02-14 15:15:55优秀写手
日期:2013-12-18 09:29:16
23#
 楼主| 发表于 2010-6-1 10:49 | 只看该作者
原帖由 〇〇 于 2010-6-1 07:46 发表
黄鹂如果用宋体有更好的显示效果

只顾自己爽了,我自己的pc屏幕有点大。。。晚上回去改改

使用道具 举报

回复
论坛徽章:
0
24#
发表于 2010-6-1 13:42 | 只看该作者
这个真不错,下来学习了

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
3
2010年世界杯参赛球队:南非
日期:2010-01-19 10:37:172010新春纪念徽章
日期:2010-03-01 11:20:51ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26
25#
发表于 2010-6-1 15:42 | 只看该作者
下来学习一下

使用道具 举报

回复
论坛徽章:
32
奥运会纪念徽章:摔跤
日期:2012-08-23 11:03:05青年奥林匹克运动会-击剑
日期:2014-09-19 10:58:152014年世界杯参赛球队:巴西
日期:2014-07-07 12:19:232014年世界杯参赛球队: 瑞士
日期:2014-05-19 12:18:36马上有钱
日期:2014-04-08 12:12:232014年新春福章
日期:2014-04-04 14:20:47马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09红旗
日期:2014-02-14 15:15:55优秀写手
日期:2013-12-18 09:29:16
26#
 楼主| 发表于 2010-6-1 16:44 | 只看该作者
欢迎指出问题,可以加我qq或者发邮件,有些地方需要改善和修改,目前正在收集建议。。多谢的大家的支持。

使用道具 举报

回复
论坛徽章:
0
27#
发表于 2010-6-1 18:02 | 只看该作者
顶起来 啥玩意 看不懂 学习一下

使用道具 举报

回复
论坛徽章:
32
奥运会纪念徽章:摔跤
日期:2012-08-23 11:03:05青年奥林匹克运动会-击剑
日期:2014-09-19 10:58:152014年世界杯参赛球队:巴西
日期:2014-07-07 12:19:232014年世界杯参赛球队: 瑞士
日期:2014-05-19 12:18:36马上有钱
日期:2014-04-08 12:12:232014年新春福章
日期:2014-04-04 14:20:47马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09红旗
日期:2014-02-14 15:15:55优秀写手
日期:2013-12-18 09:29:16
28#
 楼主| 发表于 2010-6-1 20:16 | 只看该作者

还有部分层次查询的,也是内容比较少,也放上来吧

1,层次查询的伪列
Connect_by_iscycle
当前节点(行)的孩子节点(行)也是其父节点(行),则为1,否则为0
Connect_by_isleaf
如果是叶子节点,则输出为1,否则为0
Level
当前节点(行)的层号

用一个例子来直观的看看上述三个伪列的作用:
SQL> select ename,
  2         connect_by_isleaf isleaf,
  3         connect_by_iscycle iscycle,
  4         level lvl,
  5         sys_connect_by_path(ename, '/') path
  6    from scott.emp a
  7   start with empno = 7902
  8  connect by nocycle prior empno = mgr;

ENAME          ISLEAF    ISCYCLE        LVL
---------- ---------- ---------- ----------
PATH
--------------------------------------------------------------------------------
FORD                0          0          1
/FORD

SMITH               1          0          2
/FORD/SMITH


2,层次查询
稍稍修改一下上述查询:
SQL> select ename,
  2         connect_by_isleaf isleaf,
  3         level lvl,
  4         sys_connect_by_path(ename, '/') path
  5    from scott.emp a start with ename = 'KING'
  6  connect by nocycle  prior empno  = mgr  ;

ENAME          ISLEAF        LVL
---------- ---------- ----------
PATH
--------------------------------------------------------------------------------
KING                0          1
/KING

JONES               0          2
/KING/JONES

SCOTT               0          3
/KING/JONES/SCOTT


ENAME          ISLEAF        LVL
---------- ---------- ----------
PATH
--------------------------------------------------------------------------------
ADAMS               1          4
/KING/JONES/SCOTT/ADAMS

FORD                0          3
/KING/JONES/FORD

SMITH               1          4
/KING/JONES/FORD/SMITH


ENAME          ISLEAF        LVL
---------- ---------- ----------
PATH
--------------------------------------------------------------------------------
BLAKE               0          2
/KING/BLAKE

ALLEN               1          3
/KING/BLAKE/ALLEN

WARD                1          3
/KING/BLAKE/WARD


ENAME          ISLEAF        LVL
---------- ---------- ----------
PATH
--------------------------------------------------------------------------------
MARTIN              1          3
/KING/BLAKE/MARTIN

TURNER              1          3
/KING/BLAKE/TURNER

JAMES               1          3
/KING/BLAKE/JAMES


ENAME          ISLEAF        LVL
---------- ---------- ----------
PATH
--------------------------------------------------------------------------------
CLARK               0          2
/KING/CLARK

update              1          3
/KING/CLARK/update


14 rows selected.

SQL> select ename,job,
  2         connect_by_isleaf isleaf,
  3         level lvl,
  4         sys_connect_by_path(ename, '/') path
  5    from scott.emp a start with ename = 'SMITH'
  6  connect by nocycle   empno  = prior mgr order by ename ,lvl ;

ENAME      JOB           ISLEAF        LVL
---------- --------- ---------- ----------
PATH
--------------------------------------------------------------------------------
FORD       ANALYST            0          2
/SMITH/FORD

JONES      MANAGER            0          3
/SMITH/FORD/JONES

KING       PRESIDENT          1          4
/SMITH/FORD/JONES/KING


ENAME      JOB           ISLEAF        LVL
---------- --------- ---------- ----------
PATH
--------------------------------------------------------------------------------
SMITH      CLERK              0          1
/SMITH

上述2个查询均使用sys_connect_by_path,不同是prior的位置不同,前一个是从ename为KING开始,遍历mgr为KING或者间接的mgr为KING的所有路径,直到叶子节点。后面一个是从SMITH开始的所有SMITH的上司的路径,可以看出2者走的路径刚好相反。

修改上述2个查询,再来看看connect_by_root()
SQL> select ename,job,
  2         connect_by_isleaf isleaf,
  3         level lvl,
  4         connect_by_root(ename) root
  5    from scott.emp a start with ename = 'SMITH'
  6  connect by nocycle   empno  = prior mgr order by ename ,lvl ;

ENAME      JOB           ISLEAF        LVL ROOT
---------- --------- ---------- ---------- ----------
FORD       ANALYST            0          2 SMITH
JONES      MANAGER            0          3 SMITH
KING       PRESIDENT          1          4 SMITH
SMITH      CLERK              0          1 SMITH

SQL> select ename,
  2         connect_by_isleaf isleaf,
  3         level lvl,
  4         connect_by_root(ename) root
  5    from scott.emp a start with ename = 'KING'
  6  connect by nocycle  prior empno  = mgr  ;

ENAME          ISLEAF        LVL ROOT
---------- ---------- ---------- ----------
KING                0          1 KING
JONES               0          2 KING
SCOTT               0          3 KING
ADAMS               1          4 KING
FORD                0          3 KING
SMITH               1          4 KING
BLAKE               0          2 KING
ALLEN               1          3 KING
WARD                1          3 KING
MARTIN              1          3 KING
TURNER              1          3 KING

ENAME          ISLEAF        LVL ROOT
---------- ---------- ---------- ----------
JAMES               1          3 KING
CLARK               0          2 KING
update              1          3 KING

14 rows selected.

显然只是给出了root,而不是path。
通常需要获得层次关系,层号,或者路径等问题可以通过oracle提供的层次查询语法和相应的伪列来解决。

使用道具 举报

回复
论坛徽章:
0
29#
发表于 2010-6-1 21:00 | 只看该作者
楼主是人才,鉴定完毕!

使用道具 举报

回复
论坛徽章:
32
奥运会纪念徽章:摔跤
日期:2012-08-23 11:03:05青年奥林匹克运动会-击剑
日期:2014-09-19 10:58:152014年世界杯参赛球队:巴西
日期:2014-07-07 12:19:232014年世界杯参赛球队: 瑞士
日期:2014-05-19 12:18:36马上有钱
日期:2014-04-08 12:12:232014年新春福章
日期:2014-04-04 14:20:47马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09红旗
日期:2014-02-14 15:15:55优秀写手
日期:2013-12-18 09:29:16
30#
 楼主| 发表于 2010-6-1 22:54 | 只看该作者
原帖由 chaoxx 于 2010-6-1 21:00 发表
楼主是人才,鉴定完毕!


这。。怎么听着这么熟悉,一般好像不是说人才,是说2个字母的。。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表