所謂多表查詢是相對單表而言的,指從多個數據表中查詢數據,這裡我們主要學習從兩個數據表中如何查詢數據的方法。
4.3.1 無條件多表查詢
無條件多表查詢是將各表的記錄以“笛卡爾”積的方式組合起來。
如scott.dept表共有4條記錄,scott.emp表共有14條記錄,其“笛卡爾”積將有4*14=56條記錄。
在【命令編輯區】執行下列語句。
――――――――――――――――――――――――――――――――――――――
select emp.empno,emp.ename,emp.deptno,dept.dname,dept.loc from scott.emp,scott.dept; ――――――――――――――――――――――――――――――――――――――
單擊【執行】按鈕,出現如圖4.16所示的結果。
【參見光盤文件】:\第4章\4.3\431.sql。
4.3.2 等值多表查詢
在【命令編輯區】執行下列語句。
―――――――――――――――――――――――――――――――――――――
select emp.empno, emp.ename, emp.deptno, dept.dname,dept.loc from scott.emp,scott.dept where scott.emp.deptno=scott.dept.deptno;
―――――――――――――――――――――――――――――――――――――
單擊【執行】按鈕,出現如圖4.17所示的結果。
【參見光盤文件】:\第4章\4.3\432.sql。
等值多表查詢將按照等值的條件查詢多個數據表中關聯的數據。要求關聯的多個數據表的某些字段具有相同的屬性,即具有相同的數據類型、寬度和取值范圍。
4.3.3 非等值多表查詢
在【命令編輯區】執行下列語句。
―――――――――――――――――――――――――――――――――――――
select emp.empno, emp.ename, emp.deptno, dept.dname,dept.loc from scott.emp,scott.dept where scott.emp.deptno!=scott.dept.deptno and scott.emp.deptno=10; ―――――――――――――――――――――――――――――――――――――
單擊【執行】按鈕,出現如圖4.18所示的結果。
【參見光盤文件】:\第4章\4.3\433.sql。
在非等值多表查詢中,讀者可以使用表4.1所示的比較運算符來組合查詢條件。