日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Oracle數(shù)據(jù)庫(kù)學(xué)習(xí)筆記之表的聯(lián)合查詢

Oracle數(shù)據(jù)庫(kù)表的聯(lián)合查詢的相關(guān)知識(shí)是本文我們主要要介紹的內(nèi)容,包括交叉聯(lián)合、等值聯(lián)合和不等值聯(lián)合、內(nèi)部聯(lián)合與外部聯(lián)合以及UNION和UNION ALL等內(nèi)容,接下來(lái)我們就一一介紹這部分內(nèi)容,希望能夠?qū)δ兴鶐椭?/p>

1、交叉聯(lián)合:

使你對(duì)于“聯(lián)合”的概念開(kāi)始產(chǎn)生最直觀的印象,因?yàn)榻徊媛?lián)合的結(jié)果就是兩個(gè)表的笛卡爾積。

code example:select * from T1, T2;

假如表1有2條記錄,表2有3條記錄,那么查詢結(jié)果就是2*3=6條記錄。

2、等值聯(lián)合與不等值聯(lián)合:

等值聯(lián)合:只顯示表1中的數(shù)據(jù),以及表2中的、存在于表1中的數(shù)據(jù)。顧名思義,查詢條件/表達(dá)式中以等號(hào)(“=”)連接。

code example:

 

 
 
 
  1. select T1.sectionA, T1.sectionB, T2.sectionC from T1, T2  
  2. where T1.sectionA = T2.sectionA (and ...); 

 

不等值聯(lián)合:與等值聯(lián)合查詢類似,只不過(guò)在where子句中使用除等號(hào)以外的比較符連接,此處不以例詳述。

3、內(nèi)部聯(lián)合與外部聯(lián)合

內(nèi)部聯(lián)合:產(chǎn)生的結(jié)果行數(shù)取決于參加聯(lián)合的行數(shù),也就是說(shuō)內(nèi)部聯(lián)合的行數(shù)取決于 WHERE 子句的結(jié)果。

code example:

 

 
 
 
  1. SELECT P.PARTNUM, P.DESCRIPTION, P.PRICE, O.NAME, O.PARTNUM  
  2. FROM PART P  JOINORDERS OON ORDERS.PARTNUM = 54; 

 

在這里你使用的語(yǔ)法中的 JOIN ON 不是 ANSI 標(biāo)準(zhǔn)中所指定的,而是我們所使用的解釋器的附加語(yǔ)法,你可以用它來(lái)指明是內(nèi)部聯(lián)合還是外部聯(lián)合,大多數(shù)解釋器對(duì)些都進(jìn)行了類似的擴(kuò)充,注意這種類型的聯(lián)合沒(méi)有 WHERE 子句。

內(nèi)部聯(lián)合的定義不便介紹,個(gè)人理解上面的等值/不等值聯(lián)合查詢例子均為其代表,平時(shí)用到的查詢也多為內(nèi)部查詢。

在學(xué)習(xí)過(guò)外觀查詢后有此感受,內(nèi)部查詢結(jié)果的直觀與簡(jiǎn)潔與外部查詢的“畫蛇添足”形成鮮明對(duì)比,那么即使我們用到的不是外部聯(lián)合,那就一定是內(nèi)部聯(lián)合了。

此外,對(duì)于概念和用法也不必做過(guò)多糾纏。這是因?yàn)椤蠖鄶?shù)的SQL 產(chǎn)品會(huì)判斷應(yīng)該在你的查詢中使用哪一種聯(lián)合,事實(shí)上,如果你在過(guò)程中使用它(或在程序內(nèi)使用它<包括存儲(chǔ)過(guò)程等>),你無(wú)需指明聯(lián)合類型,解釋器會(huì)為你選擇合適的語(yǔ)法形式。

如果你顯示地指明了聯(lián)合類型,那么解釋器會(huì)用你指明的類型來(lái)代替(由解釋器自身實(shí)現(xiàn))優(yōu)化的類型。

外部聯(lián)合:產(chǎn)生的結(jié)果行數(shù)取決于參加聯(lián)合的行數(shù),也就是說(shuō)內(nèi)部聯(lián)合的行數(shù)取決于 WHERE 子句的結(jié)果,而外部聯(lián)合則是表間的聯(lián)合。

code example:

 

 
 
 
  1. SELECT P.PARTNUM, P.DESCRIPTION, P.PRICE, O.NAME, O.PARTNUM   
  2. FROM PART P RIGHT OUTER JOINORDERS OON ORDERS.PARTNUM = 54; 

 

