Oracle學習day-31:數(shù)據(jù)庫其他對象

一、視圖(view)

1.什么是視圖?

可以通過創(chuàng)建表的視圖來表現(xiàn)數(shù)據(jù)的邏輯子集或數(shù)據(jù)的組合。視圖是基于表或另一個視 圖的邏輯表,一個視圖并不包含它自己的數(shù)據(jù),它象一個窗口,通過該窗口可以查看或改變 表中的數(shù)據(jù)。視圖基于其上的表稱為基表。

2.視圖的作用:

(1)視圖限制數(shù)據(jù)的訪問,因為視圖能夠選擇性的顯示表中的列。

(2)視圖可以用來構成簡單的查詢以取回復雜查詢的結(jié)果。例如,視圖能用于從多表中查 詢信息,而用戶不必知道怎樣寫連接語句。?

(3)視圖對特別的用戶和應用程序提供數(shù)據(jù)獨立性,一個視圖可以從幾個表中取回數(shù)據(jù)。

3.視圖的類型:

(1)簡單視圖:

1) 數(shù)據(jù)僅來自一個表 ;

2)不包含函數(shù)或數(shù)據(jù)分組;

3)能通過視圖執(zhí)行 DML 操作。

簡單視圖語法:

4)使用列別名創(chuàng)建視圖:

如果在創(chuàng)建視圖的查詢語句中含有列別名,那么列別名將作為視圖的列名。

5)從視圖中取回數(shù)據(jù);

(2)復雜視圖:

1) 數(shù)據(jù)來自多個表;

2)包含函數(shù)或數(shù)據(jù)分組;

3)不允許通過視圖進行 DML 操作。

創(chuàng)建復雜視圖語法:

(3)定義視圖時指定列名:

4.視圖中 DML 操作的執(zhí)行規(guī)則:

(1)視圖中包含下面的部分就不能修改數(shù)據(jù):

?組函數(shù);GROUPBY 子句 ;DISTINCT 關鍵字;用表達式定義的列。

(2)創(chuàng)建只讀視圖:

不允許執(zhí)行DML操作,使用whith read only;


5.內(nèi)建視圖:

(1)什么是內(nèi)建視圖?

1)內(nèi)建視圖是一個帶有別名 (或相關名) 的可以在 SQL 語句中使用的子查詢;

2)一個主查詢的在 FROM 子句中指定的子查詢就是一個內(nèi)建視圖;

3)內(nèi)建視圖由位于 FROM 子句中命名了別名的子查詢創(chuàng)建。該子查詢定義一 個可以在主查詢中引用數(shù)據(jù)源。

6.Top-N分析:

(1)什么是“Top-N”分析?

1)使用一個帶有下面描述的元素的一致的嵌套查詢結(jié)構;

2)子查詢或者內(nèi)建視圖產(chǎn)生數(shù)據(jù)的排序列表,該子查詢或者內(nèi)建視圖包含 ORDERBY 子 句來確保排序以想要的順序排列。為了取回最大值,需要用 DESC 參數(shù)。

3)在最后的結(jié)果集中用外查詢限制行數(shù)。外查詢包括下面的組成部分: ?ROWNUM 偽列,它為從子查詢返回的每一行指定一個從 1 開始的連續(xù)的值 ? 一個 WHERE 子句,它指定被返回的 n 行,外 WHERE 子句必須用一個<或 者<=操作。

6.Oracle的分頁查詢:

(1)什么是分頁查詢?

“分頁查詢”,也就是說不要一次性查詢所有的數(shù)據(jù),每次只查詢一部分數(shù) 據(jù)。這樣分批次地進行處理,可以呈現(xiàn)出很好的用戶體驗,對服務器資源的消耗也不大。

(2)實現(xiàn)思路:

在內(nèi)建視圖中通過rownum偽列值的判斷來指定獲取數(shù)據(jù)的數(shù)量。

(3)分頁語法:

分頁語句:select t1.*from(select t.*,rownum rn from 表名 t where rownum<=分頁單位*當前頁)t1?where? t1.rn>=(當前頁-1)*分頁單位 and t1.rn<=分頁單位*當前頁;

分頁單位:每頁展示數(shù)據(jù)的條數(shù);當前頁:展示的第幾頁。

二、序列(sequence)

1.什么是序列?

