站長資訊網
        最全最豐富的資訊網站

        Oracle學習之using關鍵字(實例詳解)

        本篇文章給大家帶來了關于Oracle的相關知識,其中主要介紹了關于using關鍵字的相關知識,可以使用using關鍵字來簡化連接查詢,希望對大家有幫助。

        Oracle學習之using關鍵字(實例詳解)

        推薦教程:《Oracle教程》

        在工作中,查看到類似于如下的SQL語句:

        select      tb.usrnm,      tb.typ,      tb.oprorder      from tb     inner join rb1     using (stfaprid)      where tb1.jugsumid = #jugsumid#      and tb1.blnorg = #blnorg#      and isvld = '1'      order by tb.typ asc, tb.oprorder asc

        sql/92標準可以使用using關鍵字來簡化連接查詢,但是只是在查詢滿足下面兩個條件時,才能使用using關鍵字進行簡化。

        • 1.查詢必須是等值連接。
        • 2.等值連接中的列必須具有相同的名稱和數據類型。

        例如:使用using關鍵字,如下:

        select emptno,ename,sal,deptno,dname from emp e inner join dept d using(deptno);

        如上述語句執行的結果與自然連接的結果相同。
        使用using關鍵字簡化連接時,需要注意以下幾點:

        • 1.使用emp表和dept表中的deptno列進行連接時,在using子句和select子句中,都不能為deptno列指定表名或表別名。
        • 2.如果在連接查詢時使用了兩個表中相同的多個列,那么就可以在using子句中指定多個列名

        形式如下:

        select... from table1 inner join table2 using(column1,column2)

        上述的語句相當于下面的語句:

        select... from table1 inner join table2 on table1.column1=table2.column2 and table1.column2=table2.column2;

        如果對多個表進行檢索,就必須多次使用using關鍵字進行指定,形式如下:

        select... from table1 inner join table2 using(column1) inner join table3 using(column2);

        上述的語句相當于下面的語句:

        select... from table1,table2,table3 where table1.column1=table2.column1 and table2.column2=table3.column2;

        再議using

        在Oracle中的join連接中使用using關鍵字,是相對于natural join的。
        我們在前面提到,如果是使用natraul join,并且兩張表中如果有多個字段是具有相同的名稱和數據類型的,那么這些字段都將被oracle自作主張的將他們連接起來。
        但實際上我們有時候是不需要這樣來連接的。我們只需要將他們的多個具有相同的名稱和數據類型的字段中挑選一兩個。這時候我們就需要用到using 關鍵字了。下面是一個例子。
        有一個表是sales,還有一個表是costs,這兩個表中都有兩個字段分別是pro_id和time_id。我們暫且不去考慮下面連接的實際意義,僅作語法上的研究。
        如果使用natural連接,默認情況下,兩個字段將會被自然地連接在一起。

        Select * from Sales natural join costs;

        Select * from Sales join costs on Sales.prod_id = costs.prod_id and sales.time_id = costs.time_id

        Select * from Sales ,costs Where Sales.pro_id = cost.prod_id and sales.time_id = costs.time_id

        得到的結果應該是一樣的。
        如果我們使用自然連接,就沒有機會控制連接條件,oracle自作主張的將兩個相同數據類型和名稱的字段自然地連接在一起了。
        下面我們使用using關鍵字。

        Select * from Sales join costs using(prod_id)

        這樣就迫使oracle使用using指出的字段來做連接,而不是natural join連接中默認的兩個。
        請注意,這里的SQL語句沒有任何意義,只是為了說明using的用法舉了一個牽強的例子而已。
        這里還需要說明的是:
        如果在使用using關鍵字時,而且select的結果列表項中包含了using關鍵字所指明的那個關鍵字,那么請不要在select的結果列表項中對該關鍵字指明它屬于哪個表,例如如果使用using(prod_id),而在結果列表中要包含prod_id字段的話,請不要寫成sales.prod_id或者costs.prod_id而應該寫成prod_id,而且也不要使用別名,就是使用例如prod_id as “產品編號”的形式。

        • using中僅能使用一個列名。
        • natural join關鍵字和using關鍵字是互斥的,也就是說不能同時出現。

        推薦教程:《Oracle視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲AV成人精品网站在线播放| 人妻精品久久久久中文字幕69| 欧美精品色婷婷五月综合| 国产福利精品一区二区| 欧美日韩国产成人高清视频,欧美日韩在线精品一 | 国产精品99久久不卡| 国产欧美精品AAAAAA片| 亚洲七七久久精品中文国产| 国产精品成人观看视频| 国产精品国色综合久久| 亚洲αv在线精品糸列| 欧美精品VIDEOSEX极品| 国产精品亚洲不卡一区二区三区| 国产精品久久久久9999| 日韩精品一区二区三区中文| 免费精品国产自产拍在线观看| 66精品综合久久久久久久| 国产精品毛片无遮挡| 亚洲av永久无码精品秋霞电影影院| 国产精品亚洲精品日韩已方| 亚洲av永久无码精品漫画| 精品一区二区三区免费视频| 国产成人精品久久免费动漫| 亚洲国产精品乱码一区二区| 国产精品免费久久久久影院| 国产精品99精品无码视亚| 亚洲级αV无码毛片久久精品| 国产在线国偷精品免费看| 99国产精品永久免费视频 | 精品久久久久久无码中文字幕一区| 久久久久久无码国产精品中文字幕| 日韩精品一区二区三区四区| 亚洲精品二三区| 精品露脸国产偷人在视频| 中文字幕精品一区二区日本| 91精品国产9l久久久久| 日韩精品真人荷官无码| 亚洲欧美日韩国产精品| 巨大黑人极品VIDEOS精品 | 久久人搡人人玩人妻精品首页| 91精品国产成人网在线观看|