主頁 > 資料庫 > Oracle入門2

Oracle入門2

2023-03-29 11:39:47 資料庫

單表查詢

# 查詢一個表的所有欄位
select * from 表名;
# 指定欄位查詢
select 欄位名(,連接) from 表名;
# 可以在指定字典查詢時,使用||進行拼接
select 欄位名||欄位名 from 表名;
# 欄位的值在顯示的時候可以進行簡單的數學運算(不局限于*)
select 欄位名*n from 表名;
# 可以使用別名,來修改欄位的顯示資料(只修改顯示結果,欄位名稱不會因為查詢而改變)
select 欄位名 as 別名 from 表名;


# where條件篩選
# Oracle中所有的系統關鍵字,欄位名,表名,在編譯的時候,都會被強制轉化為大寫
# 但是欄位的值不會,嚴格區分大小寫
select * from 表名 where 欄位名=欄位值;
# and 并列關系
select * from 表名 where 欄位名>n and 欄位名<m; # 查詢欄位值在n-m之間的資訊
# or 或
select * from 表名 where 欄位名>n or 欄位名=m; # 查詢欄位值大于n或者=m的資訊
# not 取反
select * from 表名 where not 欄位名=n;# 查詢欄位名不為n的資訊
# between A and B 閉區間
select * from 表名 where 欄位名 between A and B; # 查詢欄位名在A和B之間的資訊

空值處理

? 如果某一個欄位對應的欄位值為空,可以指定值為null的資料如何顯示

# 查詢欄位值為空的資訊
select * from 表名 where 欄位值 is null;
# 查詢欄位值不為空的資訊
select * from 表名 where 欄位值 is not null;

# nvl函式,可以對空值的顯示進行處理
select 欄位1,欄位2,nvl(欄位3,0) from 表名; 
# 查詢欄位1,2,3的資訊,欄位3的資訊如果為空就顯示為0

# nvl2函式
select 欄位1,欄位2,nvl2(欄位3,a,n) from 表名; 
# 查詢欄位1,2,3的資訊,欄位3的資訊如果為空則顯示n,如果非空則顯示a 

聚合函式

? 對多行資料進行統計的韓式,如果沒有指定資料統計的范圍則默認統計所有資料

# min 統計最小
select min(欄位) from 表名;
# max 統計最大
select max(欄位) from 表名;
# avg 統計平均 (floor 對小數進行向下取整)
select floor(avg(欄位)) from 表名; # 查詢欄位的平均值,并向下取整
# sum 統計和
select sum(欄位) from 表名;
# count 統計數量 (統計的是非空欄位值的數量)
select count(欄位) from 表名;
# 大部分用于統計指定資料的行數
# count(*)是sql陳述句的標準用法
select count(*) from 表名;

group by分組

? 根據 group by 后面的欄位將所有欄位值相同的資料進行分組

# 將欄位2的值相同的資料歸為一組,查詢每一組欄位1的平均值
select avg(欄位1) from 表名 group by 欄位2;
# 不局限于求平均
select max(欄位1),min(欄位1),sum(欄位1) from 表名 group by 欄位2;
# 資料在被分組之后,求從行資料編程組資料,不可以再查詢子資料
# 在使用 group by 之后,select之后,只可以出現杯分組的欄位本身和族中聚合函式

# group by 可以基于多個欄位進行分組
select count(*) from 表名 group by 欄位1,欄位2;

條件篩選(having)

? having用于篩選分組之后的資料(組資料),where用于篩選分組之前的資料(行資料)

# 對欄位2的值為1的資料進行篩選,并對欄位4的值大于20的資料進行分組,顯示這些組的欄位1的平均值
select avg(欄位1) from 表名 where 欄位2=1 group by 欄位3 having 欄位4>20;

排序(order by)

? 按照指定的欄位值,對資料進行排序

# 根據欄位1進行升序排序,asc可以忽略
select * from 表名 order by 欄位1 asc;
# 根據欄位1進行降序排序,desc不可以忽略
select * from 表名 order by 欄位1 desc;

# 多條件排序
# 排序的時候,必須要對排序欄位的空值進行處理,因為控制在排序時,會默認無窮大
# 根據欄位1和欄位2進行降序排序,并且處理欄位2出現空值的情況(遇到空值置0)
select * from 表名 order by 欄位1,nvl(欄位2,0) desc;

