oracle的多表查詢與表的連線

2022-07-17 04:39:10 字數 1257 閱讀 6057

一、多表查詢

在任何多表查詢中一定會產生笛卡爾積的問題,但是,笛卡爾積產生的結果對於使用者來說是毫無意義的,是重複的無用資料。因此我們需要消除笛卡爾積,那麼在多表查詢的時候,就必須要有關聯字段。

範例:emp.deptno=dept.deptno;兩張表中的關聯欄位將消除笛卡爾積

select * from emp, dept where emp.deptno=dept.deptno;  

多表的查詢,建議多做些習題增加熟練度。

二、表的連線

內連線:之前利用了where子句消除了笛卡爾積,這個是內連線。只有滿足條件的資料才會顯示。

外連線:分為左外連線、右外連線、全外連線。

為了更好的觀察到連線的區別,現在已經在dept表中提供了乙個沒有雇員的部門40,同時在emp表中增加乙個沒有部門的雇員。

insert into emp (empno,ename,deptno) values(8989,'hello', null);

emp表目前如下:hello這個雇員沒有部門

觀察一:內連線實現效果

此時沒有部門的雇員以及沒有雇員的部門資訊都沒有出現,因為null的判斷不滿足。

觀察二:使用左(外)連線,希望所有的雇員資訊都顯示出來,即便他沒有部門。

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

from emp e, dept d 

where e.deptno = d.deptno(+);

此時出現了沒有部門的雇員。也就是左表的資料全部顯示了。

觀察三:使用右(外)連線,將所有的部分資訊都顯示出來。

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

from emp e, dept d

where e.deptno(+) = d.deptno;

內連線指的就是所有滿足關聯條件的資料出現,不滿足的不出現。外連線就是指定一張資料表中的資料全部都顯示,但是沒有對應的其他表資料,內容為null。

Oracle的多表查詢與子查詢

oracle的多表查詢與子查詢 子查詢 在乙個查詢的內部還包括另乙個查詢,則此查詢稱為子查詢。sql的任何位置都可以加入子查詢。自連線其實就是站在不同的角度把一張表看成多張表。範例 查詢比 7654 工資高的雇員 分析 查詢出 7654 員工的工資是多少,把它作為條件 範例 查詢出比雇員 7654 ...

mysql的連表查詢 MySQL 連表查詢

連表查詢 連表查詢通常分為內連線和外連線。內連線就是使用inner join進行連表查詢 而外連線又分為三種連線方式,分別是左連線 left join 右連線 right join 全連線 full join 下來我們一起來看一下這幾種連線方式的區別及基礎用法。內連線inner join inner...

Oracle多表查詢的優化

1,重複性查詢 當你向oracle提供乙個sql的時候,oracle會首先在相應的記憶體中查詢這條語句,如果匹配到,就能直接返回結果,這樣就能節省記憶體和提高資料訪問效率。但是匹配sql語句需要注意以下幾點 1 字元級的比較 sql語句和共享池中的語句必須完全相同才能匹配完整,尤其注意大小寫和空格 ...