oracle 丁勇 从零开始学_8.3.1 多表查询分类
8.3? 多表查詢
多表查詢是指使用SELECT語句從多個表中查詢數據,多個表之間通過主外鍵關系進行關聯。在Oracle中,多表查詢有兩種寫法,一種是由ANSI制定的標準的連接語法;另一種是由Oracle自由地連接語法。
8.3.1? 多表查詢分類
大多數情況下從一個表中很難獲取到比較全面的信息,比如要查詢emp表中每個員工的部門名稱,由于部門名稱存儲在dept表中,emp表通過deptno與dept表進行了主外鍵關聯。因此要在查詢結果中包含部門名稱的話,必須要同時查詢emp表和dept表來獲取數據。
連接其實就是一種普通的SQL語句,只是在FROM部分要指定多個表名稱,同時使用表別名進行區分,Oracle將根據連接所要返回的結果數據進行分類,在Oracle中主要有3種類型的連接。
內連接:這種連接返回既滿足A表又滿足B表的行,只有連接(join)的條件滿足才返回,否則不會返回任何數據。
外連接:外連接是內連接的擴展,外連接返回符合條件的行,同時可以根據指定的條件返回不滿足連接條件的左邊的表行或者是右邊的表行。外連接又分為左外連接和右外連接。
自連接:是指一個表連接到自身,比如emp表中每個員工屬于一個經理,經理的員工編號也存在于emp表中,因此可以說mgr和emp是自連接關系。
學習多表連接查詢有一個好的辦法,TOAD提供了一個名為Query Builder的可視化查詢設計器,下面通過一個例子學習如何通過可視化的工具來創建多表查詢,步驟如下所示:
(1)啟動TOAD,使用scott/tiger用戶登錄進入到數據庫,選擇"Database|Report|Query Builder"選項,將進入到TOAD提供的查詢設計器窗口,如圖8.4所示。
(點擊查看大圖)圖8.4? TOAD的查詢設計器窗口
如果對象面板沒有顯示出來,請用鼠標右鍵單擊設計器面板,從彈出的菜單中選擇"Object Palette"選項。
(2)從對象面板中拖emp和dept表到設計器面板,可以通過"Ctrl+表名稱"進行多選。此時可以看到兩個表已經加入到了查詢設計器面板。通過拖動emp表中的deptno字段到dept表的deptno主鍵字段,TOAD將自動創建兩個表之間的連接,并且在"Generated Query"選項卡中顯示生成的SQL語句,如圖8.5所示。
(3)在設計器中,通過選中表字段左側的復選框選擇要查詢的列,可以看到生成的SQL語句會自動加入所選擇的字段。如果要改變emp和dept表之間的連接,可以雙擊表與表之間的連接線,如圖8.6所示。
在彈出的"View Joins"窗口中,可以看到兩個表的連接方式,同時提供了內連接(Inner Join)和外連接(Outer Join)的選擇項,在"Join Test"連接測試中,可以指定deptno的連接方式。這里使用默認的內連接,如果需要更改,只需要選中單選按鈕即可。
(點擊查看大圖)圖8.5? 拖動表名稱產生查詢語句
(點擊查看大圖)圖8.6? 更改多表查詢的連接方式
(4)在設計完了連接查詢后,可以單擊工具欄上的 圖標執行查詢,或者將語句復制到SQL*Plus中執行,設計器生成的查詢語句如下所示:
SELECT?dept.deptno,?dept.dname,?dept.loc,?emp.empno,?emp.ename,?emp.job,
emp.hiredate,?emp.mgr,?emp.sal,?emp.comm
FROM?scott.dept,?scott.emp
WHERE?((emp.deptno=?dept.deptno))
在了解了這個方便的功能后,接下來學習一下這幾種連接的實現方式和異同之處。
【責任編輯:book TEL:(010)68476606】
點贊 0
總結
以上是生活随笔為你收集整理的oracle 丁勇 从零开始学_8.3.1 多表查询分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ string 头文件_“延期不延
- 下一篇: tp5上传文件并获取文件路径_think