distinct 去重處理

select distinct 欄位1 from 表名 order by 欄位2;
# 對欄位2進行分組,并根據欄位2進行去重處理

sql陳述句的執行順序

from -> where -> group by -> having -> distinct -> select -> order by

不相關子查詢

? 將一條陳述句的查詢結果,作為另一條陳述句的查詢條件或者是資料來源

? 子查詢不需要外部查詢提供任何條件就可以獨立運行,外部查詢會等待子查詢執行完成之后,再執行

select * from 表名 where 欄位1>(select * from 表名 where 欄位2=n);
# 查詢欄位1的值大于欄位2等于n的資料的欄位1的值的資訊

# 不相關子查詢可以進行簡單的跨表查詢
# 如果可以確定子查詢的結果為唯一值,可以使用等號
# 如果不可以,則需要使用in
select * from 表2 where 欄位2-1 in
(select 欄位1-1 from 表1 where 欄位1-2=n);
#先查詢表1中欄位1-2等于n的資料的欄位1-1的值,然后再根據表2中欄位2-1在剛才查找到的欄位1-1中的資訊

別名的使用

? 別名除了在欄位后可以使用之外,還可以在其他地方使用,但是使用的時候,必須注意辨明的定義必須在別名的使用之前,

? 別名的使用于sql陳述句的執行順序息息相關

# 查詢表1 中的欄位1和欄位2的平均值,并且按照平均值降序排序(給平均值起別名)
select 欄位1,avg(欄位2) as 別名 from 表1 order by 別名 desc;

模糊查詢

? 根據匹配情況進行查詢

特殊符號 作用
% 表示匹配任意個任意字符
_ 表示匹配單個任意字符
# 查詢欄位1以a開頭的資訊
select * from 表1 where 欄位1 like 'a%';
# 查詢欄位1第二個字母為a的資訊
select * from 表1 where 欄位1 like '_a%';
# 查詢欄位1第二個字母為a 且倒數第二個字母為b 的資訊
select * from 表1 where 欄位1 like '_a%b_';

常用的單行函式

? dual 虛表:專門用來顯示資料的,本身并沒有資料

# 查看當前時間(sysdate)
select sysdate from dual;
# 查看日期
# add_months的引數也可以是我們表中的日期型別的欄位,也可以時我們使用to_date函式轉換所生成的日期型別資料
select sysdate,add_months(sysdate,1) from dual;
# 查詢2044年1月1日之后100個月的日期
select add_months(to_date('2044-01-01','YYYY-MM-DD'),100) from dual;
# last_day 獲取指定日期所在月的最后一天
select last_day(sysdate) from dual;

# 例子:
# emp表中有一個欄位,名為入職時間(hierdate),計算emp表中所有員工的工齡
# 1.日期型別的資料是可以直接相減,得到的時天數,除以365即可得到年數
select ename,floor((sysdate-firedate)/365) as 工齡 from emp;
# 2.使用to_char函式,將日期型別的資料轉換為字串型別
#    在Oracle中如果字串時由純數字組成的可以直接進行計算
select ename,to_char(sysdate,'YYYY')-to_char(hiredate,'YYYY') as 工齡 from emp;
# 3.使用extract函式,從指定日期中提取年份,也可以提取日,月,時,分,秒
select ename,extract(year from sysdate)-extract(year from firedate) as 工齡 from emp;

minus union 去交集和取并集

# 如果需要做union并集的查詢結果,并不是來自于同一張表
# 需要保證兩張表的欄位數量,欄位資料型別相同即可
# 最終顯示的查詢結果的欄位名稱以第一個表的欄位名稱為標準
select * from 表1 union select * from 表2; # 表1中添加表2有表1沒有的資料,輸出所有資料(表1)

select * from 表1 minus select * from 表2; # 表1中去掉表2有表1也有的資料,輸出剩余資料(表1)

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/548528.html

標籤:Oracle

上一篇:Oracle入門1

下一篇:干貨分享|袋鼠云數堆疊離線開發平臺在小檔案治理上的探索實踐之路

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more