2008年11月28日 星期五

[Oracle] Creating & Using Database Objects

上一個部份提到 COMMIT 與 ROLLBACK,有一點需要注意的地方,就是 CREATE TABLE、ALTER TABLE、DROP TABLE …. 等語法,是隱含著 COMMIT 指令的,因此是無法被 ROOLBACK 的喔!


資料型態

Oracle 提供的資料型態很多,僅針對比較常用的來筆記。

VARCHAR2

這是處理字元資料最有效率的資料型態,長度範圍介於 1~4000;另外比較需要注意的是 NVARCHAR2,是用來儲存 Unicode 的字元。

CLOB (Character Large Object)

儲存超大型的字元資料,最大可以到 (4 -1) GB * database block size。

NUMBER

除了用來儲存整數外,浮點數也可以!

BINARY_FLOAT & BINARY_DOUBLE

比 NUMBER 更進階的浮點數型態,精準度更高,計算速度更快,儲存所需的空間也較少。

DATE

日期型態,支援許多不同的顯示格式。

TIMESTAMP

常用來追蹤事件發生的順序之用。


資料表(Table)

create table



alter table



管理 table index (索引)

當 table 中有 primary key 時,其實 Oracle 就會自動將 primary key 的欄位建立索引了!

create index



modify index



更詳細的 index 管理的語法,可以參考官方網站的文件:


檢視表(View)

以下是從 WIKI 上找來關於 View 的的資料:

===== 開始 =====

檢視表 (View) 是在關聯式資料庫中,將一組查詢指令構成的結果集組合成可查詢的資料表的一種資料庫物件。與資料表不同的是,資料表是一種實體結構(Physical Structure),但檢視表是一種虛擬結構(Virtual Structure),在實體資料表中的改變都可以立刻反應在檢視表中,不過部份資料庫管理系統也支援具更新能力的檢視表(Updatable View)。

檢視表具有下列的好處:

  • 可以將實體資料表隱藏起來,讓外部程式的設計師無法得知實際的資料結構,降低資料庫被攻擊的風險。

  • 在多數的情況下,檢視表是唯讀的,外部程式無法直接透過檢視表修改資料(具更新能力的檢視表除外)。

  • 簡化查詢,資料庫管理員可以將高度複雜的查詢,包裝在檢視表中,外部程式只需要直接存取該檢視表即可取出需要的資料。

  • 在檢視表中先行執行運算。

  • 檢視表可視為資料表,具有 JOIN 的能力。

  • 資料庫中只需要儲存定義,無須儲存資料。

===== 結束 =====

VIEW 的建立



VIEW 的修改



VIEW 的更名



刪除 VIEW



Sequence

Sequence 就像 MS SQL Server 中的流水號一樣,是 Oracle 用來管理流水號的資料庫物件,目的是用來產生循序且唯一的值

Sequence 的值如何使用? 主要是要透過兩個虛擬欄位,分別為:

  • CURRVAK

    此欄位代表目前 Sequence 的值,但在 Sequence 尚未初始化(呼叫 NEXTVAL)之前是沒辦法使用的。

  • NEXTVAL

    此欄位代表 Sequence 下一個會傳回的值;第一次使用代表進行 Sequence 的初始化。

需要注意的是,在 MS SQL Server 中,流水號是依附在特定 table 的特定欄位上;但在 Oracle 中,sequence 跟任何的 database object 都沒有關係。

因此若要拿 sequence 來產生流水號給 table 當 primary key,在 sequence 在命名時可以加入 table 名稱作為方便辨識之用。

建立 SEQUENCE



刪除 SEQUENCE



參考資料


Synonym

synonym 其實就是 schema object 的別名,除了可以用來協助簡化 SQL 語法外,還可以協助隱藏真正的 database object(基於某些安全考量)。

假設當 database 名稱被修改時,可以透過 synonym 的方式來避免應用程式的修改。

建立 SYNONYM



移除 SYNONYM



更詳細的資料,可以參考官方網站的文件:

參考資料

沒有留言:

張貼留言