首頁 >資料庫 >Oracle >Oracle學習之using關鍵字(實例詳解)

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

WBOY
WBOY轉載
2022-03-02 18:05:282845瀏覽

這篇文章為大家帶來了關於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影片教學

以上是Oracle學習之using關鍵字(實例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除