Oracle多表關聯查詢

2021-09-03 01:44:26 字數 2411 閱讀 5890

select e.empno, e.ename, d.deptno, d.dname

from emp e, dept d

where e.deptno = d.deptno;

在上述sql語句中先執行 from 後執行select和where  如果使用了別名的話以後引用表都要使用別名不然會報錯  別名最長為30個字元 

內連線select e.empno, e.ename, d.deptno, d.dname

from emp e

join dept d

on e.deptno = d.deptno

from 後直接接兩張表名 系統會將兩張表做笛卡爾乘積操作  會生成一張笛卡爾積中間表 (這張表相當於兩個集合做乘操作 參考兩個集合相乘) 如果兩張表都很大的話中間表就會很大 會占用很大的記憶體空間

如果使用join操作 會優先判斷 是否符合 join 後所接on的條件  使生成結果不會太大

外連線  分為left outer join          right outer join      full outer join

內鏈結只能查詢到符合條件的結果  左外連線可以使某一張表或兩張表的資料完全顯示出來

left join 和right join還可以用(+)來代替

(+)應放在缺少相應資訊的一邊

左連線的主表是join左邊的表 為主表  內容會全部顯示

select e.empno, e.ename, d.deptno, d.dname from emp e left join dept d on e.deptno = d.deptno ; 

左外鏈結的加號寫法

上圖為執行之後的結果  由**可知  第十五條資料 的e.deptno 為空不符合 連線條件  但還是顯示出來了

右連線右連線的主表是join右邊的表 為主表  內容會全部顯示

select e.empno, e.ename, d.deptno, d.dname from emp e right join dept d on e.deptno = d.deptno ;

右外鏈結的加號寫法

dept表中deptno = 40 的 在emp表中沒有與之對應的資料 但在右連線中可以完全顯示dept表中的資料

完全外連線

相當於做左連和右連後去重值

自然連線

會對錶總具有相同列明的做自動連線

select *  from emp e natural join dept   ;

限定多 不實用  僅做了解

自連線自己和自己做連線 以scott 的emp表為例  mgr欄位為該員工的 領導編號 該表中存在主從關係 

又因要查詢所有員工的領導及其編號所以在下面用左連線

select em2.empno 領導的員工編號,

em2.ename 領導姓名,

em1.empno 員工導編號,

em1.ename 員工姓名,

em1.mgr   對應領導的員工編號

交叉連線  

做兩張表的笛卡爾積

select * from emp cross join dept

基本用不到  作為了解

總結一下

內連線 

只篩選符合條件的

外鏈結分為左外右外和完全外鏈結

左外顯示符合條件的 以及左表不符合條件的  右表只有符合條件的

剩下兩種略

自連線自己和自己做連線  因為用的都是一張表(本身)所以一定要用別名

多表關聯查詢

表別名 多個表之間存在同名的列,則必須使用表明來限制列的引用 內連線 自連線 內連線就是關聯的兩張或多張表中,根據關聯條件,顯示所有匹配的記錄,匹配不上的,不顯示 自連線,就是把一張表取兩個別名,當做兩張表來使用,自己和自己關聯。select columns list from table name...

JPA多表關聯查詢

作用 就是實現使用乙個實體類物件操作或者查詢多個表的資料。回顧 配置多表聯絡查詢必須有兩個步驟 1.在實體類裡面建立表與表之間的關係。2.配置關聯關係,jpa使用註解配置 需求 指定oid查詢客戶的資訊 公司資訊 同時也查詢關聯的聯絡人資訊 配置步驟 通過客戶找聯絡人,所以再customer實體類配...

ABAP 多表關聯 查詢

inner join 等值連線 只返回兩個表中聯結字段相等的行 left join 左聯接 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 right join 右聯接 返回包括右表中的所有記錄和左表中聯結字段相等的記錄 inner join 語法 inner join 連線兩個資料表的用法 s...