操作檢視
物化檢視
序列同義詞
索引
檢視是一種資料庫物件,是從乙個或者多個資料表或檢視中匯出的虛表,檢視所對應的資料並不真正地儲存在檢視中,而是儲存在所引用的資料表中,檢視的結構和資料是對資料表進行查詢的結果。根據建立檢視時給定的條件,檢視可以是乙個資料表的一部分,也可以是多個基表的聯合,它儲存了要執行檢索的查詢語句的定義,以便在引用該檢視時使用。
使用檢視的優點:
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...