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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM