Oracle 資料庫基礎學習 (六) 子查詢

来源:http://www.cnblogs.com/xiaoxing/archive/2016/03/31/5339820.html
-Advertisement-
Play Games

子查詢在一個select中出現多個嵌套查詢語句 1、在where子句中使用子查詢(一般返回"單行單列" "單行多列" "多行單列"(可以提供in、any、all )) 示例1:查找低於平均工資的雇員信息(返回單行單列) 示例2:查找出公司最早雇佣的雇員信息(返回單行單列) 示例3:與scott從事同 ...


子查詢在一個select中出現多個嵌套查詢語句

 

1、在where子句中使用子查詢(一般返回"單行單列" "單行多列" "多行單列"(可以提供in、any、all ))

示例1:查找低於平均工資的雇員信息(返回單行單列

select * from emp where sal < (select avg(sal) from emp)

示例2:查找出公司最早雇佣的雇員信息(返回單行單列

select * from emp where hiredate =(select min(hiredate) from emp) 

示例3:與scott從事同一個工作,且工資相同(返回多行單列)--但是一般不這麼使用

select * from emp 
where ((job, sal)= (select job, sal from emp where ename='SCOTT')) and (ename != 'SCOTT')

 

在子查詢返回多行單列的時候,可以使用in、any、all 進行比較

⑴   in和not in(不能與null一起使用)的用法

示例:查詢和職位是MANAGER工資不同的員工信息

select * from emp 
where sal not in (select sal from emp where job='MANAGER') ;

 

⑵  any的用法(  “>any”大於最小的 “<any”小於最大的)

示例1:查詢和職位是MANAGER工資相同的員工信息(”=any”和in一樣用法)

select * from emp 
where sal =any (select sal from emp where job='MANAGER') ;

 

示例2:查詢比職位是MANAGER工資最低工資還高的員工信息(”>any”就是比最小的大)

select * from emp 
where sal >any (select sal from emp where job='MANAGER') ;

 

示例3:查詢比職位是MANAGER工資最高工資還低的員工信息(”<any”就是比最大的小)

select * from emp 
where sal <any (select sal from emp where job='MANAGER') ;

 

 

⑶  all的用法(“>all”比最大的大 “<all”比最小的小)

示例1:查詢比職位是MANAGER工資都高的員工信息(”>all”就是比最大的還大)

select * from emp 
where sal >all (select sal from emp where job='MANAGER') ;

 

 

示例2:查詢比職位是MANAGER工資都低的員工信息(”<all”就是比最小的還小)

select * from emp 
where sal <all (select sal from emp where job='MANAGER') ;

 

 

2、在having子句中使用子查詢,使用的情況只有在子查詢返回單行單列,並且使用統計函數的情況

示例1:查詢出高於公司平均工資的員工的職位名稱,職位人數,平均工資

select job, count(empno), avg(sal)
from emp
group by job 
having avg(sal) > (select avg(sal) from emp) ;

 

 

3、在select子句中使用子查詢(返回單行單列,不過一般不使用)

示例1:查詢每個雇員的編號、姓名、職位、部門名稱

使用多表查詢:

select e.empno, e.ename, e.job, d.dname
from emp e, dept d
where e.deptno=d.deptno(+) ;

 

使用select子查詢:

select e.empno, e.ename, e.job, (select dname from dept d where e.deptno=d.deptno) dname
from emp e ;   

 

 

4、在from子句中使用子查詢(返回多行多列)

示例1:查詢每個部門名稱、位置、部門人數

使用多表查詢:

 

select d.dname, d.loc, count(empno)
from emp e, dept d
where e.deptno=d.deptno(+)
group by d.dname, d.loc ;

 

 

 

 

使用from子查詢:

  |-查詢部門的名稱、位置、編號

select deptno, dname, loc from dept ; 

 

  |-查詢部門的編號和部門人

select  deptno, count(empno)
from emp
group by deptno ;

 

  |-實現在from的子查詢,相當與將兩張表做多表連接查詢

select d.dname, d.loc, temp.count
from dept d, (select deptno, count(empno) count from emp group by deptno ) temp
where d.deptno=temp.deptno(+) ;

 

 

 

註意:1、當子查詢返回單行單列、多行單列、單行多列的情況,在where子句中實現子查詢

   2、having子句中使用子查詢,使用的情況只有在子查詢返回單行單列,並且使用統計函數的情況

     3、當子查詢返回多行多列的情況,在from子句中實現子查詢

     4、一般不在select子句中實現子查詢

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如果手機沒有root,資料庫文件是無法查看到的,不方便調試。 最好的辦法是把資料庫寫進SD卡。 修改的地方有兩處: 1.在你的helper類中把資料庫文件名稱 DATABASE_NAME 由原來的一個文件名,修改成路徑的形式。 修改前:DATABASE_NAME = "demo.db" 修改後:DA ...
  • 這篇文章介紹的是一個簡單而又實用的小方法。 我想對於登陸時的一些效果大家應該都不會陌生。 今天就介紹一下,當開始輸入TextField文本時鍵盤彈出TextField伴隨鍵盤移動的實現。 先看一下演示效果 我們對TextFiel進行約束。約束內容如下⬇️ 約束結束後,我們需要做一個很重要的是,就是把 ...
  • CoreData資料庫遷移操作步驟,操作是基於Xcode7. 1.添加新的資料庫.選中當前資料庫版本:Editor->Add Model Verson,創建一個新的資料庫版本. 2.Command + N,創建一個映射模型.iOS->CoreData->Mapping Model->Next,選擇舊 ...
  • 《android註冊頁面》博客中main.xml代碼中每個組件定義的屬性有重覆的部分,為了避免繁瑣可以把各個組件重覆的屬性定義到一個文件中:res/values/style_test.xml源碼: <?xml version="1.0" encoding="utf-8"?><resources> < ...
  • 從昨天下午接到新任務,要採集一個法院網站得所有公告,大概是需要採集這個網站得所有公告列表裡得所有txt內容,txt文件裡邊是一件件赤裸裸得案件,記錄這案由,原告被告等相關屬性(不知道該叫什麼就稱之為屬性吧,汗),把這些文件放到本地某個目錄,並把一個案件作為一條數據放入資料庫中。本以為很輕鬆得用Jso ...
  • 問題場景 最近在項目中遇到了對每一個類型進行求和並且求該類型所占的比例,當時考慮求出每種類型的和,併在java中分別對每一種類型的和與總和相除求出所占比例。後來,想到這樣有點麻煩,並且項目中持久層使用的是iBatis框架,所有考慮從SQL方面進行入手來簡化這個問題。 後來SQL的解決方法就為: 看到 ...
  • 一、主鍵自增長: 1) oracle: 使用序列實現,比如創建序列,起點是1000,步進是1: create sequence myseq increment by 1 start with 1000 增加記錄: insert into student(stuId,stuName) values(m ...
  • 1.Question Description: 1.1 version: mysql-5.7.11-64 1.2 form: zip file 1.3 >mysqld --install (successfully) 1.4 you create a directory called "data" ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...