1)序列是用戶創(chuàng)建的數(shù)據(jù)庫對象,序列會產(chǎn)生唯一的整數(shù)。序列的一個典型的用途是創(chuàng)建 一個主鍵的值,它對于每一行必須是唯一的。序列由一個 Oracle 內(nèi)部程序產(chǎn)生并增加或減 少。?

2)序列是一個節(jié)省時間的對象,因為它可以減少應用程序中產(chǎn)生序列程序的代碼量。序列 號獨立于表被存儲和產(chǎn)生,因此,相同的序列可以被多個表使用。

2.創(chuàng)建序列:

(1)通過DDL語句創(chuàng)建序列

創(chuàng)建序列語法:

create sequence 序列名稱[參數(shù)列表]

?參數(shù)列表:increment by 增長間隔

start with起始值

?maxvalue最大值

minvalue最小值

cycle/nocycle是否循環(huán)

cache/nocache是否緩存

(2)使用默認參數(shù)創(chuàng)建:(從1開始,每次增加1,不限制最大值,不循環(huán),緩存20)

3.使用序列:

(1)NEXTVAL 和 CURRVAL 偽列:

1)NEXTVAL 返回下一個可用的序列值,它每次返回一個唯一的被引用值,即使對于 不同的用戶也是如此 。

2)CURRVAL 獲得當前的序列值 ;

3)在 CURRVAL 獲得一個值以前,NEXTVAL 對該序列必須發(fā)布。

4.修改序列:

(1)原則:

1)必須是被修改序列的所有者,或者有 ALTER 權限。?

2)用 ALTERSEQUENCE 語句,只有以后的序列數(shù)會受影響。?

3)用 ALTERSEQUENCE 語句,STARTWITH 選項不能被改變。為了以不同的數(shù)重新開 始一個序列,該序列必須被刪除和重新創(chuàng)建。

(2)刪除序列:

三、索引(index)

1.什么是索引?

1)索引提供對表中行的直接和快速訪問,它的目的是用已索引的路徑快速定位數(shù)據(jù)以減少 磁盤 I/O。

2)索引由 Oracle 服務器自動使用和維護,索引邏輯地和物理地獨立于他們索引的 表,這意味者索引可以在任何時候被創(chuàng)建或刪除,并且不影響基表或其它的索引。當刪除表 時,相應的索引也被刪除。

3)索引的作用相當于圖書的目錄,可以根據(jù)目錄中的頁碼快速找到所需的內(nèi)容。

2.索引的類型:

(1)唯一性索引:當你在一個表中定義一個列為主鍵,或者定義一個唯一鍵約束時 Oracle 服務器自動創(chuàng)建該索引,索引的名字習慣上是約束的名字。?

(2)非唯一索引:由用戶創(chuàng)建,(單行索引,復合索引(組合索引),函數(shù)索引)例如,可以創(chuàng)建一個 FOREIGN KEY 列索引用于一個查詢 中的連接來改進數(shù)據(jù)取回的速度。

3.創(chuàng)建索引的方式:

1)自動:在一個表的定義中,當定義一個 PRIMARYKEY 或 UNIQUE 約束時,一個 唯一索引被自動創(chuàng)建。

2)手動:用戶能夠在列上創(chuàng)建非唯一的索引來加速對行的訪問。

(1)索引的優(yōu)缺點:

優(yōu)點:索引可以提高查詢效率;缺點:對增、刪改、效率有影響。

(3)什么時候創(chuàng)建索引?

1)一個列包含一個大范圍的值;

2)一個列包含很多的空值;

3)一個或多個列經(jīng)常同時在一個 WHERE 子句中或一個連接條件中被使用 ;

4)表很大,并且經(jīng)常的查詢期望取回少于百分之 2 到 4 的行。

4.操作索引:

(1)創(chuàng)建非唯一索引語法:

語法:create index 索引名on 表名(列名...)

(2)創(chuàng)建單行索引:

(3)創(chuàng)建復合索引:

(4)創(chuàng)建函數(shù)索引:

(5)刪除索引:

5.同義詞(synonym):

(1)什么是同義詞?

為數(shù)據(jù)對象起別名。

(2)創(chuàng)建同義詞:

create synonym 別名for數(shù)據(jù)對象(表/ 視圖);

(3)刪除同義詞:

drop synonym 同義詞名;

6.創(chuàng)建用戶:

(1)什么是Oracle用戶?

Oracle 用戶是用來連接數(shù)據(jù)庫和訪問數(shù)據(jù)庫對象的。

(2)操作用戶:

