成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle數據庫學習筆記之表的聯合查詢

數據庫 Oracle
本文我們主要介紹了Oracle數據庫的聯合查詢,包括:交叉聯合、等值聯合和不等值聯合、內部聯合與外部聯合等內容,并給出了相應的代碼示例,希望能夠對您有所幫助。

Oracle數據庫表的聯合查詢的相關知識是本文我們主要要介紹的內容,包括交叉聯合、等值聯合和不等值聯合、內部聯合與外部聯合以及UNION和UNION ALL等內容,接下來我們就一一介紹這部分內容,希望能夠對您有所幫助。

1、交叉聯合:

使你對于“聯合”的概念開始產生最直觀的印象,因為交叉聯合的結果就是兩個表的笛卡爾積。

code example:select * from T1, T2;

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

2、等值聯合與不等值聯合:

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

code example:

 

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

 

不等值聯合:與等值聯合查詢類似,只不過在where子句中使用除等號以外的比較符連接,此處不以例詳述。

3、內部聯合與外部聯合

內部聯合:產生的結果行數取決于參加聯合的行數,也就是說內部聯合的行數取決于 WHERE 子句的結果。

code example:

 

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

 

在這里你使用的語法中的 JOIN ON 不是 ANSI 標準中所指定的,而是我們所使用的解釋器的附加語法,你可以用它來指明是內部聯合還是外部聯合,大多數解釋器對些都進行了類似的擴充,注意這種類型的聯合沒有 WHERE 子句。

內部聯合的定義不便介紹,個人理解上面的等值/不等值聯合查詢例子均為其代表,平時用到的查詢也多為內部查詢。

在學習過外觀查詢后有此感受,內部查詢結果的直觀與簡潔與外部查詢的“畫蛇添足”形成鮮明對比,那么即使我們用到的不是外部聯合,那就一定是內部聯合了。

此外,對于概念和用法也不必做過多糾纏。這是因為——大多數的SQL 產品會判斷應該在你的查詢中使用哪一種聯合,事實上,如果你在過程中使用它(或在程序內使用它<包括存儲過程等>),你無需指明聯合類型,解釋器會為你選擇合適的語法形式。

如果你顯示地指明了聯合類型,那么解釋器會用你指明的類型來代替(由解釋器自身實現)優化的類型。

外部聯合:產生的結果行數取決于參加聯合的行數,也就是說內部聯合的行數取決于 WHERE 子句的結果,而外部聯合則是表間的聯合。

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,它會令 SQL 返回右邊表集內的全部記錄,對于ORDERS.PARTNUM<>54的也會顯示這些記錄,只不地在相應位置補以空值<NULL>。

左聯合也是一樣,只不過,由于表1與表2中的記錄條數不同,其查詢結果也大相徑庭。

注意到:在一些解釋器中使用+號來代替外部聯合。+號的意思就是——顯示我的全部內容,包括不匹配的內容。 

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' 

 

這條語句將會聯合兩個表,標有+號的 employee_id 將會全部顯示,包括不滿足條件的記錄。

4、表的自我聯合:

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

比如T1表中兩條記錄的sectionA字段是同值的,這可能是由于數據錄入錯誤造成的,如果按正常數據使用它,可能造成不可預料的災難。

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 

 

如果不存在上述異常數據,那么查詢結果應該為空;否則1條異常記錄對應兩條查詢結果。可以此來檢查數據的一致性。

5、聯想到 UNION 與 UNION ALL

UNION與UNION ALL都用來連接兩個查詢(即兩個select子句),但前者返回兩個查詢的結果并去除其重復的部分,后者一樣對查詢結果進行合并,但是對于重復記錄并不去除。

UNION可以集合運算中的并集運算聯系起來,與其對應的是INTERSECT,即交集運算,它返回的是兩個查詢中共有的部分。

6、補充說明:

上述聯合查詢僅僅列舉重點,在聯合查詢的分類問題上并未作任何具體而微的闡述,甚至由于聯合查詢的應用在實際工作中比較少見,對此類概念的理解可以不作深究,但是一知半解是危險的,你為無知付出的代價是昂貴的。本文寫作的意義也在于此。

關于Oracle數據庫學習筆記之表的聯合查詢的相關知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!

【編輯推薦】

  1. Oracle數據庫PL/SQL快捷鍵設置詳解
  2. Oracle數據庫診斷工具RDA的安裝與使用詳解
  3. Oracle數據庫GLOBAL_NAMES參數的詳細研究
  4. Oracle數據庫歸檔模式的切換及其相關操作詳解
  5. Oracle 10g UNDO表空間過大導致磁盤空間不足的解決
責任編輯:趙鵬 來源: CSDN博客
相關推薦

2011-08-16 16:37:40

Oracle數據庫樹形查詢根節點

2011-08-19 15:13:36

SQL Server MDX查詢

2010-03-30 18:48:24

Oracle 學習

2011-08-25 11:08:21

Sybase數據庫

2009-06-30 00:45:54

Oracle數據庫

2012-07-23 14:30:33

Oracle

2010-04-14 13:14:46

Oracle數據庫

2020-08-03 11:52:31

Oracle數據庫

2011-08-23 11:09:36

Oraclerman恢復system表空間恢復

2011-05-24 14:55:01

Oracle數據庫

2010-10-27 17:11:35

oracle查詢

2010-10-28 16:46:23

查詢Oracle數據庫

2011-07-29 15:58:53

SGAOracle

2011-08-29 17:00:47

Oracle數據庫RM表空間數據塊介質

2010-04-20 11:41:55

Oracle數據庫

2011-04-08 16:00:11

Oracle數據庫外部表

2011-03-22 14:49:35

Oracle數據庫重定義表

2013-03-12 09:51:02

2010-10-26 15:21:11

連接Oracle數據庫

2011-07-27 08:56:32

Oracle數據庫綁定變量軟解析
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩影音 | 日韩av网址在线观看 | 欧美精品三区 | 91毛片在线观看 | 成人美女免费网站视频 | 日韩不卡一区二区 | 黄色成人在线观看 | av免费观看在线 | 久久国色 | 亚洲欧美一区二区三区1000 | 男女视频在线免费观看 | 欧美影院 | 日韩有码一区 | 成人在线观看免费观看 | 国产激情在线观看 | 精品欧美一区二区三区久久久 | 电影91久久久 | 色偷偷888欧美精品久久久 | 成人片在线看 | 欧美中文字幕一区 | 久久久www成人免费精品 | 精品国产91亚洲一区二区三区www | 国产精品久久久久久一区二区三区 | 国产一区二区三区久久久久久久久 | 欧美极品少妇xxxxⅹ免费视频 | 欧美日韩一| 中国免费黄色片 | 欧美激情亚洲天堂 | 成人av在线播放 | 国产亚洲一区二区三区 | 久久人操 | 91精品国产一区二区三区 | 成年网站在线观看 | 成人小视频在线观看 | 一区中文字幕 | 欧美成人一级视频 | 91五月婷蜜桃综合 | 天天操网| 亚洲视频一区二区三区 | 一级毛片在线播放 | 欧美激情精品久久久久 |