SQL關聯查詢

2021-07-09 02:48:28 字數 1560 閱讀 8484

一、關聯基礎:

♠ 連線查詢:查詢兩個或兩個以上資料表或檢視的查詢,通常建立在存在相互關係的父子表之間。

♠ 關聯查詢:查詢的結果集中的字段可能來自多張表。要從多張表中獲取資料時,就要找到這幾張表記錄的對應關係,然後建立聯絡後分別獲取。所以連線條件(指明表之間記錄的對應關係)在關聯查詢中十分關鍵。 n 張表關聯查詢,至少要有 n-1 個連線條件否則會出現笛卡爾積。這是乙個無用的結果集,對系統資源開銷大,甚至會使系統癱瘓。

例如:檢視 sales 部門的員工有誰

select e.ename,e.deptno from emp_rs e, dept_rs d where e.deptno = d.deptno and d.dname = 'sales'

二、關聯查詢:

♣ 內連線 --- 關聯連線的另一種方式,返回所有滿足連線條件的記錄

例如:檢視員工以及所在部門名稱

select e.ename,d.dname from emp_rs e join dept_rs d on e.deptno = d.deptno

♣ 外連線 --- 不僅返回滿足連線條件的記錄,還將返回不滿足連線條件的記錄

分三種:

左外連線:以左表為驅動表,其資料都要顯示,來自右表記錄中的字段,在結果集中若不滿足連線條件時,則值為 null

右外連線:以右表為驅動表。

全外連線:兩張表的資料都要查詢出來,哪邊不滿足條件哪邊值為 null

例如:檢視每個員工的資訊,以及所在部門的資訊

若沒有部門,也要講員工資訊列出來

左:select e.ename,e.job,e.deptno,d.dname,d.loc from emp_rs e left outer join dept_rs d on e.deptno = d.deptno

右:select e.ename,e.job,e.deptno,d.dname,d.loc from emp_rs e right outer join dept_rs d on e.deptno = d.deptno

全: select e.ename,e.job,e.deptno,d.dname,d.loc from emp_rs e full outer join dept_rs d on e.deptno = d.deptno

♣ 自連線 --- 通過將表用別名虛擬成兩個表的方式實現,可以是等值或不等值連線

當前表的記錄與當前表的其它記錄產生對應關係,不需要額外表的參與。自連線的設計目的是為了解決相同型別資料間有存在父子級關係的資料結構。(典型的是樹狀結構)

例如:檢視每個員工以及其上司。

自連線: select e.ename, m.ename from emp_rs e, emp_rs m where e.mgr = m.empno

內連線: select e.ename, m.ename from emp_rs e join emp_rs m on e.mgr = m.empno

左外連線:select e.ename, m.ename from emp_rs e left out join emp_rs m on e.mgr = m.empno

sql關聯查詢

1.內連線 是最普遍的一種連線方式,選出相連的兩張表都互相滿足連線條件的資料。寫法 select ainner joinb on a.id b.aid 其中inner可忽略 舉例 a表 查詢語句 select from a inner join b on a.id b.id。將a表的每一條資料拿出來...

SQL關聯查詢

select from a,b c 或者 select from a cross join b cross join c 注 沒有任何關聯條件,結果是 笛卡爾積,結果集 會很大,沒有意義,很少使用。select from a,b where a.id b.id 或者 select from a in...

SQL關聯查詢

從2張或多張表中,取出有關聯的資料 關聯查詢一共有幾種情況 內連線 inner join cross join 1 形式一 select 字段列表 from a表 inner join b表 on 關聯條件 where 其他篩選條件 說明 如果不寫關聯條件,會出現一種現象 笛卡爾積 關聯條件的個數 ...