1. 程式人生 > >Oracle資料庫常見物件

Oracle資料庫常見物件

以下總結常見的資料庫物件,供自己複習

如有錯誤希望指出,共同學習!

一、索引

什麼是索引?

  索引是一種用於提高查詢效率的資料庫物件,使用索引可以快速定位資料,減少磁碟IO操作次數。索引是由資料庫自動維護,刪除或破壞索引不會對資料表造成影響,只會影響查詢速度。

索引的建立語法?

create [unique| bitmap]  INDEX index_name ON table_name(column1[,column2…]);

索引的分類?

唯一性索引、非唯一性索引 :按照索引欄位是否允許出現重複劃分

單欄位索引、聯合索引     :按照索引基於欄位的數目劃分

普通索引、函式索引       :按照索引基於的欄位是普通欄位還是複合表示式劃分

B樹索引、點陣圖索引        :按照索引的資料結構劃分

索引建立的原則?

1)、主鍵、外來鍵建立索引

2)、資料量大於300行的資料表建議建立索引

3)、若經常多表聯合查詢,則連線欄位應該建立索引

4)、經常出現在where字句中的欄位建議使用索引

5)、索引應該建立在小欄位上,對於大的文字欄位甚至超長欄位,不要建立索引

6)、頻繁進行資料操作的表,不建議建立太多的索引

二、檢視

什麼是檢視?

檢視是一種虛表,在已有的資料表或其他檢視的基礎上建立的,可以理解為儲存起來的查詢語句,檢視本身不儲存資料,因此對虛表的操作最終都會轉換為對基表的操作。

檢視有什麼優點缺點?

優點:

1)、可以儲存複雜的查詢語句,簡化查詢

2)、安全性角度,從檢視中查詢到的資料只是基表資料中的一部分,這樣可以遮蔽資料表結構,

      限制對資料的訪問。

3)、邏輯資料獨立性,檢視的存在可以使得應用程式和資料表一定程度上相互獨立,應用程式可

     以建立在檢視之上,沒有檢視的話,應用程式必定是建立在資料表上的。

4)、資料庫中實際上儲存的檢視編譯後的查詢指令,使用檢視查詢可以避免編譯過程,提高運

     行效率

缺點:

1)、對檢視的操作最終都會轉換為對基表的操作,因此如果是對複雜的檢視的修改操作可能會失

     敗。

建立檢視的語法格式?

create [or replace] VIEW view_name as subQuery;

三、儲存過程、函式

儲存過程

什麼是儲存過程?

  儲存過程用於執行特定的操作,將經常需要執行的特定操作建立為儲存過程,可以簡化客戶端應用程式的開發和維護,由於這些操作建立為儲存過程之後,在資料庫伺服器端儲存的是其編譯後的指令,因此呼叫儲存過程是不需要重新編譯,可以提高執行效率。

儲存過程的建立語法?

create [or replace] procedure procedure_name

[(形式引數1[,形式引數2..])]

IS | AS

[本地變數宣告]

begin

<執行語句>

[<異常處理程式碼>]

end [<procedure_name>];

函式

什麼是函式?

  函式用於返回特定的資料,可以將應用程式中經常使用SQL語句返回特定資料的操作建立為函式,通過函式可以簡化客戶端應用程式的開發和維護,提高應用程式的執行效能。

建立函式的語法格式?

create [or replace] function function_name [(形式引數1[,形式引數2..])]

retrun <dataType>

IS | AS

[本地變數宣告]

begin

<執行語句>

[<異常處理>]

end [<function_name>];

儲存過程與函式的區別?

1)、函式只能使用IN模式引數接收外界傳入的資料,而儲存過程可以用IN、OUT、IN OUT 三種

2)、函式必須有且只有一個返回值,用於將計算結果返回給呼叫環境;儲存過程不允許有返回

     值,但可以使用OUT、或IN OUT模式引數返回多個值給呼叫環境

3)、函式的返回值必須是Oracle資料庫支援的型別,不允許使用PL/SQL特有的資料型別

4)、函式不允許向儲存過程一樣被獨立呼叫,函式只能作為表示式的一部分來使用

四、觸發器

什麼是觸發器?

   觸發器是指被隱含執行的儲存過程,可以使用PLSQL、java或C語言進行開發。當發生特定的事件(比如修改表、建立物件、登入到資料庫等操作)時,系統會自動執行觸發器中的程式碼,類似於高階程式語言中的事件監聽器,主要用於資料的維護。

   觸發器由:觸發事件、觸發條件、觸發操作三部分組成。

觸發器的分類?

DML觸發器、系統事件觸發器、使用者事件觸發器

語句級觸發器、行級觸發器、INSTEAD OF觸發器

建立觸發器的語法格式?

create [or replace] trigger trigger_name

before insert or update or delete on table_name

declare

[宣告變數]

begin

<觸發操作>

end;

觸發器的應用?

安全性保護、對資料修改值的審計、提供完整性校驗規則、提供資料庫表的同步複製、事件日誌記錄等。