上述代碼示例中使用了 RIGHT OUTER JOIN,它會(huì)令 SQL 返回右邊表集內(nèi)的全部記錄,對(duì)于ORDERS.PARTNUM<>54的也會(huì)顯示這些記錄,只不地在相應(yīng)位置補(bǔ)以空值。

左聯(lián)合也是一樣,只不過(guò),由于表1與表2中的記錄條數(shù)不同,其查詢結(jié)果也大相徑庭。

注意到:在一些解釋器中使用+號(hào)來(lái)代替外部聯(lián)合。+號(hào)的意思就是——顯示我的全部?jī)?nèi)容,包括不匹配的內(nèi)容。 

code example:

 

 
 
 
  1. select e.name, e.employee_id, ep.salary, ep.marital_status,  
  2. from employee_tbl e, employee_pay_tbl ep  
  3. where e.employee_id = ep.employee_id(+) and e.name like '%MITH' 

 

這條語(yǔ)句將會(huì)聯(lián)合兩個(gè)表,標(biāo)有+號(hào)的 employee_id 將會(huì)全部顯示,包括不滿足條件的記錄。

4、表的自我聯(lián)合:

由于聯(lián)合查詢也常被譯為“連接”,因此在有些資料中看到的“自連接”查詢指的也是這個(gè)概念。它并無(wú)特別之處,是指表1與表2均為同一表名。其用處在于檢查表中數(shù)據(jù)的一致性。

比如T1表中兩條記錄的sectionA字段是同值的,這可能是由于數(shù)據(jù)錄入錯(cuò)誤造成的,如果按正常數(shù)據(jù)使用它,可能造成不可預(yù)料的災(zāi)難。

code example:

 

 
 
 
  1. SELECT F.PARTNUM, F.DESCRIPTION, S.PARTNUM, S.DESCRIPTION  
  2. FROM PART F, PART S  
  3. WHERE F.PARTNUM = S.PARTNUM  
  4. AND F.DESCRIPTION <> S.DESCRIPTION 

 

如果不存在上述異常數(shù)據(jù),那么查詢結(jié)果應(yīng)該為空;否則1條異常記錄對(duì)應(yīng)兩條查詢結(jié)果。可以此來(lái)檢查數(shù)據(jù)的一致性。

5、聯(lián)想到 UNION 與 UNION ALL

UNION與UNION ALL都用來(lái)連接兩個(gè)查詢(即兩個(gè)select子句),但前者返回兩個(gè)查詢的結(jié)果并去除其重復(fù)的部分,后者一樣對(duì)查詢結(jié)果進(jìn)行合并,但是對(duì)于重復(fù)記錄并不去除。

UNION可以集合運(yùn)算中的并集運(yùn)算聯(lián)系起來(lái),與其對(duì)應(yīng)的是INTERSECT,即交集運(yùn)算,它返回的是兩個(gè)查詢中共有的部分。

6、補(bǔ)充說(shuō)明:

上述聯(lián)合查詢僅僅列舉重點(diǎn),在聯(lián)合查詢的分類問(wèn)題上并未作任何具體而微的闡述,甚至由于聯(lián)合查詢的應(yīng)用在實(shí)際工作中比較少見(jiàn),對(duì)此類概念的理解可以不作深究,但是一知半解是危險(xiǎn)的,你為無(wú)知付出的代價(jià)是昂貴的。本文寫作的意義也在于此。

關(guān)于Oracle數(shù)據(jù)庫(kù)學(xué)習(xí)筆記之表的聯(lián)合查詢的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. Oracle數(shù)據(jù)庫(kù)PL/SQL快捷鍵設(shè)置詳解
  2. Oracle數(shù)據(jù)庫(kù)診斷工具RDA的安裝與使用詳解
  3. Oracle數(shù)據(jù)庫(kù)GLOBAL_NAMES參數(shù)的詳細(xì)研究
  4. Oracle數(shù)據(jù)庫(kù)歸檔模式的切換及其相關(guān)操作詳解
  5. Oracle 10g UNDO表空間過(guò)大導(dǎo)致磁盤空間不足的解決

本文題目:Oracle數(shù)據(jù)庫(kù)學(xué)習(xí)筆記之表的聯(lián)合查詢
鏈接分享:http://www.5511xx.com/article/dhoeodi.html