顯示來自多個表的資料——JOIN
表關係簡介
![](https://i.iter01.com/images/f6dd9d6ecacc15596683fc926a3f1c8ad132cd07c924718f439d0493b31ede14.png)
一、語法
-
SELECT 欄位列表
-
FROM TABLE1
-
[CROSS JOIN TABLE2 ] |
-
[NATURAL JOIN TABLE2 ] |
-
[JOIN TABLE2 USING (欄位名) ] |
-
[JOIN TABLE2 ON (TABLE.COLUMN_NAME = TABLE2.COLUMN_NAME) ] |
- [(LEFT | RIGHT | FULL OUT) JOIN TABLE2 ON (TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME) ];
二、自然連線
如果不希望參照被連線表的所有同名列進行等值連線,自然連線將無法滿足要求,可以在連線時使用USING子句來設定用於等值連線的列(參照列)名。
不允許在參照列上使用表名或者別名作為字首
2、ON
- --99語法
- SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAME
- FROM EMP
- JOIN DEPT
- USING (DEPTNO);
- --92語法
- SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAME
- FROM EMP, DEPT
- WHERE EMP.DEPTNO = DEPT.DEPTNO;
如果要參照非同名的列進行等值連線,或想設定任意的連線條件,可以使用On子句
- SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAME
- FROM EMP
- JOIN DEPT
- ON (EMP.DEPTNO = DEPT.DEPTNO);
三、自連線
自己和自己做連結
- --99語法
- SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGR
- FROM EMPLOYEES WORKER
- JOIN EMPLOYEES MANAGER
- ON (WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID);
- --92語法
- SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGR
- FROM EMPLOYEES WORKER, EMPLOYEES MANAGER
- WHERE WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID;
四、非等值連線
-
--99語法
-
SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVEL
-
FROM EMPLOYEES E
-
JOIN JOB_GRADES J
-
ON E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;
-
-
--92語法
-
SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVEL
-
FROM EMPLOYEES E, JOB_GRADES J
- WHERE E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;
五、INNER|OUTER 連線
兩個表連線,只返回匹配的行,被稱為內連線。
2、LEFT OUTER | RIGHT OUTER 連線
- --查詢所有員工以及其部門名字
- --99語法
- SELECT LAST_NAME, DEPARTMENT_NAME
- FROM EMPLOYEES E
- INNER JOIN DEPARTMENTS D
- ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
- --92語法
- SELECT LAST_NAME, DEPARTMENT_NAME
- FROM EMPLOYEES E, DEPARTMENTS D
- WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID;
兩個表在連線過程中除了返回滿足連線條件的行以外還返回左(或右)表中不滿足條件的行,這種連線稱為左(或右)外連線。
3、FULL OUTER 連線
- --哪些部門沒有員工,看出部門名字
- --99語法
- SELECT DEPARTMENT_NAME
- FROM EMPLOYEES E
- RIGHT JOIN DEPARTMENTS D
- ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
- WHERE LAST_NAME IS NULL;
- --92語法
- SELECT DEPARTMENT_NAME
- FROM EMPLOYEES E, DEPARTMENTS D
- WHERE E.DEPARTMENT_ID(+) = D.DEPARTMENT_ID
- AND LAST_NAME IS NULL;
兩個表在連線過程中除了返回滿足連線條件的行以外還返回兩個表中不滿足條件的行,這種連線稱為全外聯接。
- --99
- SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME
- FROM EMPLOYEES E
- FULL OUTER JOIN DEPARTMENTS D
- ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
- --92
- SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME
- FROM EMPLOYEES E, DEPARTMENTS D
- ON E.DEPARTMENT_ID(+) = D.DEPARTMENT_ID(+);
六、笛卡爾積
笛卡爾集會在下面條件下產生:
1、連線條件被遺漏
2、連線條件不正確
3、所有表中的所有行互相連線
-
--99語法
-
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME
-
FROM EMPLOYEES E
-
CROSS JOIN DEPARTMENTS D;
-
-
--92語法
-
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME
- FROM EMPLOYEES E, DEPARTMENTS D;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24851054/viewspace-2145429/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OCP(07):顯示來自多個表的資料Oracle
- 當查詢的資料來自多個資料來源,有哪些好的分頁策略?
- DBA_oracle日期函式-【來自多個專案】Oracle函式
- element table不顯示任何資料,無資料倒是顯示出無資料的了
- 顯示每個CPU的IDT資訊
- java實現將資料庫資料轉化成excel表格顯示出來Java資料庫Excel
- 資料顯示設定攻略
- Pandas 資料顯示不全?快來了解這些設定技巧! ⛵
- win10怎樣顯示隱藏的資料夾_win10隱藏檔案怎麼顯示出來Win10
- win10 如何顯示隱藏資料夾_win10 如何顯示隱藏的資料夾Win10
- win10隱藏的資料夾怎麼找出來 顯示隱藏資料夾步驟Win10
- sweetalert 快速顯示兩個提示, 第二個顯示不出的問題
- 英偉達:資料顯示顯示卡越好吃雞水平越高
- 資料庫下表和列名顯示資料庫
- win10怎麼顯示隱藏資料夾 win10顯示隱藏資料夾的方法Win10
- Juniper:資料顯示全球語音助理達到25億個
- window10怎麼顯示資料夾大小 win10 如何顯示資料夾大小Win10
- win10 如何顯示資料夾大小 win10如何直接顯示資料夾大小Win10
- SQLAlchemy Join Query 得到的不同資料行相同資料是同一個例項SQL
- ARF:調查顯示21%的網民不會分享自己的個人資料
- anki 模板cloze 多次挖空 點選一次顯示一次 點對應的顯示一個(自帶的會全部顯示出來)
- vscode中資料夾層級關係總是在一個資料夾顯示VSCode
- 獨立顯示卡與整合顯示卡的區別 獨立顯示卡與整合顯示卡哪個更好
- [20181207]sqlplus下顯示資料精度.txtSQL
- win10如何設定自動顯示資料夾大小_win10怎麼顯示資料夾的大小Win10
- CubeMx的部分配置顯示不出來
- gtx和rtx顯示卡的區別 gtx顯示卡和rtx顯示卡哪個好
- 圖表外掛Highcharts的動態化賦值,實現圖表資料的動態化設定顯示賦值
- element table 表頭顯示 tooltip
- navicat 表中文顯示? 解決
- 微信小程式資料資料繫結顯示NaN微信小程式NaN
- win10資料夾圖示不正常顯示怎麼辦_win10電腦資料夾圖示顯示異常的解決方法Win10
- Omdia:近眼顯示開啟顯示發展新未來
- 如何把SAP CRM產品主資料隱藏的batch ID欄位顯示出來資料隱藏BAT
- Excel2007工作表如何分視窗顯示?Excel2007工作表分視窗顯示的方法Excel
- win10u盤無法顯示資料夾怎麼辦_win10系統u盤資料夾無法顯示出來解決方法Win10
- 這個顯示器總算能完整顯示我的Java類了Java
- 外掛開發後臺顯示資料表,可以設定多表連結麼
- Android MPAndroidChart LineChart 顯示資料格式化Android