Oracle 10g如何實現高階查詢

來源:酷知科普網 1.89W

許多人愁不會Oracle 10g的高階查詢,其實也是比較簡單的。在查詢資料時,為了獲取完整的資訊就要將多個表連線起來,這也是關係資料庫的一個重要特性---表之間存在的關係。這種關係可以將表的資料聯絡起來。多表查詢就是根據這種關係,實現從多個表中獲取資料還原資訊。下面這個圖就是我將要操作的表結構。

Oracle 10g如何實現高階查詢

工具/材料

電腦

Oracle 10g

操作方法

基本連線查詢
在簡單查詢中我們一般只使用了from字句的一個表,然而在關係資料庫中,表與表之間往往是存在關係的,這就是要求從多個表中檢索資料,以輸出更有意義的結果。最簡單的連線方式就是在select語句中,通過from子句使用多個表,並用逗號將不同的基本表隔開。下面語句將商品資訊表和供應商資訊表連線起來,查詢其中的商品名稱,產地,供應商名稱。

Oracle 10g如何實現高階查詢 第2張

但此時結果顯示該查詢語句共顯示了200行記錄,這顯然是錯誤的。因為僅僅通過select和from子句連線那麼查詢結果將是一個通過笛卡兒積生成的表,包含大量無意義的資訊。而where語句可以有效避免笛卡兒積的出現。只有當兩個表具有相同匹配的列時才返回結果集。例如下面語句通過在where子句中使用連線條件,實現了每件商品名稱,產地,供應商名稱資訊。

Oracle 10g如何實現高階查詢 第3張

但也要注意一個問題如果想要查詢“供應商編號”應該怎麼處理,因為兩個表中都有“供應商編號”,所以應該查詢的時候限定一下,說明究竟是哪一個表中的。

Oracle 10g如何實現高階查詢 第4張

join連線查詢
join用於連線兩個不同的表,on用於給出這兩個表之間的連線條件。如果進一步限制查詢範圍,可以在後面新增where語句,下面示例使用從商品資訊表和供應商資訊表查詢單價大於1200元的商品資訊。

Oracle 10g如何實現高階查詢 第5張

並且join連線也可以實現兩個以上的表查詢,寫語句的時候一個join對應一個on,看下面的例子。

Oracle 10g如何實現高階查詢 第6張

自然連線查詢
其實自然連線查詢(natural join)就是更加方便的join連線查詢,自然連線不必指定任何同等連線條件,系統將自動判斷出具有相同名稱的列然後形成匹配,但注意自然連線是根據兩個表中同名的列而進行連線的,當列不同名時,自然連線將失去意義。

Oracle 10g如何實現高階查詢 第7張

集合操作查詢
集合操作就是將兩個或多個SQL查詢結合構成符合查詢,集合操作符有union(並集)、intersect(交集)、minus(差集),現在以union為例,union查詢必須從每個表中讀取相同的列。

Oracle 10g如何實現高階查詢 第8張

子查詢
子查詢和連線查詢一樣提供了使用單個查詢訪問多個表中的資料的方法,使用in關鍵字,意思是在in後面的集合中查詢我們需要的,即in後面是限定條件。

Oracle 10g如何實現高階查詢 第9張

特別提示

注意在Oracle 10g中的標點符號是英文狀態下的

熱門標籤