orcl 複雜查詢

来源:https://www.cnblogs.com/su-root/archive/2018/10/06/9741197.html
-Advertisement-
Play Games

測試環境: create table bqh6 (xm varchar2(10),bmbh number(2),bmmc varchar2(15),gz int);insert into bqh6 values ('張三',01,'技術支持',3500);insert into bqh6 value ...


測試環境:

create table bqh6 (xm varchar2(10),bmbh number(2),bmmc varchar2(15),gz int);
insert into bqh6 values ('張三',01,'技術支持',3500);
insert into bqh6 values ('李四',02,'研發',4500);
insert into bqh6 values ('王五',03,'外業測繪',5000);
insert into bqh6 values ('小崔',02,'研發',8000);
insert into bqh6 values ('錢六',01,'技術支持',5500);
insert into bqh6 values ('趙二',03,'外業測繪',4500);
select * from bqh6

create table bqh7 (xm varchar2(10),bmbh number(2),bmmc varchar2(15), gwjb varchar2(10));

insert into bqh7 values ('張三',01,'技術支持','C');
insert into bqh7 values ('李四',02,'研發','C');
insert into bqh7 values ('王五',03,'外業測繪','A');
insert into bqh7 values ('小崔',02,'研發','A');
insert into bqh7 values ('錢六',01,'技術支持','A');
insert into bqh7 values ('趙二',03,'外業測繪','B');
select * from bqh7

分組函數:max, min, avg, sum, count

查詢工資最高和最低的人的姓名:

select '最高的:'||xm,gz from bqh6 where gz=(select max(gz)from bqh6) union all
select '最低的:'||xm,gz from bqh6 where gz=(select min(gz)from bqh6)

查詢所有工資低於平均工資的人的信息:

select * from bqh6 where gz< (select avg(gz) from bqh6)

給所有低於平均工資的員工薪水上漲10%:

update bqh6 set gz=gz+(select avg(gz) from bqh6)*0.1 where gz< (select avg(gz) from bqh6);

commit;

select * from bqh6;

groupt by用於對查詢結果分組統計

查詢每個部門的平均工資和最高工資:

select avg(gz),max(gz),bmmc from bqh6 group by bmmc;

having子句用於限制分組結果顯示

查詢平均工資低於5000的部門名稱和它的平均工資:

select bmmc,avg(gz) from bqh6 group by bmmc having avg(gz)<5000

註意:

分組函數(max,min,avg,count)只能出現在選擇列表(select後),having和order by子句中;

如果select語句中同時包含group by,having和order by,他們的順序必須是group by,having和order by (先分組→再抑制結果顯示→最後分組);

在選擇列中如果有列,表達式和分組函數,那麼這些列和表達式必須有一個出現在group by子句中,否則就會報錯。

----------------------------------------------------------------------------------

多表查詢

 查詢雇員姓名及工資和所在部門的的崗位級別:

select a.xm,a.gz,b.gwjb from bqh6 a,bqh7 b where a.xm=b.xm

笛卡爾積,原則:多表查詢的條件是至少不能少於表的個數-1

查詢部門編號為10的部門名稱、雇員姓名和工資:

select a.xm,b.bmbh,b.bmmc,a.gz from bqh6 a,bqh7 b where a.xm=b.xm and b.bmbh=2;

 查詢雇員姓名、工資以及所在部門名稱並按部門排序

select a.xm,b.bmbh,b.bmmc,a.gz from bqh6 a,bqh7 b where a.xm=b.xm order by b.bmmc

order by 預設升序(asc),降序(desc)

子查詢

 .單行子查詢

查詢與張三同一部門的所有雇員姓名:

select a.xm from bqh6 a where a.bmmc=(select bmmc from bqh7 b where b.xm='張三')

 多行子查詢

 查詢部門編號為3的雇員姓名、部門名稱、工資:

all在多行子查詢的使用:與每一個內容相匹配

查詢工資比部門編號3的所有員工的工資高的雇員姓名、工資和部門名稱:

>ALL:比子查詢中返回的最大的記錄還要大

<ALL:比子查詢中返回的最小的記錄還要小

①select xm,bmmc,gz from bqh6 where gz>all (select max(gz) from bqh6 where bmbh=3)

②select xm,bmmc,gz from bqh6 where gz>(select max(gz) from bqh6 where bmbh=3)

②的效率要高於①,因為①會逐條的對比,而②直接比較結果。

IN在子查詢的使用:用於指定一個子查詢的判斷範圍

查詢部門編號為1的雇員姓名、部門名稱及工資信息。

select * from bqh6 where gz in(select gz from bqh6 where bmbh=1);

 any在多行子查詢的使用:與每一個內容相匹配,有三種匹配形式

①=any:功能與IN操作符是完全一樣的

②>any:比子查詢中返回記錄最小的還要大的數據

 

③<any:比子查詢中返回記錄最大的還要小的數據

 

FROM子句中使用子查詢一般都是返回多行多列,可以將其當作一張數據表:

 查詢出每個部門的編號,名稱,部門人數,平均工資

select a.xm,a.bmbh,a.bmmc,b.部門人數,b.平均工資 from bqh6 a,
(select bmbh bh,count(xm) 部門人數,avg(gz) 平均工資 from bqh6 group by bmbh) b
where a.bmbh=b.bh

註意:

當在from子句中使用子查詢時,該子查詢會被作為一個視圖對待,因此叫做內嵌視圖,當在from子句中使用子查詢時,必須給子查詢指定別名。給列取別名可以使用as,但是給表、視圖、子查詢起別名不可以用as

分頁查詢:ROWNUM為顯示每一條記錄動態自動生成行號。

 為顯示每一條記錄動態自動生成行號

查詢結果就會多出一列,rn,表示rownum,行號數,是Orcl分配的。

查詢前條記錄:

查詢前3-6條記錄:

Oracle的分頁是最複雜的,要使用2次子查詢,但效率也是最高的,因為內部使用了2分查找的原理。MySql的分頁是最簡單的,直接一個limit就實現了 


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

-Advertisement-
Play Games
更多相關文章
  • 步驟一:安裝依賴 步驟二:下載php安裝包 步驟三:編譯源代碼 步驟四:複製文件 步驟五:啟動php-fpm ...
  • LinkIt 7697是一款多功能且價格親民的開發板,可用來連接網路或你的各項裝置,同時提供Wi-Fi及藍芽兩種聯機功能。此開發板採用MediaTek MT7697晶元,比起其他類似的Wi-Fi/藍芽開發板所採用的ESP32 微控制器,雖然略遜一籌,卻仍遠勝Arduino Uno。在Arduino ...
  • date的使用 一、常用時間格式 二、-d指定字元串所描述的時間 三、-s 設定時間 四、顯示日期換行 ...
  • 1.準備工作 https://www.cnblogs.com/dddyyy/p/9746942.html 上面這篇博客講瞭如何安裝linux 你想安裝的jdk(對應版本的jdk) 連接Linux的軟體 上傳文件到Linux的軟體 2.使用Xshell 在虛擬機中使用 ip addr 看自己Linux ...
  • 一、環境及準備工作 1、主機系統:本人系統是Windows10家庭中文版 2、虛擬機軟體:VMware Workstation 14 Pro 虛擬機版本號:14.1.1 build-7528167 虛擬機下載網址:https://my.vmware.com/web/vmware/details?pr ...
  • 步驟一、安裝Seafile依賴包 步驟二、安裝pip和python庫 啟動 mariadb服務: 配置 mariadb: 步驟四、安裝Seafile網盤程式(一定要下載樹莓派版本,其他版本是沒辦法運行的) 下載Seafile網盤: 創建Seafile網盤文件夾: 安裝Seafile網盤: 啟動 Se ...
  • 1.準備工作: Linux系統: 可以去 https://www.centos.org/download/ 下載DVD ISO版 虛擬機 2.VMware配置 3.Linux系統安裝 4.重啟,安裝成功 ...
  • 前幾天剛接手一個MySQL數據,操作系統為Ubuntu 16.04.5 LTS, 資料庫版本為5.7.23-0ubuntu0.16.04.1(APT方式安裝的MySQL)。這個操作系統下的MySQL的配置文件my.cnf很多地方都讓人有點不適應(跟之前的MySQL環境有些出入,之前都是維護RHEL、... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...