oracle 資料庫內連線外連線,子查詢

2021-10-24 14:23:52 字數 1598 閱讀 5698

—多表查詢中的一些概念

—笛卡爾積

select * from emp e,dept d;

—等值連線

select * from emp e,dept d

where e.deptno=d.deptno;

—內連線

select * from emp e inner join dept d

on e.deptno=d.deptno;

—查詢出所有部門,以及部門下的 員工資訊【外連線】

select * from emp e right join dept d

on e.deptno=d.deptno;

—查詢出所有員工資訊,以及員工所屬部門【外連線】

select * from emp e left join dept d

on e.deptno=d.deptno;

—oracle中專用外連線

select * from emp e,dept d

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

—查詢出員工姓名,員工領導姓名

—自連線:自連線其實就是站在不同的角度把一張表看成多張表

select e2.ename,e1.ename

from emp e1,emp e2

where e1.empno=e2.mgr;

—查詢出員工姓名,員工部門名稱,員工領導名稱,員工領導部門名稱

select e2.ename,e1.ename,d2.dname,d1.dname

from emp e1,emp e2,dept d2,dept d1

where e1.empno=e2.mgr

and e2.deptno=d2.deptno

and e1.deptno=d1.deptno

—子查詢

—子查詢返回乙個值

—查詢出工資和』scott』一樣的員工資訊

select * from emp where sal in

(select sal from emp where ename =『scott』);

—子查詢返回乙個集合

—查詢出工資和10號部門任意員工一樣的員工資訊

select sal from emp where sal in(

select sal from emp where deptno=10);

—子查詢返回一張表

—查詢出每個部門最低工資和最低工資員工姓名,和該員工所在的部門名稱

—1.先查詢出每個部門的最低工資

select deptno,min(e.sal) msal from emp e

group by deptno;

—2.三表聯查的到最終結果

select t.deptno,t.msal,e.ename,d.dname

from (

select deptno,min(e.sal) msal

from emp e

group by deptno) t,dept d,emp e

where t.deptno=e.deptno

and t.msal=e.sal

and e.deptno=d.deptno;

Oracle資料庫 內連線 外連線 左連線

總結 內連線 僅僅顯示匹配的行 外連線 設法顯示不匹配的行,包括左 外 連線 右 外 連線 全 外 連線 左 外 連線 左表的行全顯示 右表不存在匹配時填null 右 外 連線 右表的行全顯示 左表不存在匹配時填null 全 外 連線 左連線和右連線的結果再做合併 union sql ansi的寫法...

Oracle資料庫 內連線 外連線 左連線

內連線 僅僅顯示匹配的行 外連線 設法顯示不匹配的行,包括左 外 連線 右 外 連線 全 外 連線 左 外 連線 左表的行全顯示 右表不存在匹配時填null left join 右 外 連線 右表的行全顯示 左表不存在匹配時填null right join 全 外 連線 左連線和右連線的結果再做合併...

資料庫 內連線 外連線 左連線

總結 內連線 僅僅顯示匹配的行 外連線 設法顯示不匹配的行,包括左 外 連線 右 外 連線 全 外 連線 左 外 連線 左表的行全顯示 右表不存在匹配時填null 右 外 連線 右表的行全顯示 左表不存在匹配時填null 全 外 連線 左連線和右連線的結果再做合併 union sql ansi的寫法...