數據庫程序設計9 表結構設計——數據結構設計

目錄

Oracle數據類型

數值類型

number

binary_float和binary_double

特殊值

其他數值類型

字符類型

char

VARCHAR2

NCHAR/NVARCHAR2

日期類型

DATE類型

大對象

lob對象

Rowid\URowid 類型


Oracle數據類型

數值類型

number

一般用於數值運算的。

Number(precision,scale)

precision:精度。也稱爲總位數,取值範圍1~38,默認值爲38,也可以用字符*表示38。

版本10之後的新類型:

binary_floatbinary_double

在Oracle10g之前的版本中沒有這兩種類型。他們就是IEEE標準浮點數,用於近似數值,沒有NUMBER類型精確。

特殊值

BINARY_FLOAT_NAN  非BINARY_FLOAT類型的數字(NaN) 
BINARY_FLOAT_INFINITY  BINARY_FLOAT類型的無窮大(INF) 
BINARY_DOUBLE_NAN  非BINARY_DOUBLE類型的數字(NaN) 
BINARY_DOUBLE_INFINITY  BINARY_DOUBLE類型的無窮大(INF) 


其他數值類型

效率不同,效率會比較高。

字符類型

Oracle中的字符數據類型包括CHAR、 VARCHAR2以及帶“N”的相應變體(NCHAR 和NVARCHAR2),這些字符數據類型能存儲 2000字節或4000字節的文本。這些文本會由數 據庫根據需要在不同的字符集(character set)之間進行轉換。 
CHAR、VARCHAR2、NCHAR、 NVARCHAR2都是以同樣的格式進行存儲。

純英文不需要n開頭的,處理中文日文等需要考慮帶n的。

char

CHAR (size[ BYTE | CHAR] )

VARCHAR2

VARCHAR2 (size[ BYTE | CHAR] )

VARCHAR2是變長字符串類型,不會用空格填充至最大長度。此類型最多可存儲4000字節的信息。

NCHAR/NVARCHAR2

帶N表示Unicode字符集,兼容中文。

NVARCHAR2和NCHAR與相應的VARCHAR2和CHAR的區別在於:

  • 文本採用數據庫的國家字符集來存儲和管理,而不是默認字符集
  • 長度總是字符數,而CHAR/VARCHAR2可能會指定是字節還是字符

日期類型

Oracle固有數據類型DATE、TIMESTAMP和 INTERVAL是緊密相關的。DATE和 TIMESTAMP類型可以存儲固定日期/時間。 INTERVAL類型可以存儲一個時間量。 

DATE類型

DATE類型是一個7字節的定寬日期/時間數據 類型。它總是包含7個屬性,包括:世紀、世紀中的哪一年、月份、月份中的哪一天、小時、分鐘和秒。Oracle使用一種內部格式來表示這些信息。 

存儲中,oracle將不同字段分開存。在使用時,我們經常會將年月日分開使用。

大對象

Oracle Database 10g系統提供了4種大對象 (large object,lob)類型。這4種大對象類型的 特點分別如下:

  • blob類型:二進制lob類型,主要用於存儲二進制 數據。
  • clob類型:字符lob類型,可以用來存儲各種字符 數據。
  • nclob類型:國際語言字符lob類型,使用多字節存 儲各種語言的字符,主要用於存儲非英文字符。
  • bfile類型:二進制file類型,用於存儲指向數據庫 系統外的文件系統中的文件的指針。這些外部文件 可以儲存在硬盤上、DVD或CD等介質上。 

儘量使用lob類型來處理,因爲兼容。

lob對象

每一個lob對象都由兩部分組成:指針(定位器)和數據內容。

LOB數據的處理

對於每一個lob列,Oracle系統將保存一個定 位器值,以便找到該記錄存儲的外部數據。 在向包含了lob值的表中插入記錄時,可以用 函數來告訴Oracle爲內部存儲的lob列創建一 個空定位器。

注意,空定位器值與null值不同。如果一個內 部存儲的lob列值爲null,那麼在更新爲非null 值之前,必須將其設置爲空定位器.

在Oracle系統中,可以採用以下方式設置Lob 數據的空定位器: 

  • blob:empty_blob()
  • clob:empty_clob()
  • bfile:bfilename() 

提高大對象的使用效率 

Database 10g系統提供了許多提高使用大對象效率 的方法。這些方法主要包括:

  • 數據分區技術
  • 壓縮數據技術 
  • 並行處理技術 
  • 物化視圖技術 
  • RAC技術 (實時應用集羣)

數據分區技術

在Oracle Database 10g系統中,可以通過採 用分區技術,將大量的業務數據分區成比較小的數據。但是,這種分區技術對於終端用戶來說是不透明的。在Oracle Database 10g系統 中,從終端用戶的角度來看,這裏只有一個表。

壓縮數據技術 

如果業務數據的增長速度超過了系統設計的能 力,那麼會由於數據量過大帶來一系列查詢性 能上的問題。這時,可以使用Oracle database 10g系統提供的壓縮數據功能來壓縮業務數據,從而降低數據量。

並行技術 

在Oracle Database 10g系統中,還可以通過並行處 理的方式來提高查詢的性能。並行處理適用於大量數 據需要處理的情況,例如,掃描包含大量數據的表、 連接查詢多個表、創建大表的索引和掃描分區索引等。 

物化視圖技術 

物化視圖具有視圖的特徵,但是與視圖也不完 全相同。可以基於select語句創建物化視圖, 但是物化視圖可以物理地保留和存儲數據。使用物化視圖,可以執行各種查詢操作、可以被 分區、可以被壓縮、可以被並行處理,甚至可 以在其上面創建索引。

Rowid\URowid 類型

ROWID是數據庫中一行的地址。ROWID中編入了足夠多的信息,足以在磁盤上找到行,以及標識ROWID所指向的對象。ROWID並不真正存儲在行中,而是行的一個推導屬性,基於行的物理地址生成。

UROWID是ROWID的“近親”。它用於比如索引組織表(IOT) 和通過異構數據庫網關訪問的沒有固定ROWID的表。UROWID基於行的主鍵生成,是行主鍵值的一個表示。但是,UROWID並不作爲一個單獨的列存在,而只是作爲現有列的一個函數。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章