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

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

Oracle高級查詢

  • 相關子查詢:查詢員工表中薪水大于本部門平均薪水的員工

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

    from emp e

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


    查看全部
    1. 行號永遠按照默認順序生成

    2. 行號只能使用<,<=;不能使用>.>=;

    3. 實例:查詢emp表中薪水排行前三的員工信息


      select rownum,empno,ename,sal

      from (select * from emp order by sal desc) where ROWNUM<=3;

    查看全部
  • 多表查詢和子查詢,最好使用多表查詢,因為子查詢需要訪問兩次數據庫,而多表查詢只需訪問一次

    查看全部
  • group by 后面不能使用子查詢

    查看全部
    1. 查詢工資比scott高的員工的工資;

    select *?

    from emp

    where sal>(select sal from emp where ename='SCOTT');


    查看全部
  • 層次查詢:“connect by prior...”語句

    select level, empno,ENAME,sal,MGR

    from emp

    connect by prior empno=mgr

    start with mgr is null

    order by 1;


    查看全部
  • 外鏈接:

    (1)左外連接:“(+)”放在等號的右邊;

    (2)右外連接:“(+)”放在等號的左邊;

    查看全部
    0 采集 收起 來源:[Oracle] 外連接

    2018-06-24

  • rollup(a,b)函數

    查看全部
  • having語句用于過濾group by語句后的結果 放在group bu語句的后面
    查看全部
  • group by 語句的增強 rollup
    查看全部
  • 使用count函數計算某列的數量時不會算上為空的字段
    查看全部
    0 采集 收起 來源:使用分組函數3

    2018-06-15

  • 8.一般先執行子查詢,再執行主查詢;但相關子查詢例外


    (1)**相關子查詢 (子查詢使用了主查詢字段)

    select 員工號,姓名,工資,

    (select avg(工資) from 員工表 where 部門號 = t1.部門號) 部門平均工資

    from 員工表 t1

    where 工資 > (select avg(工資)

    ? from 員工表?

    ? where 部門號 = t1.部門號)


    查看全部
  • >>子查詢注意的10個問題


    1.子查詢語法中的小括號

    2.子查詢的書寫風格

    3.可以使用子查詢的位置:where,select,having,from

    4.不可以使用子查詢的位置:group by

    5.強調:from后面的子查詢

    6.主查詢和子查詢可以不是同一張表

    7.一般不在子查詢中,使用排序;但在Top-N分析問題中,必須對子查詢排序

    8.一般先執行子查詢,再執行主查詢;但相關子查詢例外

    9.單行子查詢只能使用單行操作符;多行子查詢只能使用多行操作符

    10.注意:子查詢中是null值得問題


    查看全部
  • >>子查詢注意的10個問題


    1.子查詢語法中的小括號

    2.子查詢的書寫風格

    3.可以使用子查詢的位置:where,select,having,from

    (1) select 必須是單行子查詢

    select 工號,姓名,工資,(select 職位 from 員工表 where 工號='100')?

    from 員工表

    (2) having

    select 部門號,ags(工資)

    from 員工表

    group by 部門號

    having ags(工資) > (select max(工資)

    from 員工表

    where 部門號 = 30)

    (3)from

    select *

    from(select 員工號,姓名,工資?

    from 員工表)

    4.不可以使用子查詢的位置:group by

    5.強調:from后面的子查詢

    select *

    from (select 員工號,姓名,工資 月薪,工資*12 年薪 from 員工表)

    6.主查詢和子查詢可以不是同一張表

    --子查詢

    select *

    from 員工表

    where 部門號 = (select 部門號?

    from 部門表?

    where 部門名稱 = '銷售部')

    --多表查詢

    select t1.*?

    from 員工表 t1,部門表 t2

    where t1.部門號 = t2.部門號?

    ? and t2.部門名稱 = '銷售部'

    7.一般不在子查詢中,使用排序;但在Top-N分析問題中,必須對子查詢排序

    **rownum 行號,偽列

    *行號永遠按照默認的順序生成

    *行號只能使用 <,<=;不能使用 >,>=

    select rownum,員工號,姓名,工資?

    from 員工表

    (1)top-n 前三名

    select rownum,員工號,姓名,工資

    from(select *

    from 員工表

    order by 工資 desc)

    where rownum <= 3

    8.一般先執行子查詢,再執行主查詢;但相關子查詢例外


    (1)**相關子查詢 (子查詢使用了主查詢字段)

    select 員工號,姓名,工資,

    (select avg(工資) from 員工表 where 部門號 = t1.部門號) 部門平均工資

    from 員工表 t1

    where 工資 > (select avg(工資)

    ? from 員工表?

    ? where 部門號 = t1.部門號)

    ? ? --

    select 員工號,姓名,工資

    from 員工表 t1

    where 工資 > (select 部門號,avg(工資)

    ? from 員工表?

    ? group by 部門號

    ? having 部門號 = t1.部門號)

    --

    select t1.員工號,t1.姓名,t1.工資,t2.部門平均工資

    from 員工表 t1,

    (select 部門號,avg(工資) 部門平均工資

    from 員工表

    group by 部門號) t2

    where t1.部門號 = t2.部門號

    ? and t1.工資 > t2.部門平均工資

    9.單行子查詢只能使用單行操作符;多行子查詢只能使用多行操作符

    多行操作符 in/any/all

    --in

    --any

    select *

    from 員工表

    where 工資 > any(select 工資

    ? ? ?from 員工表

    ? ? ?where 部門號 = 30)

    --等價

    select *

    from 員工表

    where 工資 > (select min(工資)

    ? from 員工表

    ? where 部門號 = 30) ??

    --all

    select *

    from 員工表

    where 工資 > all(select 工資

    ? ? ?from 員工表

    ? ? ?where 部門號 = 30)

    --等價

    select *

    from 員工表

    where 工資 > (select max(工資)

    ? from 員工表

    ? where 部門號 = 30) ??

    10.注意:子查詢中是null值得問題

    單行子查詢null值問題

    多行子查詢null值問題

    **not in

    a not in (10,20,null)

    a != 10 and a != 20 and a != null

    all

    select *

    from 員工表

    where 員工號 not in (select 老板號

    from 員工表

    where 老板號 not null)


    查看全部
  • select *

    from emp

    where sal>(select sal

    ? ? ? ? ? ? ? ? ? ? from emp

    ? ? ? ? ? ? ? ? ? ? ?where ename='SCOTT');


    查看全部

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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