日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle查询注意点,oracle查询相关注意点

發(fā)布時(shí)間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle查询注意点,oracle查询相关注意点 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

單表查詢:

1.or?和?and?混合使用

需求:查詢業(yè)主名稱包含'劉'或門牌號(hào)包含'5'的,并且地址編號(hào)為3的記錄SELECT?*?FROM?T_OWNERS?WHERE?("NAME"?LIKE?'%劉%'?or?HOUSENUMBER?LIKE?'%5%')?AND?ADDRESSID?=?3

and?的權(quán)限優(yōu)先于 or?所以需要在or的兩邊添加()

2.?范圍查詢

除了傳統(tǒng)的?where usenum >=100 and usenum <=200,還可以用between and?查詢

SELECT?*?from?T_ACCOUNT?WHERE?USENUM?BETWEEN?100?and?200???--只適合>=?或<=

3.去空查詢

SELECT?*?FROM?T_PRICETABLE?WHERE?MAXNUM?IS?NULL;SELECT?*?FROM?T_PRICETABLE?WHERE?MAXNUM?IS?NOT?null;

4.去掉重復(fù)記錄SELECT?ADDRESSID?FROM?T_OWNERS?GROUP?BY?ADDRESSID;SELECT?DISTINCT?ADDRESSID?FROM?T_OWNERS;?--執(zhí)行效率高

5.基于偽列的查詢

rowid :?表中每一行在數(shù)據(jù)文件中都有一個(gè)物理地址,rowid返回就是該行的物理地址

SELECT?ROWID?,?t.*?FROM?T_AREA?t;

rownum :?通過rownum偽列可以限制查詢結(jié)果集中返回的行數(shù),可用于分頁SELECT?ROWNUM?,?t.*?FROM?T_OWNERS?t;

6.聚合函數(shù)

sum(),avg(),max(),min(),count()?括號(hào)內(nèi)傳遞條件,如:

SELECT?"COUNT"(*)?FROM?T_OWNERS?t?WHERE?OWNERTYPEID?=?1;

分組聚合group by?如果后面加?having條件,即在分組后過濾數(shù)據(jù)SELECT?AREAID?,?"SUM"(MONEY)?FROM?T_ACCOUNT?GROUP?BY?AREAID?HAVING?"SUM"(MONEY)?>?169000

多表查詢:

連接規(guī)定 能用內(nèi)連接 就不用外鏈接 能用左外 就 不用右外

1.內(nèi)連接

需求:查詢顯示業(yè)主編號(hào),業(yè)主名稱,業(yè)主類型名稱

SELECT

t1."ID",

T1."NAME",

T2."NAME"FROM

T_OWNERS?t1,

T_OWNERTYPE?t2WHERE

T1.OWNERTYPEID?=?T2."ID"

需求:查詢顯示業(yè)主編號(hào),業(yè)主名稱,地址,業(yè)主類型名稱

SELECT

T1."ID",

T1."NAME",

t2."NAME",

T3."NAME"FROM

T_OWNERS?t1,

T_OWNERTYPE?t2,

T_ADDRESS?t3WHERE

T1.OWNERTYPEID?=?T2."ID"AND?t1.ADDRESSID?=?T3."ID";

注意:多表的內(nèi)連接,可以先寫from?xxx ,xxx ,xxx?以及where?xx=yy,aa=bb,xx=zz,最后再寫select * 需要顯示的內(nèi)容

2.左外連接

需求:查詢業(yè)主的賬務(wù)記錄,顯示業(yè)主的編號(hào),名稱,年,月,金額,沒有賬務(wù)信息也要列出

SELECT???????????????????--這是SQL1999標(biāo)準(zhǔn)的語法

A1."ID",

A1."NAME",

B1."YEAR",

B1."MONTH",

B1.MONEYFROM

T_OWNERS?a1LEFT?JOIN?T_ACCOUNT?b1?ON?A1."ID"?=?b1.OWNERUUID

SELECT?           --這是ORACLE提供的語法

A1."ID",

A1."NAME",

B1."YEAR",

B1."MONTH",

B1.MONEYFROM

T_OWNERS?a1,

T_ACCOUNT?b1WHERE

A1."ID"?=?B1.OWNERUUID?(+);

注意:left join?左邊的是主表,右邊的是輔表,on后面是條件;ORACLE提供的,誰是輔表就在誰身上

加 (+) .

3.子查詢

單行子查詢:

需求:查詢2012年01月用水量大于臺(tái)賬記錄平均值的數(shù)據(jù).分析:先查平均值,再傳入

SELECT

*FROM

T_ACCOUNTWHERE

"YEAR"?=?'2012'AND?"MONTH"?=?'01'AND?USENUM?>?(????SELECT            --查平均值

"AVG"?(USENUM)????FROM

T_ACCOUNT????WHERE

"YEAR"?=?'2012'

AND?"MONTH"?=?'01')

多行子查詢:

需求:查詢地址編號(hào)為1,3,4的業(yè)主記錄.分析:如果用or來編寫太繁瑣,所以用inSELECT?*?FROM?T_OWNERS?WHERE?ADDRESSID?IN?(1,3,4);

需求:查詢地址含有"花園"的業(yè)主信息.分析:先模糊查詢,再傳入

SELECT

*FROM

T_OWNERSWHERE

ADDRESSID?IN?(????????SELECT

"ID"?        --外查詢需要addressID,所以內(nèi)查詢要查id????????FROM

T_ADDRESS????????WHERE

"NAME"?LIKE?'%花園%'

);

注意:not in?不包含? is not null?代表不為空;子查詢?查詢的結(jié)果作為條件傳入另一個(gè)SQL語句

分頁查詢:

簡(jiǎn)單分頁查詢:

需求:分頁查詢臺(tái)賬表,每頁10條記錄.分析:rownum不能使用>符號(hào),只能

使用子查詢:

SELECT

*FROM

(

SELECT

ROWNUM?r,

A1.*

FROM

T_ACCOUNT?a1????????WHERE

ROWNUM?<=?20??    --如果要嵌套排序查,代碼該如何寫??

)WHERE

r?>?10;

基于排序的分頁:

SELECT

*FROM

(????????SELECT

A?.*,?ROWNUM?RN????????FROM

(????????????????SELECT

*

FROM

T_ACCOUNT????????????????WHERE

YEAR?=?'2012'

ORDER?BY

USENUM?DESC

)?A            --A表代表排序,也是三層中的數(shù)據(jù)層,第一步

)?B                ??--B表代表基于偽列查詢,也是三層中的偽列層,第二步WHERE                  ?--最后就是分頁查詢了,也是三層中的分頁層,第三步

B.RN?BETWEEN?(3?-?1)?*?5?+?1    --ORACLE中索引是從1開始的AND?3?*?5;???????????????????????????--條件要知道怎么計(jì)算

未完待續(xù)...

總結(jié)

以上是生活随笔為你收集整理的oracle查询注意点,oracle查询相关注意点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。