亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Oracle高級查詢

  • ?? ??? ??? ??? ? 案例一:分頁查詢顯示員工信息:顯示員工號,姓名,月薪

    ?? ??? ??? ??? ??? ?--每頁顯示四條記錄

    ?? ??? ??? ??? ??? ?--顯示第二頁的員工

    ?? ??? ??? ??? ??? ?--按照月薪降序排列

    ?? ??? ??? ??? ??? ?select empno,ename,sal from emp order by sal desc;

    ?? ??? ??? ??? ??? ?--rownum 行號(永遠從1開始,所以不能使用>,>=),只能使用<,<=,不能使用>,>=

    spacer.gif

    spacer.gif

    ?? ??? ?? ?--r是e2表的第一列,不是偽列行號的值;e1表rownum行號與e2表rownum字段重名,e2表 rownum并不是真正意義上的行號,所以e2表的rownum字段可以使用 >= 5


    查看全部
    1 采集 收起 來源:案例1

    2021-01-23

  • 相關子查詢:將主查詢中的值作為參數傳遞給子查詢

    ????例:找到員工表中薪水大于本部門平均薪水的員工

    ???? 1、? select empno,ename,sal,c.avgsal

    ????????????from emp e?

    ????????????????where sal> (select avg(sal) from emp where deptno=e.deptno) c;

    2、

    ????????????select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal

    ????????????????????from emp e?

    ????????????????????????where sal> (select avg(sal) from emp where deptno=e.deptno);


    查看全部
  • ?? ??? ?(3)可以使用子查詢的位置:where,select,having,from :

    ?? ??? ??? ??? ??? ?where后面的子查詢中不能有分組函數

    ?? ??? ??? ??? ??? ?having后面的子查詢中可以有分組函數

    ?? ??? ??? ??? ??? ?select后面的子查詢得到的結果必須是單條記錄

    ?? ??? ??? ??? ??? ?from后面的子查詢是把子查詢的內容當作一個新表


    查看全部
  • ?? ??? ??? ??? ?層次查詢

    ??? ??? ??? ?自連接存在的問題:

    ?? ??? ??? ?(1)自連接不適合操作大表,也就是記錄多的表,原因是自連接至少有兩張表參與,并進行笛卡爾全集,連接之后的記錄數就是單張表記錄數的平方(笛卡爾積行數是兩張表行數的乘積),如果有三張表記錄數就是原來的三次方,如果原來的表包含的記錄數過多,連接之后的結果就會很大,所以自連接不適合操作大表。解決辦法:層次查詢。注意層次查詢是單表查詢,不存在第二張表!因為只有在一張表的情況下才不會產生笛卡爾積,才能解決這個問題。

    ?? ??? ??? ?層次查詢在某些情況下可以替代自連接,本質上是單表查詢。

    ?? ??? ??? ?例: select empno,ename,sal,mgr from emp

    ?? ??? ??? ??? ??? ??? ??? ??? ? //層次查詢只涉及一張表

    ?? ??? ??? ??? ??? ??? ?connect by prior empno=mgr

    ?? ??? ??? ??? ??? ??? ??? ??? ?//層次查詢的條件不用where表示,而用connect by表示上下層關系,上一層的員工號=當前這層的老板號,關鍵字prior表示相鄰兩層中的上一層。

    ?? ??? ??? ??? ??? ??? ?start with mgr is null或者start with empno=7839;

    ?? ??? ??? ??? ???? ??? ?? ?//stsrt with表示起始條件,從何處開始遍歷查詢,只有從根節點開始時才可以使用start with..... is null 的格式,其余節點都只能使用第二種格式。

    ?? ??? ??? ?此外層次查詢的樹的深度用level表示,可以在select語句中加入level就可以得到深度的查詢結果,還可以對查詢結果進行排序如order by 1;

    ?? ??? ??? ?比較自連接和層次查詢的優劣: 自連接得到的查詢結果比較直觀,但是不適合操作大表; 層次查詢只涉及一張表單表查詢,不會產生笛卡爾積,但是得到的結果不夠直觀。 所以不同的查詢語句有不同的特點,不是萬能的!


    查看全部

舉報

0/150
提交
取消
課程須知
小伙伴們,學習本課程前需要掌握Oracle的語法基礎,并且對Oracle的函數有所了解。如不了解這兩部分內容,請移步《Oracle數據庫開發必備利器之SQL基礎》和《Oracle數據庫開發利器之函數》兩門教程。
老師告訴你能學到什么?
1、掌握分組查詢 2、掌握多表查詢 3、掌握子查詢

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!