Oracle基礎開發篇(3)

2021-09-01 06:37:13 字數 3796 閱讀 5057

操作檢視

物化檢視

序列同義詞

索引

檢視是一種資料庫物件,是從乙個或者多個資料表或檢視中匯出的虛表,檢視所對應的資料並不真正地儲存在檢視中,而是儲存在所引用的資料表中,檢視的結構和資料是對資料表進行查詢的結果。

根據建立檢視時給定的條件,檢視可以是乙個資料表的一部分,也可以是多個基表的聯合,它儲存了要執行檢索的查詢語句的定義,以便在引用該檢視時使用。

使用檢視的優點:

1.簡化資料操作:檢視可以簡化使用者處理資料的方式。

2.著重於特定資料:不必要的資料或敏感資料可以不出現在檢視中。

3.檢視提供了乙個簡單而有效的安全機制,可以定製不同使用者對資料的訪問許可權。

4.提供向後相容性:檢視使使用者能夠在表的架構更改時為表建立向後相容介面。

如果檢視中的語句只是單錶查詢,並且沒有聚合函式,我們就稱之為簡單檢視

檢視的 sql 語句中,有聚合函式或多表關聯查詢

鍵保留表的字段是可以更新的,而非鍵保留表是不能更新的。

鍵保留表是理解連線檢視修改限制的乙個基本概念。該錶的主鍵列全部顯示在檢視中,並且它們的值在檢視中都是唯一且非空的。也就是說,表的鍵值在乙個連線檢視中也是鍵值,那麼就稱這個表為鍵保留表。

-- 建立 修改

create [or replace] [force] view view_name

as subquery

[with check option ]

[with read only]

or replace :若所建立的試圖已經存在,oracle 自動重建該檢視;

force :不管基表是否存在 oracle 都會自動建立該檢視;

subquery :一條完整的 select 語句,可以在該語句中定義別名,對應的表被稱作基表;

with check option :插入或修改的資料行必須滿足檢視定義的約束;

with read only :該檢視上不能進行任何 dml 操作。

-- 刪除

drop view view_name;

檢視是乙個虛擬表(也可以認為是一條語句),基於它建立時指定的查詢語句返回的結果集。每次訪問它都會導致這個查詢語句被執行一次。為了避免每次訪問都執行這個查詢,可以將這個查詢結果集儲存到乙個物化檢視(也叫實體化檢視)。特點是需要占用表空間,且查詢效率和查詢單錶一致。

create meterialized view view_name

[build immediate | build deferred ]

refresh [fast|complete|force]

[ on [commit |demand ] | start with (start_time) next (next_time) ]

as subquery;

釋:

build immediate 是在建立物化檢視的時候就生成資料。 預設值

build deferred 則在建立時不生成資料,以後根據需要再生成資料。

重新整理(refresh):指當基表發生了 dml 操作後,物化檢視何時採用哪種方式和基表進行同步。

fast:重新整理採用增量重新整理,只重新整理自上次重新整理以後進行的修改。

complete:重新整理對整個物化檢視進行完全的重新整理。

force:預設的方式。如果選擇 force 方式,則 oracle 在重新整理時會去判斷是否可以進行快速重新整理,如果可以則採用fast 方式,否則採用 complete的方式。

重新整理的模式有兩種:on demand 和 on commit。 on demand 指需要手動重新整理物化檢視(預設)。 on commit 指在基表發生 commit 操作時自動重新整理。

序列是 oracle 提供的用於產生一系列唯一數字的資料庫物件。

create sequence sequence;

create sequence sequence //建立序列名稱

[increment by n] //遞增的序列值是 n 如果 n 是正數就遞增,如果是負數就遞減 預設是 1

[start with n] //開始的值,遞增預設是 minvalue 遞減是 maxvalue

//最大值

//最小值

//迴圈/不迴圈

; //分配並存入到記憶體中

-- alter sequence 序列名稱

alter sequence 序列名稱 ···;

drop sequence 序列名稱;
select 序列名稱.nextval from dual;		-- 提取下乙個值

select 序列名稱.currval from dual; -- 提取當前值

同義詞實質上是指定方案物件的乙個別名。

同義詞通過遮蔽物件的名稱和所有者,以及對分布式資料庫的遠端物件提供位置透明性,同義詞可以提供一定程度的安全性。

同時,同義詞的易用性較好,降低了資料庫使用者的 sql 語句複雜度。

同義詞允許基物件重新命名或者移動,這時,只需對同義詞進行重定義,基於同義詞的應用程式可以繼續執行而無需修改。

你可以建立公共同義詞和私有同義詞。其中,公共同義詞屬於 public 特殊使用者組,資料庫的所有使用者都能訪問;而私有同義詞包含在特定使用者的方案中,只允許特定使用者或者有基物件訪問許可權的使用者進行訪問。

同義詞本身不涉及安全,當你賦予乙個同義詞物件許可權時,你實質上是在給同義詞的基物件賦予許可權,同義詞只是基物件的乙個別名。

create [public] synonym synooym for object;
其中 synonym 表示要建立的同義詞的名稱,object 表示表,檢視,序列等我們要建立同義詞的物件的名稱。

索引是用於加速資料訪問的資料物件。合理的使用索引可以大大降低 i/o 次數,從而提高資料訪問效能。

索引是需要佔據儲存空間的,也可以理解為是一種特殊的資料。形式類似於下圖的一棵「樹」,而樹的節點儲存的就是每條記錄的實體地址,也就是我們提到的偽列(rowid)。

create index 索引名稱 on 表名(列名);
如果我們需要在某個表某個列建立索引,而這列的值是不會重複的。這是我們可以建立唯一索引。

create unique index 索引名稱 on 表名(列名);
基於兩個以上的列建立乙個索引。

create index 索引名稱 on 表名(列名,列名.....);
create index 索引名稱 on 表名(列名) reverse;
位圖索引適合建立在低基數列上。位圖索引不直接儲存 rowid,而是儲存位元組位到 rowid 的對映,減少響應時間,節省空間占用

create bitmap index 索引名稱 on 表名(列名);

Oracle基礎開發篇(4)

儲存函式 儲存過程 觸發器oracle 預定義異常 pl sql procedure language sql 是 oracle 對 sql 語言的過程化擴充套件,指在 sql 命令語言中增加了過程處理語句 如分支 迴圈等 使 sql 語言具有過程處理能力。把 sql 語言的資料操縱能力與過程語言的...

oracle基礎篇 下

11 說明 幾個高階查詢運算詞 a union 運算子 union 運算子通過組合其他兩個結果表 例如 table1 和 table2 並消去表中任何重複行而派生出乙個結果表。當 all 隨 union 一起使用時 即 union all 不消除重複行。兩種情況下,派生表的每一行不是來自 table...

oracle學習筆記(基礎篇)

關係 表 欄位列 記錄行 檔案表e r圖 一對一直線 一對多爪子 可選虛線 實體 方框 正規化 1nf 重複的組 2nf 部分依賴 3nf 傳遞依賴 表設計 名稱最長 30個字元,以字母開頭。表允許數字,下劃線,號,但不能有空格。表名唯一。不能使用保留字。乙個表最多可以包含 1000行 資料型別 v...