欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

oracle中where 子句和having子句中的區(qū)別介紹

 更新時(shí)間:2018年12月05日 11:01:14   作者:博大的Java世界  
這篇文章主要介紹了在oracle中where 子句和having子句中的區(qū)別,本文通過sql語句給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1.where 不能放在GROUP BY 后面

2.HAVING 是跟GROUP BY 連在一起用的,放在GROUP BY 后面,此時(shí)的作用相當(dāng)于WHERE

3.WHERE 后面的條件中不能有聚集函數(shù),比如SUM(),AVG()等,而HAVING 可以

 Where和Having都是對(duì)查詢結(jié)果的一種篩選,說的書面點(diǎn)就是設(shè)定條件的語句。下面分別說明其用法和異同點(diǎn)。

注:本文使用字段為oracle數(shù)據(jù)庫中默認(rèn)用戶scott下面的emp表,sal代表員工工資,deptno代表部門編號(hào)。

一、聚合函數(shù)

    說明前我們先了解下聚合函數(shù):聚合函數(shù)有時(shí)候也叫統(tǒng)計(jì)函數(shù),它們的作用通常是對(duì)一組數(shù)據(jù)的統(tǒng)計(jì),比如說求最大值,最小值,總數(shù),平均值(
MAX,MIN,COUNT, AVG)等。這些函數(shù)和其它函數(shù)的根本區(qū)別就是它們一般作用在多條記錄上。簡(jiǎn)單舉個(gè)例子:SELECT SUM(sal) FROM emp,這里的SUM作用是統(tǒng)計(jì)emp表中sal(工資)字段的總和,結(jié)果就是該查詢只返回一個(gè)結(jié)果,即工資總和。通過使用GROUP BY 子句,可以讓SUM 和 COUNT 這些函數(shù)對(duì)屬于一組的數(shù)據(jù)起作用。

二、where子句

    where自居僅僅用于從from子句中返回的值,from子句返回的每一行數(shù)據(jù)都會(huì)用where子句中的條件進(jìn)行判斷篩選。where子句中允許使用比較運(yùn)算符(>,<,>=,<=,<>,!=|等)和邏輯運(yùn)算符(and,or,not)。由于大家對(duì)where子句都比較熟悉,在此不在贅述。

三、having子句

    having子句通常是與order by 子句一起使用的。因?yàn)閔aving的作用是對(duì)使用group by進(jìn)行分組統(tǒng)計(jì)后的結(jié)果進(jìn)行進(jìn)一步的篩選。舉個(gè)例子:現(xiàn)在需要找到部門工資總和大于10000的部門編號(hào)?

第一步:

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

篩選結(jié)果如下:

DEPTNO   SUM(SAL)
------ ----------
    30       9400
    20      10875
    10       8750

可以看出我們想要的結(jié)果了。不過現(xiàn)在我們?nèi)绻胍块T工資總和大于10000的呢?那么想到了對(duì)分組統(tǒng)計(jì)結(jié)果進(jìn)行篩選的having來幫我們完成。

第二步:

select deptno,sum(sal) from emp group by deptno having sum(sal)>10000;

篩選結(jié)果如下:

DEPTNO   SUM(SAL)
------ ----------
    20      10875

當(dāng)然這個(gè)結(jié)果正是我們想要的。

四、下面我們通過where子句和having子句的對(duì)比,更進(jìn)一步的理解它們。

    在查詢過程中聚合語句(sum,min,max,avg,count)要比having子句優(yōu)先執(zhí)行,簡(jiǎn)單的理解為只有有了統(tǒng)計(jì)結(jié)果后我才能執(zhí)行篩選啊。where子句在查詢過程中執(zhí)行優(yōu)先級(jí)別優(yōu)先于聚合語句(sum,min,max,avg,count),因?yàn)樗且痪湟痪浜Y選的。HAVING子句可以讓我們篩選成組后的對(duì)各組數(shù)據(jù)篩選。,而WHERE子句在聚合前先篩選記錄。如:現(xiàn)在我們想要部門號(hào)不等于10的部門并且工資總和大于8000的部門編號(hào)?

我們這樣分析:通過where子句篩選出部門編號(hào)不為10的部門,然后在對(duì)部門工資進(jìn)行統(tǒng)計(jì),然后再使用having子句對(duì)統(tǒng)計(jì)結(jié)果進(jìn)行篩選。

select deptno,sum(sal) from emp 
where deptno!='10' group by deptno
having sum(sal)>8000;

篩選結(jié)果如下:

DEPTNO   SUM(SAL)
------ ----------
    30       9400
    20      10875

不做太多解釋了,這個(gè)簡(jiǎn)單的小例子能夠很好的說明where和having的作用。

