国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

用SQL進行嵌套查詢

2024-07-21 02:13:25
字體:
來源:轉載
供稿:網友
  在select查詢語句里可以嵌入select查詢語句,稱為嵌套查詢。有些書上將內嵌的select語句稱為子查詢,子查詢形成的結果又成為父查詢的條件。
    子查詢可以嵌套多層,子查詢操作的數據表可以是父查詢不操作的數據表。子查詢中不能有order by分組語句。
4.4.1 簡單嵌套查詢
    在【命令編輯區】執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal>=(select sal from scott.emp where ename='ward');     ―――――――――――――――――――――――――――――――――――――
    單擊【執行】按鈕,出現如圖4.19所示的結果。
    【參見光盤文件】:/第4章/4.4/441.sql。

    在這段代碼中,子查詢select sal from scott.emp where ename='ward'的含義是從emp數據表中查詢姓名為ward的員工的薪水,父查詢的含義是要找出emp數據表中薪水大于等于ward的薪水的員工。上面的查詢過程等價于兩步的執行過程。
    (1)執行“select sal from scott.emp where ename='ward'”,得出sal=1250;
    (2)執行“select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal>=1250;”
4.4.2 帶【in】的嵌套查詢
    在【命令編輯區】執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal in (select sal from scott.emp where     ename='ward');
    ―――――――――――――――――――――――――――――――――――――
    單擊【執行】按鈕,出現如圖4.20所示的結果。
    【參見光盤文件】:/第4章/4.4/442.sql。

    上述語句完成的是查詢薪水和ward相等的員工,也可以使用【not in】來進行查詢。 4.4.3 帶【any】的嵌套查詢
    在【命令編輯區】執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >any(select sal from scott.emp where     job='manager');
    ―――――――――――――――――――――――――――――――――――――
    單擊【執行】按鈕,出現如圖4.21所示的結果。
    【參見光盤文件】:/第4章/4.4/443.sql。

    帶any的查詢過程等價于兩步的執行過程。
    (1)執行“select sal from scott.emp where job='manager'”,其結果如圖4.22所示。
    【參見光盤文件】:/第4章/4.4/443-1.sql。

    (2)查詢到3個薪水值2975、2850和2450,父查詢執行下列語句。
    【參見光盤文件】:/第4章/4.4/443-2.sql。
    ――――――――――――――――――――――――――――――――――――――
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >2975 or sal>2850 or sal>2450;     ――――――――――――――――――――――――――――――――――――――
4.4.4 帶【some】的嵌套查詢
    在【命令編輯區】執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal =some(select sal from scott.emp where     job='manager');
    ―――――――――――――――――――――――――――――――――――――
    單擊【執行】按鈕,出現如圖4.23所示的結果。
    【參見光盤文件】:/第4章/4.4/444.sql。
    帶some的嵌套查詢與any的步驟相同。
    (1)子查詢,執行“select sal from scott.emp where job='manager'”,其結果如圖4.22所示。
    (2)父查詢執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal =2975 or sal=2850 or sal=2450;     ―――――――――――――――――――――――――――――――――――――
    【參見光盤文件】:/第4章/4.4/444-2.sql。

    帶【any】的嵌套查詢和【some】的嵌套查詢功能是一樣的。早期的sql僅僅允許使用【any】,后來的版本為了和英語的【any】相區分,引入了【some】,同時還保留了【any】關鍵詞。
4.4.5 帶【all】的嵌套查詢
    在【命令編輯區】執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >all(select sal from scott.emp where     job='manager');
    ―――――――――――――――――――――――――――――――――――――
    單擊【執行】按鈕,出現如圖4.24所示的結果。
    【參見光盤文件】:/第4章/4.4/445.sql。

    帶all的嵌套查詢與【some】的步驟相同。
    (1)子查詢,結果如圖4.22所示。
    (2)父查詢執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >2975 and sal>2850 and sal>2450;
    ―――――――――――――――――――――――――――――――――――――
    【參見光盤文件】:/第4章/4.4/445-2.sql。
4.4.6 帶【exists】的嵌套查詢
    在【命令編輯區】執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp,scott.dept where exists (select * from scott.emp where     scott.emp.deptno=scott.dept.deptno);
    ―――――――――――――――――――――――――――――――――――――
    單擊【執行】按鈕,出現如圖4.25所示的結果。
    【參見光盤文件】:/第4章/4.4/446.sql。

4.4.7 并操作的嵌套查詢
    并操作就是集合中并集的概念。屬于集合a或集合b的元素總和就是并集。 在【命令編輯區】執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
     (select deptno from scott.emp) union (select deptno from scott.dept);     ―――――――――――――――――――――――――――――――――――――
    單擊【執行】按鈕,出現如圖4.26所示的結果。
    【參見光盤文件】:/第4章/4.4/447.sql。

4.4.8 交操作的嵌套查詢
    交操作就是集合中交集的概念。屬于集合a且屬于集合b的元素總和就是交集。 在【命令編輯區】執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    (select deptno from scott.emp) intersect (select deptno from scott.dept);     ―――――――――――――――――――――――――――――――――――――
    單擊【執行】按鈕,出現如圖4.27所示的結果。
    【參見光盤文件】:/第4章/4.4/448.sql。

4.4.9 差操作的嵌套查詢
    差操作就是集合中差集的概念。屬于集合a且不屬于集合b的元素總和就是差集。
    在【命令編輯區】執行下列語句。
    ―――――――――――――――――――――――――――――――――――――
    (select deptno from scott.dept) minus (select deptno from scott.emp);
    ―――――――――――――――――――――――――――――――――――――
    單擊【執行】按鈕,出現如圖4.28所示的結果。
    【參見光盤文件】:/第4章/4.4/449.sql。

    并、交和差操作的嵌套查詢要求屬性具有相同的定義,包括類型和取值范圍。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 寿阳县| 三穗县| 江都市| 通榆县| 黄骅市| 宁强县| 巴林左旗| 平江县| 朝阳市| 西乌| 嵊泗县| 宕昌县| 大同县| 象山县| 建湖县| 凉城县| 阜平县| 泸溪县| 大丰市| 历史| 句容市| 黔江区| 阿克苏市| 隆尧县| 夏津县| 上思县| 云安县| 九龙县| 军事| 承德市| 普兰县| 尼木县| 普定县| 广州市| 巴林左旗| 阜平县| 蛟河市| 宜兴市| 溆浦县| 合山市| 丽水市|