1)創(chuàng)建用戶:需要具備創(chuàng)建用戶的權限可以使用 sys 或者 system 用戶來創(chuàng)建新用戶。

語法結(jié)構:

2)刪除用戶:

法:drop User? 用戶名;

四、數(shù)據(jù)控制語言(DCL)

1.授予系統(tǒng)權限:

grant...授予用戶權限;

語法結(jié)構:

(1)授權創(chuàng)建其他對象

1)CREATESESSION;

2)CREATETABLE;

3)CREATESEQUENCE ;

4)CREATEVIEW;

5)CREATEPROCEDURE;

6)UNLIMITEDTABLESPACE;

2.撤銷權限:

revork..撤銷用戶權限

語法:Revoke 權限 from 用戶

3.Oracle中的角色:

(1)創(chuàng)建角色:

(2)授予權限給一個角色

(3)授予一個角色給用戶

(4)撤銷用戶角色

語法:revoke 角色 from 用戶;

五、Oracle的數(shù)據(jù)導入與導出

1.數(shù)據(jù)庫導入導出需要注意:

1)目標數(shù)據(jù)庫要與源數(shù)據(jù)庫有著名稱相同的表空間。?

2)目標數(shù)據(jù)在進行導入時,用戶名盡量相同(這樣保證用戶的權限級別相同)。?

3)目標數(shù)據(jù)庫每次在進行數(shù)據(jù)導入前,應做好數(shù)據(jù)備份,以防數(shù)據(jù)丟失。?

4)弄清是導入導出到相同版本還是不同版本(oracle10g 版本與 oracle11g 版本)。?

5)目標數(shù)據(jù)導入前,弄清楚是數(shù)據(jù)覆蓋(替換),還是僅插入新數(shù)據(jù)或替換部分數(shù)據(jù)表。

6)確定目標數(shù)據(jù)庫磁盤空間是否足夠容納新數(shù)據(jù),是否需要擴充表空間。?

7)導入導出時注意字符集是否相同,一般 Oracle 數(shù)據(jù)庫的字符集只有一個,并且固定, 一般不改變。

8)確定操作者的賬號權限。

2.導出數(shù)據(jù)的格式:

1)Dmp 格式:.dmp 是二進制文件,可跨平臺,還能包含權限,效率好。?

2)Sql 格式:.sql 格式的文件,可用文本編輯器查看,通用性比較好,效率不如第一種, 適合小數(shù)據(jù)量導入導出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,會 報錯。

3) Pde 格式: .pde 格式的文件, .pde 為 PL/SQLDeveloper 自有的文件格式,只能用 PL/SQL Developer 工具導入導出,不能用文本編輯器查看。

3.exp(導出)和imp(導入):

注意:該命令需要在操作系統(tǒng)的命令窗口執(zhí)行,而非 sql/plus ;在使用導出或?qū)朊顣r,在命令的后側(cè)不要添加分號。

(1)命令格式:

1)導出:exp 用戶名/密碼@oracle 的連接地址:端口/需要導出的服務名 file=路徑/文件名.dmp;

2)導入:imp 用戶名/密碼@oracle 的連接地址:端口/需要導出的服務名 file=路徑/文件名.dmp;

4.使用PL/SQL Developer實現(xiàn)導入與導出:


tools

(1)導出sql格式:

(2)導入sql格式:

(3)導出PDE格式:

(4)導入PDE格式:?

(5)導出數(shù)據(jù)庫對象:

(6)導入數(shù)據(jù)庫對象:

示例
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,919評論 0 9
  • 1.偽表,偽列 1.1.偽表dual 概念:就是一個不真實存在的虛擬表.偽表的作用就是用來構造一個符合sql規(guī)則的...
    隨手點燈閱讀 1,312評論 1 7
  • 視圖(View) 什么是視圖 可以通過創(chuàng)建表的視圖來表現(xiàn)數(shù)據(jù)的邏輯子集或數(shù)據(jù)的組合。視圖是基于表或另一個視圖的邏輯...
    小破孩_e9ce閱讀 644評論 0 0
  • 對sql語言的以下知識點回顧: 1.視圖(View) 2.序列(Sequence) 3.索引(Index) 4.同...
    袁小勝閱讀 693評論 0 0
  • 今天看到一位朋友寫的mysql筆記總結(jié),覺得寫的很詳細很用心,這里轉(zhuǎn)載一下,供大家參考下,也希望大家能關注他原文地...
    信仰與初衷閱讀 4,818評論 0 30

友情鏈接更多精彩內(nèi)容