五、異同點(diǎn)

     它們的相似之處就是定義搜索條件,不同之處是where子句為單個(gè)篩選而having子句與組有關(guān),而不是與單個(gè)的行有關(guān)。

     最后:理解having子句和where子句最好的方法就是基礎(chǔ)select語句中的那些句子的處理次序:where子句只能接收from子句輸出的數(shù)據(jù),而having子句則可以接受來自group by,where或者from子句的輸入。

總結(jié)

以上所述是小編給大家介紹的oracle中where 子句和having子句中的區(qū)別介紹,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • oracle使用sql腳本生成csv文件案例學(xué)習(xí)

    oracle使用sql腳本生成csv文件案例學(xué)習(xí)

    在oracle中用sql腳本生成csv文件,很多的朋友都想實(shí)現(xiàn)這樣的功能,所以本文的出現(xiàn)是很有必要的,感興趣的你可千萬不要錯(cuò)過,希望本文可以幫助到你
    2013-02-02
  • Oracle ORA-22908(NULL表值的參考)異常分析與解決方法

    Oracle ORA-22908(NULL表值的參考)異常分析與解決方法

    這篇文章主要介紹了Oracle ORA-22908(NULL表值的參考)異常分析與解決方法,大家可以參考使用
    2013-11-11
  • ORACLE檢查找出損壞索引(Corrupt Indexes)的方法詳解

    ORACLE檢查找出損壞索引(Corrupt Indexes)的方法詳解

    這篇文章主要給大家介紹了關(guān)于ORACLE如何檢查找出損壞索引(Corrupt Indexes)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 解決ORA-12154 TNS無法解析指定的連接標(biāo)識(shí)符問題

    解決ORA-12154 TNS無法解析指定的連接標(biāo)識(shí)符問題

    Oracle11g server 64bit服務(wù)器端安裝在Windows Server2008 Enterprise上,安裝Oracle11g client 32bit,通過SQL Plus以sysdba身份連接數(shù)據(jù)庫,并且創(chuàng)建表空間、用戶、授權(quán)成功,在連接數(shù)據(jù)庫時(shí)出現(xiàn)問題,下面講解ORA-12154無法解析指定的連接標(biāo)識(shí)符問題,感興趣的朋友一起看看
    2024-01-01
  • Oracle實(shí)現(xiàn)豎表轉(zhuǎn)橫表的幾種常用方法小結(jié)

    Oracle實(shí)現(xiàn)豎表轉(zhuǎn)橫表的幾種常用方法小結(jié)

    本文主要介紹了Oracle實(shí)現(xiàn)豎表轉(zhuǎn)橫表的幾種常用方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • oracle中dblink查看、創(chuàng)建、使用以及刪除實(shí)例代碼

    oracle中dblink查看、創(chuàng)建、使用以及刪除實(shí)例代碼

    當(dāng)用戶要跨本地?cái)?shù)據(jù)庫訪問另外一個(gè)數(shù)據(jù)庫表中的數(shù)據(jù)時(shí),本地?cái)?shù)據(jù)庫中必須創(chuàng)建了遠(yuǎn)程數(shù)據(jù)庫的DBLINK,下面這篇文章主要給大家介紹了關(guān)于oracle中dblink查看、創(chuàng)建、使用以及刪除的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • [Oracle] 如何使用觸發(fā)器實(shí)現(xiàn)IP限制用戶登錄

    [Oracle] 如何使用觸發(fā)器實(shí)現(xiàn)IP限制用戶登錄

    在Oracle里,不像MySQL那樣方便,可以直接在用戶上進(jìn)行IP限制,Oracle要實(shí)現(xiàn)用戶級(jí)別的IP限制,可以使用觸發(fā)器來迂回實(shí)現(xiàn),以下就是示例,需要的朋友可以參考下
    2013-07-07
  • ORACLE SQL語句優(yōu)化技術(shù)要點(diǎn)解析

    ORACLE SQL語句優(yōu)化技術(shù)要點(diǎn)解析

    這篇文章主要介紹了ORACLE SQL語句優(yōu)化技術(shù)的相關(guān)內(nèi)容,小編覺得挺不錯(cuò)的,在這里分享給大家,需要的朋友可以參考下。
    2017-10-10
  • 解決The?Network?Adapter?could?not?establish?the?conn問題

    解決The?Network?Adapter?could?not?establish?the?conn問題

    這篇文章主要介紹了解決The?Network?Adapter?could?not?establish?the?conn問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 基于Oracle多庫查詢方法(分享)

    基于Oracle多庫查詢方法(分享)

    下面小編就為大家分享一篇Oracle多庫查詢方法,具有很的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評(píng)論