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

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

Oracle高級查詢

  • 自連接:通過別名,將同一張表視為多張表

    實例:查詢員工姓名和員工的老板姓名【使用員工表】

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

    2021-10-12

  • 外連接:把對于連接條條件不成立的記錄,仍然包含在最后的結果中;

    左外連接:當連接條件不成立的時候,等號左表的表仍然被包含;?where e.deptno=d.deptno(+)??[寫法與叫法相反]

    右外連接:當連接條件不成立的時候,等號右邊的表仍然被包含; where e.deptno(+)=d.deptno?

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

    2021-10-12

  • 笛卡爾集:行數:表行數相乘;列:列數相加;【笛卡爾集:數據不一定都是正確的】

    在實際運行環境下,應避免使用笛卡爾全集

    查看全部
  • 需要在,from 后面 是員工表和部門表在where等值連接=

    SQL

    查看全部
  • 層次查詢:自連接的優化查詢。

    level:樹的深度,層次。類似序列號。

    connect by pripro? 上一層的員工號等于這層的老板號。

    from emp connect by pripro empno=mgr?

    start with mgr is null;

    自連接存在的問題:
    (1)自連接不適合操作大表,也就是記錄多的表,原因是自連接至少有兩張表參與,并進行笛卡爾全集,連接之后的記錄數就是單張表記錄數的平方(笛卡爾積行數是兩張表行數的乘積),如果有三張表記錄數就是原來的三次方,如果原來的表包含的記錄數過多,連接之后的結果就會很大,所以自連接不適合操作大表。解決辦法:層次查詢。注意層次查詢是單表查詢,不存在第二張表!因為只有在一張表的情況下才不會產生笛卡爾積,才能解決這個問題。
    層次查詢在某些情況下可以替代自連接,本質上是單表查詢。
    例:
    select empno,ename,sal,mgr
    from emp ? //層次查詢只涉及一張表
    connect by prior empno=mgr ? //層次查詢的條件不用where表示,而用connect by表示,上一層的員工號=當前曾的老板號
    start with mgr is null或者start with empno=7839; ? //stsrt with表示從何處開始遍歷查詢,只有從根節點開始時才可以使用 * is null 的格式,其余節點都只能使用第二種格式。
    此外層次查詢的樹的深度用level表示,可以在select語句中加入level就可以得到深度的查詢結果,還可以對查詢結果進行排序如order by 1;
    比較自連接和層次查詢的優劣:
    自連接得到的查詢結果比較直觀但是不適合操作大表;
    層次查詢只涉及一張表,不產生笛卡爾積,但是得到的結果不夠直觀。
    所以不同的查詢語句有不同的特點,不是萬能的!

    查看全部
  • Group by
    ·在SELECT 列表中所有未包含在組函數中的列都應該包含在GROUP BY 子句中

    ·包含在GROUP BY 子句中的列不必包含在SELECT 列表中

    select a,b,c,組函數(x) from table group by a,b,c;

    select avg(sal) from emp group by deptno;

    select deptno,job,sum(sal) from emp group by deptno,job;

    查看全部
  • 一、分組函數

    AVG:平均值。

    SUM:求和。

    MIN:最小數。

    MAX:最大值。

    COUNT:計算個數。

    WM_CONCAT:行轉列。

    查看全部
  • null會導致計算錯誤,需要使用nvl函數轉為非空值

    select count(nvl(comm,0)) from emp;

    注意:sum(comm)/count(*):統計的是所有人的平均值(含該項為null的人員)

    sum(comm)/count(comm)&avg(comm)是統計comm非空的人員平均數

    查看全部
    0 采集 收起 來源:使用分組函數3

    2021-08-18

  • select?deptno?部門號,wm_concat(ename)?部門中員工的名字--wm_concat行列轉置?
    from?emp?group?by?deptno;

    查看全部
    0 采集 收起 來源:使用分組函數2

    2021-08-18

  • group by rollup(a,b)

    ????相當于

    ????????group by a,b??

    ????????+

    ????????group by a?

    ????????+

    ????????group by null?

    例:

    ????select deptno,job,sum(sal) from emp group by rollup(deptno,job);

    ????????先按照不同部門不同職位查出薪資總和顯示(deptno,job,sum(sal))

    ????????再按照不同部門查出薪資總和顯示(deptno,sum(sal))

    ????????再查出薪資總和顯示(sum(sal))

    ????修改報表格式(只在sqlplus中有效):

    break on deptno skip 2
    相同的部門號(deptno)只顯示一次,不同的部門號跳過兩行。

    set pagsize 30
    讓每頁顯示30條記錄。

    查看全部
  • order by子句

    示例:求每個部門的平均工資,要求顯示:部門號,部門的平均工資,并按照工資升序排列
    可以按照:列、別名、表達式、序號進行排序

    select deptno,avg(sal) from emp group by deptno order by avg(sal);

    select deptno,avg(sal) 平均工資 from emp group by deptno order by 平均工資;

    select deptno,avg(sal) 平均工資 from emp group by deptno order by 2;

    sqlplus的另一個小技能:?? a命令:-append;a命令表示在上一條命令后面追加語句,a命令后必須跟兩個或兩個以上的空格,若只打一個空格則追加語句緊跟上一條語句最后一個單詞拼接
    /表示執行
    查看全部
  • Group by
    ·在SELECT 列表中所有未包含在組函數中的列都應該包含在GROUP BY 子句中

    ·包含在GROUP BY 子句中的列不必包含在SELECT 列表中

    select a,b,c,組函數(x) from table group by a,b,c;

    select avg(sal) from emp group by deptno;

    select deptno,job,sum(sal) from emp group by deptno,job;
    查看全部
  • 分組函數會自動過濾空值
    例子:平均工資
    select sum(sal)/count(*) , sum(sal)/count(sal)? ,?? avg(sal)? from emp ;?

    • count(*) 會包含空值的個數
    • 分組函數會自動過濾掉空值
    • nvl函數? 使得分組函數不忽略空值
    • nvl(comm,0)?? 這個函數的意思是 當該字段為空的時候返回第二個參數,當字段不為空 返回他本身

    • 這個函數可用于自增的輸入nvl(max(sno),0))+1? 最大值加一?? 可用于插入數據的編號
    查看全部
    0 采集 收起 來源:使用分組函數3

    2021-08-08

  • Having

    610ff5d60001d5f211521756.jpg
    查看全部
  • testtetetetehttp://img1.sycdn.imooc.com//60d2d9c700018c6607270423.jpg

    查看全部

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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