oracle基本使用 5 表的連線 子查詢

2021-09-30 20:37:25 字數 1355 閱讀 9065

在熟悉了表的增刪改查,表中資料的增刪改查,本文將著重闡述如何進行表連線以及子查詢。

所謂表連線,就是多張表在一起做笛卡爾乘積,它有多種形式;所謂子查詢就是把乙個sql查詢的結果作為另外乙個sql執行之前的輸入。

# 在windows命令列下連線scott

sqlplus scott/tiger

# 通常意義上的表連線

select * from emp e, dept d; --emp表有14行記錄、dept表有4行記錄,做笛卡爾乘積,共有56行記錄

select * from emp e, dept d where e.deptno=d.deptno -- 查詢出了emp中使用者對應的部門資訊

# 內連線

select * from emp e inner join dept d on e.deptno=d.deptno; -- 查詢出了emp中使用者對應的部門資訊

# 左外連線

insert into dept(deptno) values(50); --向dept表中加入一條只有deptno的空記錄

insert into emp(empno) values(16); --向dept表中加入一條只有empno的空記錄

select * from emp e left join dept d on e.deptno=d.deptno; --以join左邊的表為主,不會查出右邊表的空記錄,但會查詢左邊表的空記錄

# 右外連線

select * from emp e right join dept d on e.deptno=d.deptno; --以join右邊的表為主,不會查出左邊表的空記錄,但會查詢右邊表的空記錄

# 全外連線

select * from emp e fulljoin dept d on e.deptno=d.deptno; --以join兩邊的表為主,既會查出左邊表的空記錄,也會查詢右邊表的空記錄

再看了表連線之後,我們執行以下語句,繼續熟悉子查詢:

# 查詢編號為7788的員工所在部門名稱和位址

select dname, loc from dept where deptno=(select deptno from emp where empno=7788);

# 查詢工資最高的員工資訊

select * from emp where sal >= all (select nvl(sal,0) from emp );

# 查詢編號為7788的員工的領導資訊

select * from emp where empno=(select mgr from emp where empno=7788);

以上就是我們常用的表連線和子查詢語句。

oracle表的連線

表連線操作有內連線和外連線兩種 1 內連線 也稱等值連線或自然連線,內連線是從結果表中刪除與其他被連線表中沒有匹配行的所有元組,所以當匹配條件不滿足時內連線可能會丟失資訊。例如 select from emp e,dept d where e.deptno d.deptno 2 外連線 外連線分為三...

Oracle表連線方式

實用記憶方法 在哪邊,哪邊就是外來鍵,該錶的資料就 少 無 那邊檢索的就是全表資料。oracle 8i,9i 表連線方法。一般的相等連線 select from a,b where a.id b.id 這個就屬於內連線。對於外連線 oracle中可以使用 來表示,9i可以使用left right f...

oracle表連線(二)

各類連線驅動順序區別 1.巢狀迴圈連線 select leading t1 use nl t2 from t1,t2 where t1.id t2.t1 id and t1.n 19 select leading t2 use nl t1 from t1,t2 where t1.id t2.t1 i...