oracle基本使用【5】表的連接、子查詢

在熟悉了表的增刪改查,表中數據的增刪改查,本文將着重闡述如何進行表連接以及子查詢。
所謂表連接,就是多張表在一起做笛卡爾乘積,它有多種形式;所謂子查詢就是把一個sql查詢的結果作爲另外一個sql執行之前的輸入。

1 系統、環境和前提約束

2 操作

  • 以系統管理員啓動cmd命令行

     

    以系統管理員啓動cmd

     

    表連接分爲以下幾種方式:

# 在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);

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

 

發佈了174 篇原創文章 · 獲贊 21 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章