1. 程式人生 > 其它 >Oracle資料庫之資料型別

Oracle資料庫之資料型別

Oracle資料庫之資料型別

Oracle基本資料型別(亦叫內建資料型別,internal datatypes或built-in datatypes)可以按型別分為:字串型別、數字型別、日期型別、LOB型別、LONG RAW&RAW型別、ROWID&UROWID型別。

下面介紹常用的Oracle資料型別:

一、字串型別

字串資料型別可以依據儲存空間分為固定長度型別(CHAR/NCHAR) 和可變長度型別(VARCHAR2/NVARCHAR2)兩種。

固定長度:是指雖然輸入的欄位值小於該欄位的限制長度,但是實際儲存資料時,會先自動向右補足空格後,才將欄位值的內容儲存到資料塊中。

可變長度:是指當輸入的欄位值小於該欄位的限制長度時,直接將欄位值的內容儲存到資料塊中,而不會補上空白,這樣可以節省資料塊空間。

1. CHAR

定長字串,會用空格填充來達到其最大長度。非NULL的CHAR(12)總是包含12位元組資訊。CHAR欄位最多可以儲存2000位元組的資訊。如果建立表時,不指定CHAR長度,則預設為1。另外你可以指定它儲存位元組或字元,例如 CHAR(12 BYTYE)、CHAR(12 CHAR)。一般來說預設是儲存位元組。

2. NCHAR

一個包含UNICODE格式資料的定長字串。NCHAR欄位最多可以儲存2000位元組的資訊,它的最大長度取決於國家字符集。

3. VARCHAR2

變長字串,與CHAR型別不同,它不會使用空格填充至最大長度。VARCHAR2最多可以儲存4000位元組的資訊。

4. NVARCHAR2

一個包含UNICODE格式資料的變長字串,NVARCHAR2最多可以儲存4000位元組的資訊。

二、數字型別

1. NUMBER

NUMBER(P,S)是最常見的數字型別,可以存放資料範圍為10^130~10^126(不包含此值),需要1~22位元組(BYTE)不等的儲存空間。

P 是Precison的英文縮寫,即精度縮寫,表示有效數字的位數,最多不能超過38個有效數字。

S是Scale的英文縮寫,可以使用的範圍為-84~127。Scale為正數時,表示從小數點到最低有效數字的位數,它為負數時,表示從最大有效數字到小數點的位數。

2. INTEGER

INTEGER是NUMBER的子型別,它等同於NUMBER(38,0),用來儲存整數。若插入、更新的數值有小數,則會被四捨五入。

3. FLOAT

FLOAT型別也是NUMBER的子型別。

Float(n),數n指示位的精度,可以儲存的值的數目。n值的範圍可以從 1 到 126。若要從二進位制轉換為十進位制的精度,請將n乘以 0.30103。要從十進位制轉換為二進位制的精度,請用3.32193乘小數精度。126位二進位制精度的最大值是大約相當於38位小數精度。

三、日期型別

1. DATE

DATE是最常用的資料型別,日期資料型別儲存日期和時間資訊。雖然可以用字元或數字型別表示日期和時間資訊,但是日期資料型別具有特殊關聯的屬性。為每個日期值,Oracle 儲存以下資訊: 世紀、 年、 月、 日期、 小時、 分鐘和秒。一般佔用7個位元組的儲存空間。

2. TIMESTAMP

TIMESTAMP是一個7位元組或12位元組的定寬日期/時間資料型別,是DATE型別的擴充套件型別。它與DATE資料型別不同,因為TIMESTAMP可以包含小數秒,帶小數秒的TIMESTAMP在小數點右邊最多可以保留9位

四、LOB型別

內建的LOB資料型別包括BLOB、CLOB、NCLOB、BFILE(外部儲存)的大型化和非結構化資料,如文字、影象、視訊、空間資料儲存。

1. CLOB

CLOB儲存單位元組和多位元組字元資料。支援固定寬度和可變寬度的字符集。CLOB物件可以儲存最多 (4 gigabytes-1) * (database block size) 大小的字元

2. NCLOB

NCLOB儲存UNICODE型別的資料,支援固定寬度和可變寬度的字符集,NCLOB物件可以儲存最多(4 gigabytes-1) * (database block size)大小的文字資料。

3. BLOB

BLOB儲存非結構化的二進位制資料大物件,它可以被認為是沒有字符集語義的位元流,一般是影象、聲音、視訊等檔案。BLOB物件最多儲存(4 gigabytes-1) * (database block size)的二進位制資料。

4. BFILE 資料型別

二進位制檔案,儲存在資料庫外的系統檔案,只讀的,資料庫會將該檔案當二進位制檔案處理。

五、RAW & LONG RAW

1. RAW

用於儲存二進位制或字元型別資料,變長二進位制資料型別,這說明採用這種資料型別儲存的資料不會發生字符集轉換。這種型別最多可以儲存2000位元組的資訊,建議使用 BLOB 來代替它

2. LONG RAW

LONG RAW型別,能儲存2GB的原始二進位制資料(不用進行字符集轉換的資料)。建議使用BLOB來代替它。

六、ROWID & UROWID型別

1. ROWID

ROWID是一種特殊的列型別,稱之為偽列(pseudocolumn)。ROWID偽列在SQL SELECT語句中可以像普通列那樣被訪問。ROWID表示行的地址,ROWID偽列用ROWID資料型別定義。Oracle資料庫中每行都有一個偽列。

ROWID與磁碟驅動的特定位置有關,因此,ROWID是獲得行的最快方法。但是,行的ROWID會隨著解除安裝和過載資料庫而發生變化,因此建議不要在事務中使用ROWID偽列的值。例如,一旦當前應用已經使用完記錄,就沒有理由儲存行的ROWID。不能通過任何SQL語句來設定標準的ROWID偽列的值。

列或變數可以定義成ROWID資料型別,但是Oracle不能保證該列或變數的值是一個有效的ROWID。

2. UROWID

UROWID,它用於表,是行主鍵的一個表示,基於主鍵生成。UROWID與ROWID的區別就是UROWID可以表示各種ROWID,使用較安全。一般是索引組織表在使用UROWID。