Oracle数据库基础学习
Oracle數(shù)據(jù)庫(kù)基礎(chǔ)學(xué)習(xí)
個(gè)人之前就學(xué)習(xí)過 mysql sqlserver 但筆記沒有在CSDN上可能會(huì)有些跳躍~
不明確地方可以看這位大佬的筆記~不是我的.
Oracle 簡(jiǎn)介
OracleDatabase 又名Oracle RDBMS , 是甲骨文公司的一款關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。(世界上最好的數(shù)據(jù)庫(kù)系統(tǒng);(歷史悠久))
優(yōu)點(diǎn):
支持多用戶的高性能的事務(wù)處理 ,在保持?jǐn)?shù)據(jù)安全性完整性方面 性能卓越~ ,支持分布式數(shù)據(jù)庫(kù)和分布處理
具有可移植性,Oracle 可以在 window Linux 等多個(gè)操作系統(tǒng)上使用~ (SqlServer微軟的數(shù)據(jù)庫(kù)只能在window上使用!)
缺點(diǎn): 收費(fèi)! 服務(wù)收費(fèi)… 后期的安裝維護(hù)也是收費(fèi)的… 中小型公司一般不會(huì)使用~
RDBMS:關(guān)系型數(shù)據(jù)庫(kù).
多個(gè)表數(shù)據(jù)之同存在著關(guān)系 , 在這些表上的數(shù)據(jù)操作依賴于關(guān)系 (關(guān)系用來(lái)描述多個(gè)表之間的數(shù)據(jù)依存,包括了一對(duì)一 、一對(duì)多 、多對(duì)多的關(guān)系)
這些關(guān)系在 Oracle數(shù)據(jù)庫(kù)中表現(xiàn)為主鍵、外鍵這些約東條件…
RDBMS就是一個(gè)建立在這些關(guān)系模型基礎(chǔ)上的 , Oracle從7.3的版本就完全支持關(guān)系型數(shù)據(jù)庫(kù)
Mysql SqlServer db2 Oracle 都屬于關(guān)系型數(shù)據(jù)庫(kù);
Oracle基本概念:
Oracle 的概念:個(gè)人剛開始學(xué)的時(shí)候有點(diǎn)難~
主要是因?yàn)閷W(xué)習(xí)過Mysql SqlServer 后, 與Oracle 有很多不同概念理論, 與之前有不同; 建議自廢武功!不要想其它的數(shù)據(jù)庫(kù)在學(xué)習(xí);
Oracle數(shù)據(jù)庫(kù)
oracle數(shù)據(jù)庫(kù) 包含 邏輯結(jié)構(gòu) 和 物理結(jié)構(gòu)
物理結(jié)構(gòu) 是指數(shù)據(jù)庫(kù)是物理存儲(chǔ)數(shù)據(jù)的集合包括: 數(shù)據(jù)文件ORA或者DBF,控制文件,聯(lián)機(jī)文件,日志文件,參數(shù)文件…
邏輯結(jié)構(gòu) 是指描述數(shù)據(jù)組織方式的 一組邏輯概念及它們之間的關(guān)系;
oracle數(shù)據(jù)庫(kù)的概念和其他數(shù)據(jù)庫(kù)概念有些不一樣:
mysql數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)的過程是–創(chuàng)建庫(kù)–創(chuàng)建表
而oracle創(chuàng)建數(shù)據(jù)庫(kù)的過程是–創(chuàng)建一個(gè)表空間–創(chuàng)建一個(gè)用戶–由用戶去創(chuàng)建/管理 表。所以oracle數(shù)據(jù)庫(kù)和其他數(shù)據(jù)庫(kù)是有不同之處的。
可以這樣理解,oracle是一個(gè)大的數(shù)據(jù)庫(kù),由用戶來(lái)管理的。
(所以使用時(shí)候必須首先創(chuàng)建數(shù)據(jù)庫(kù), 才能使用Oracle ; 可以在安裝時(shí)候同時(shí)創(chuàng)建數(shù)據(jù)庫(kù)~ )
(一般在完成Oracle數(shù)據(jù)庫(kù)安裝并創(chuàng)建Oracle 實(shí)例后, 就會(huì)自動(dòng)建立多個(gè) 表空間 系統(tǒng)表 system…用戶) 不同的用戶就可以理解為不同的庫(kù)!
全局?jǐn)?shù)據(jù)庫(kù)名
全局?jǐn)?shù)據(jù)庫(kù)名 是用于區(qū)分一個(gè)數(shù)據(jù)庫(kù)的標(biāo)識(shí),在安裝數(shù)據(jù)庫(kù) 創(chuàng)建數(shù)據(jù)庫(kù) … 需要使用的。
它由: 數(shù)據(jù)庫(kù)名稱+域名 構(gòu)成類似于網(wǎng)絡(luò)中的域名; 使數(shù)據(jù)庫(kù)的命名在整個(gè)網(wǎng)絡(luò)環(huán)境中唯一 。
數(shù)據(jù)庫(kù)名稱:
數(shù)據(jù)庫(kù)名就是一個(gè)數(shù)據(jù)庫(kù)的標(biāo)識(shí)(唯一),在數(shù)據(jù)庫(kù)安裝或創(chuàng)建完成之后聲明; (就是安裝數(shù)據(jù)庫(kù)時(shí)候的 起的名字~ )
(不建議修改會(huì)很繁瑣, 因?yàn)?#xff0c;數(shù)據(jù)庫(kù)名還被寫入控制文件中,控制文件是以二進(jìn)制型式存儲(chǔ)的, 用戶無(wú)法修改控制文件的內(nèi)容。)
假設(shè)用戶修改了參數(shù)文件中的數(shù)據(jù)庫(kù)名,但是在Oracle啟動(dòng)時(shí)。
由于參數(shù)文件中的DB_NAME與控制文件中的數(shù)據(jù)庫(kù)名不一致,導(dǎo)致數(shù)據(jù)庫(kù)啟動(dòng)失敗,將返回ORA-01103錯(cuò)誤。
查詢當(dāng)前數(shù)據(jù)庫(kù)名 : select name from v$database; (建議system登錄狀態(tài);)
域名:
在分布式數(shù)據(jù)庫(kù)系統(tǒng)中,不同版本的數(shù)據(jù)庫(kù)服務(wù)器之間,不論運(yùn)行的操作系統(tǒng)是unix或是windows
各服務(wù)器之間都可以通過數(shù)據(jù)庫(kù)鏈路進(jìn)行遠(yuǎn)程復(fù)制,數(shù)據(jù)庫(kù)域名主要用于分布式環(huán)境中的復(fù)制。
什么時(shí)候使用域 : 1.在oracle分布式環(huán)境中,兩個(gè)數(shù)據(jù)庫(kù)之間要通過數(shù)據(jù)庫(kù)鏈路進(jìn)行數(shù)據(jù)的遠(yuǎn)程傳輸 2.在同一網(wǎng)絡(luò)環(huán)境下,兩個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)名相同
查詢數(shù)據(jù)庫(kù)的域名 : select value from v$parameter where name = ‘db_domain’; (建議system登錄狀態(tài);)
數(shù)據(jù)庫(kù)實(shí)例
每個(gè)啟動(dòng)的數(shù)據(jù)庫(kù)都對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)實(shí)例,通過實(shí)例來(lái)訪問操作數(shù)據(jù)庫(kù)中數(shù)據(jù);
如果把 數(shù)據(jù)庫(kù) 理解為, 硬盤上的文件(應(yīng)用程序)
數(shù)據(jù)庫(kù)實(shí)例就是, 內(nèi)存共享運(yùn)行狀態(tài)一組服務(wù)器后臺(tái)進(jìn)程; (一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)實(shí)例)
表空間tablespace
每個(gè)Oracle數(shù)據(jù)庫(kù)都是由 多個(gè)表空間構(gòu)成的; (用戶建立的數(shù)據(jù)庫(kù)也是存儲(chǔ)到對(duì)應(yīng)的 表空間中)
一個(gè)表空間可以由多個(gè) 數(shù)據(jù)文件組成, 但一個(gè)數(shù)據(jù)文件只能屬于一個(gè) 表空間; (表空間 又屬于數(shù)據(jù)庫(kù))
每個(gè)數(shù)據(jù)庫(kù)都有一個(gè) SYSTEM 的系統(tǒng)表空間…SYSAUX TEMP … 都是創(chuàng)建數(shù)據(jù)庫(kù)時(shí)自動(dòng)創(chuàng)建的。
管理員可以創(chuàng)建自定義的表空間 并分配給指定的用戶 也可也為表空間增加 刪除數(shù)據(jù)文件;
數(shù)據(jù)文件 .dbf、.ora
通常文件擴(kuò)展名 .dbf 是用于存儲(chǔ)數(shù)據(jù)庫(kù)數(shù)據(jù)的文件; ( 數(shù)據(jù)庫(kù)表的 記錄,索引,視圖… )
一個(gè)數(shù)據(jù)庫(kù)文件可能存儲(chǔ)很多表的數(shù)據(jù), 而一個(gè) 表的數(shù)據(jù)可能來(lái)源于很多 數(shù)據(jù)文件; (不存在一對(duì)一關(guān)系)
控制文件 .ctl
控制文件的擴(kuò)展名 .ctl 是一個(gè)二進(jìn)制的文件; 控制文件存儲(chǔ)的信息有很多: 數(shù)據(jù)文件 和 日志文件的位置和名字
(是數(shù)據(jù)庫(kù)啟動(dòng)和運(yùn)行所必須的文件Oracle 讀寫數(shù)據(jù),就是根據(jù)控制文件來(lái)查找對(duì)應(yīng)的文件, 因此一個(gè)數(shù)據(jù)庫(kù)至少有一個(gè)控制文件;) Oracle11g默認(rèn)三個(gè);
日志文件 .log
日志文件擴(kuò)展名是 .log 它記錄了數(shù)據(jù)所有更改信息,并提供了一種數(shù)據(jù)恢復(fù)機(jī)制; 確保系統(tǒng)崩潰 或其它意外重新恢復(fù)數(shù)據(jù);
日志文件是成組使用的, 每個(gè)日志文件組 有一個(gè)或多個(gè)日志文件,在工作過程中多個(gè)組循環(huán)使用.(一個(gè)組寫滿了換其它組~)
模式和模式對(duì)象
模式是數(shù)據(jù)庫(kù)對(duì)象的集合( 表 索引…) ;
Oracle 為每一個(gè)數(shù)據(jù)庫(kù)用戶創(chuàng)建一個(gè)模式, 次模式為當(dāng)前用戶所擁有。和用戶具有相同的名稱~
安裝Oracle
安裝教程.
Oacle 數(shù)據(jù)類型
字符數(shù)據(jù)類型
char(size)
指定長(zhǎng)字符數(shù)據(jù)(不指定情況下默認(rèn)1字節(jié)), 列長(zhǎng)度 1~2000字節(jié) ;
如果輸入字節(jié)數(shù)小于指定的字節(jié)數(shù), 空格填補(bǔ); 大于指定字節(jié)報(bào)錯(cuò)~
varchar2(size)
可變長(zhǎng)字符數(shù)據(jù) , 列長(zhǎng)度 1~4000字節(jié)
在定義字符類型時(shí)候指定其大小,但是在實(shí)際賦值時(shí)候會(huì)根據(jù)輸入字節(jié)數(shù)而變化;
輸入字節(jié)數(shù)小于定義字節(jié)數(shù), 不會(huì)以空格替代而是變成字節(jié)數(shù)小的 (節(jié)省內(nèi)存) 如果輸入字節(jié)數(shù)大于指定字節(jié)數(shù)則還是會(huì)報(bào)錯(cuò)!
nchar(size)
nchar 及中國(guó)字符集以 Unicode 存儲(chǔ)方式;
nchar 和 char 區(qū)別就在于存儲(chǔ)方式不一致, char (1) 和 nchar(1) 字段長(zhǎng)度為 1字節(jié) 和 1字符(等于2字節(jié));
分別傳入 a 是沒有問題的, 但占用字節(jié)分別是 1 和 2 , 如果都插入中文字符 啊 char(1) 是插不進(jìn)去的;
nvarchar2(size)
存儲(chǔ)方式和 nchar 類似Unicode ; 在這個(gè)基礎(chǔ)上又和 varchar2 類似, 可變字符長(zhǎng)度…
擴(kuò):
nvarchar2 和 varchar2 在mysql 中并沒有所以剛開始學(xué)習(xí)時(shí)候有一點(diǎn)不習(xí)慣…
nvarchar2 和 varchar2 是在 nvarchar和 varchar 基礎(chǔ)上進(jìn)行了優(yōu)化,Oracle也又nvarchar 和 varchar 數(shù)據(jù)類型;
但底層還是nvarchar2 和 varchar2 所以最后執(zhí)行時(shí)候還是 2 為了效率建議使用 2的;
數(shù)值數(shù)據(jù)類型
number(p,s)
可變長(zhǎng)數(shù)值數(shù)據(jù): number可以存儲(chǔ) 正數(shù) 負(fù)數(shù) 零 定點(diǎn)數(shù) 浮點(diǎn)數(shù)…
p 表示精度1~38之間( 數(shù)指從左往右算 不為0 不計(jì) 負(fù) 小數(shù)點(diǎn)的有效數(shù))
s 為范圍 -84~127之間 表示小數(shù)點(diǎn)右邊數(shù)字?jǐn)?shù) 可以是0; (對(duì)于不要的小數(shù)遵循 四舍五入原則)
最后得到的值有效位 ≤ p 則成立!
日期時(shí)間數(shù)據(jù)類型
Date
日期型數(shù)據(jù) 和mysql 大致一樣, Oracle中提供 SYSDATE函數(shù)返回當(dāng)前日期和時(shí)間;
TIMESTAMP
存儲(chǔ) 年月日時(shí)分秒 , SYSTIMESTAMP函數(shù)功能是返回當(dāng)前日期 時(shí)間 和 時(shí)區(qū);
LOB數(shù)據(jù)類型
LOB 又稱 ‘大對(duì)象’ 通俗易懂就是 一個(gè)特別大的對(duì)象, 可以存儲(chǔ)多達(dá)4GB 的非結(jié)構(gòu)化信息 如聲音 剪輯 視頻剪輯等…
LOB 允許對(duì)數(shù)據(jù)進(jìn)行 高效 隨機(jī) 分段的訪問, LOB可以是外部的 也可以是內(nèi)部的這取決于它相對(duì)于數(shù)據(jù)庫(kù)的位置;
可以通過 PL/SQL 中提供的程序包 DBMS——LOB 完成。一個(gè)表中可以有多個(gè)列被定義為 LOB數(shù)據(jù)類型;
LOB數(shù)據(jù)類型有:CLOB BLOB BFILE NCLOB
clob
能夠存儲(chǔ)大量字符數(shù)據(jù),最大可達(dá)到4G, 可以存儲(chǔ)單字符數(shù)據(jù) 和 多字符數(shù)據(jù);(XML文檔 新聞 內(nèi)容介紹等含有大量?jī)?nèi)容的文檔)
blob
二進(jìn)制數(shù)據(jù),最大可達(dá)到4G (圖片,視頻,聲音)
bfile
能夠?qū)⒍M(jìn)制文件, 存儲(chǔ)在數(shù)據(jù)庫(kù)外部的操作系統(tǒng)文件中, BFILE 列存儲(chǔ)一個(gè)BFILE 定位器, 指向位于服務(wù)器文件系統(tǒng)上的二進(jìn)制文件(最大4GB)
nclob
用于存儲(chǔ)大量的 nchar 字符數(shù)據(jù), nclog 支持同時(shí) 固定寬度字符 變寬字符(Unicode字符數(shù)據(jù))
終于結(jié)束,大量的理論…
到了sql 語(yǔ)句,建議有點(diǎn)基礎(chǔ)的看…
Oracle SQl語(yǔ)句:
Sql 語(yǔ)言,是針對(duì)數(shù)據(jù)庫(kù)而言的 一門語(yǔ)言,它可以 創(chuàng)建數(shù)據(jù)庫(kù),表,視圖 ,增刪改查……數(shù)據(jù)庫(kù)的一系列操作;(不區(qū)分大小寫)
全稱 “結(jié)構(gòu)化查詢語(yǔ)言”;
SQL 組成:
a. DML(數(shù)據(jù)庫(kù)操作語(yǔ)言) :用來(lái) 增刪改 表中數(shù)據(jù) eg: INSERT , DELETE ,UPDATE
b. DDL(數(shù)據(jù)庫(kù)定義語(yǔ)言) :在 數(shù)據(jù)庫(kù)中 創(chuàng)建或 刪除數(shù)據(jù)庫(kù)對(duì)象等操作 eg: CERATE,DROP,ALTER
c. DQL(數(shù)據(jù)庫(kù)查詢語(yǔ)言) :用來(lái) 對(duì) 數(shù)據(jù)庫(kù)中 數(shù)據(jù)進(jìn)行 查詢 eg: SELECT
d. DCL(數(shù)據(jù)庫(kù)控制語(yǔ)言) :用來(lái) 控制數(shù)據(jù)庫(kù)組件 存錢許可 存取權(quán)限 eg:GRANT,REVOKE
奉上OneNote筆記~
不夠詳細(xì), 太多了不好發(fā)… Sql語(yǔ)句大致都是通用的… 但也有少部分區(qū)別
oracle 中沒有了數(shù)據(jù)庫(kù)的概念, 所以說上面對(duì)數(shù)據(jù)庫(kù)的操作, 可以忽略…
Oracle 中的偽列:
偽列就像是Oracle 表中的一個(gè)列(Mysql沒有~) 每個(gè)表都有的~
偽列可以從表中查詢, 不可以修改 刪除 新增…暫時(shí)只介紹 ROWID ROWNUM
ROWID
oracle數(shù)據(jù)庫(kù)的表中的每一行數(shù)據(jù)都有一個(gè)唯一的標(biāo)識(shí)符,或者稱為 rowid
在oracle內(nèi)部通常就是使用它來(lái)訪問數(shù)據(jù)的。rowid需要 10個(gè)字節(jié)的存儲(chǔ)空間,并用18個(gè)字符來(lái)顯示。
用途:
ROWID格式:
ROWNUM
是查詢返回的結(jié)果集中行的序號(hào),可以使用它來(lái)限制查詢返回的行數(shù) (分頁(yè)查詢)
注意 使用偽列ROWNUM做條件查詢:
CREATE TABLE命令
Qracle創(chuàng)建表與Mysql 有些不同因?yàn)橛捎脩艄芾肀韣
/*多行注釋 */--單行注釋 CREATE TABLE [用戶.]表名(列 類型[ 屬性,約束,索引,注釋 ], )-- [] 為可選選項(xiàng), 用戶可選,不指定情況下默認(rèn)當(dāng)前登錄用戶~利用現(xiàn)有表創(chuàng)建新表
CREATE TABLE 新表 AS SELECT * FROM 舊表; -- 創(chuàng)建一個(gè)新表 和 舊表一模一樣包括數(shù)據(jù)(可以指定列,來(lái)改變創(chuàng)建表的列...) -- 一般用于:日表 (有些項(xiàng)目,非常大 每天會(huì)有非常多的數(shù)據(jù), 如果都放在一個(gè)表中時(shí)間久了就會(huì)異常大越來(lái)越多 不利于備份數(shù)據(jù).. -- 而對(duì)于日表 每天都有 其表結(jié)構(gòu)是一定每天都一樣的! CREATE TABLE 新表 AS SELECT * from 舊表 where 1=2; -- 加上條件使沒有符合條件的數(shù)據(jù)賦值給新表,新表就是一個(gè)只有表結(jié)構(gòu)的表了~事務(wù)操作語(yǔ)句 TCL
在Oracle 中事務(wù)控制語(yǔ)句TCL 主要由:
COMMIT : 提交事務(wù),即把事務(wù)中對(duì)數(shù)據(jù)庫(kù)修改操作進(jìn)行永久保存~
ROLLBACK : 回滾事務(wù),取消對(duì)數(shù)據(jù)庫(kù)所做的任何修改;
SAVEPOINT :在事務(wù)中創(chuàng)建存儲(chǔ)點(diǎn) 相當(dāng)于單擊游戲的存檔 存檔點(diǎn)~
ROLLBACK TO <存儲(chǔ)點(diǎn)> :將事務(wù)回滾到指定的存儲(chǔ)點(diǎn) 相當(dāng)于, 單擊游戲的回檔!
Oracle Sql操作符
算術(shù)操作符 加減乘除 ±*/ …
比較操作符 = != < <= > >= BETWEEN~AND(在…之間) IS NULL(是否null) LIKE(模糊查詢) IN(范圍查詢)
邏輯操作符 AND(與) OR(或) NOT(非)
集合操作符
將兩個(gè)查詢結(jié)果組合成一個(gè)結(jié)果集:(高中數(shù)學(xué)的集合概念~)
使用前需要遵循一些規(guī)則: 1.兩個(gè)查詢的表 列數(shù),類型要匹配兼容對(duì)應(yīng)… 2.這種查詢操作不適合LOG類型的數(shù)據(jù), 最后展示的列標(biāo)題以第一個(gè)select 為準(zhǔn);
UNION(并集:將兩個(gè)查詢結(jié)果集合并起來(lái),并刪除重復(fù)的行 )
UNION ALL(并集所有:將兩個(gè)查詢結(jié)果組合在一起,包括重復(fù)數(shù)據(jù))
INTERSECT(交集:只返回兩個(gè)表都有的相同數(shù)據(jù))
MINUS(減集:在第一個(gè)查詢結(jié)果中, 排除第二個(gè)查詢結(jié)果中出現(xiàn)的行 eg: 表1數(shù)據(jù)A B C 表2數(shù)據(jù)A 減集就是B C )
連接操作符 ||
Oracle 中使用 || 符合進(jìn)行拼接字符串操作類似于 Mysql中的 + 號(hào);
實(shí)例: scott登錄~
select EName || Job from emp; (對(duì) EName列 和 Job 列拼接)
SQL函數(shù)
函數(shù),通俗易懂用于完成某種特定操作 Oracle對(duì)這種操作進(jìn)行了實(shí)現(xiàn), 就像Java的方法;
Oracle 常用的函數(shù)有: 單行函數(shù) 聚合函數(shù) 轉(zhuǎn)換函數(shù) …
轉(zhuǎn)換函數(shù)
將指以 一種數(shù)類型 ——> 轉(zhuǎn)換為 ——> 另一種數(shù)據(jù)類型的操作;
| TO_CHAR() | 將 一種數(shù)據(jù)類型 轉(zhuǎn)換為字符串類型; |
| TO_DATE() | 將 char 或 varchar類型 轉(zhuǎn)換為時(shí)間類型 |
| TO_NUMBER() | 將 數(shù)字的字符類型 轉(zhuǎn)換為數(shù)值類型; |
TO_CHAR()
語(yǔ)法
TO_CHAR( d|n , [,fmt] );
參數(shù), d 或 n 可選[,fmt ]; d表示日期類型數(shù)據(jù), n 就是數(shù)字類型數(shù)據(jù);可選[,fmt] 是指參數(shù)的格式類型;
TO_DATE( char,[fmt] )
TO_NUMBER( char|varchar )
其它函數(shù):
除了, 日期函數(shù),數(shù)字函數(shù),轉(zhuǎn)換函數(shù),Oracle還提供一些單行函數(shù) 一般稱為 “其它函數(shù)”;
| NVL( expl1, expl2 ) | 如果expl1 值為null 則返回 expl2的值; 不為null 返回expl1值; |
| NVL2( expl1, expl2, expl3 ) | 如果expl1 值為null 則返回 expl3的值; 不為null 返回expl2值; |
| DECODE( value, if1, then1, if2, then2, …else ) | 如果value 值為 if1 返回if1 值;value 值為 if2 返回if2 值… 沒有符合返回else; |
分析函數(shù):
Oracle 8.1.6 版本提供分析函數(shù), 分析函數(shù)是對(duì)一組查詢結(jié)果進(jìn)行運(yùn)算的, 然后獲得結(jié)果…
語(yǔ)法:
函數(shù)名([ 參數(shù)]) OVER( [ 分區(qū)子句 ] [ 排序子句])
函數(shù)名:分析函數(shù)名字
參數(shù):函數(shù)需要傳入的參數(shù)
分區(qū)子句(PARTITION BY 列):將查詢結(jié)果分為不同的組,功能類似于GROUP BY語(yǔ)句
排序子句(ORDER BY asc|desc):將每個(gè)分區(qū)進(jìn)行排序
常見的函數(shù):
– 根據(jù)deptno 分組, sal排序;
| RANK | 具有相等值的行排位相同,序數(shù)隨后跳躍,:1~3.. 如果,1記錄與2記錄相同則序號(hào)都是 1,不同的數(shù)據(jù)序號(hào)是3 |
| DENSE_RANK | 具有相等值的行排位相同,序號(hào)是連續(xù)的:不會(huì)因?yàn)橄嗤挠涗浱S排序,會(huì)出現(xiàn)多個(gè)相同的序號(hào) |
| ROW_NUMBER | 返回連續(xù)的排位,不論值是否相等 |
EMP表是 Scott用戶下都有的一個(gè)系統(tǒng)測(cè)試表! 放心使用~
-- 分析函數(shù) -- emp表,以deptno 列分析~ select e.*, -- 根據(jù)deptno 分組, sal排序; rank() over(partition by deptno order by sal desc ) as r1, -- 具有相等值的行排位相同,序數(shù)隨后跳躍 dense_rank() over(partition by deptno order by sal desc ) as r2 , -- 具有相等值的行排位相同,序號(hào)是連續(xù)的 row_number() over(partition by deptno order by sal desc ) as r3 -- 返回連續(xù)的排位,不論值是否相等 from emp e;總結(jié)
以上是生活随笔為你收集整理的Oracle数据库基础学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows服务器虚拟机 全屏,虚拟机
- 下一篇: oracle把字段选为候选键,Oracl