當(dāng)你在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表的時(shí)候,你需要定義表中所有字段的類(lèi)型。ORACLE有許多種數(shù)據(jù)類(lèi)型以滿(mǎn)足你的需要。數(shù)據(jù)類(lèi)型大約分為:character, number, date, LOB, 和RAW等類(lèi)型。雖然ORACLE8i也允許你自定義數(shù)據(jù)類(lèi)型,但是它們是最基本的數(shù)據(jù)類(lèi)型。
在下面的文章中你將了解到他們?cè)趏racle 中的用法、限制以及允許值。
Character 數(shù)據(jù)類(lèi)型
Character 數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)字母數(shù)字型數(shù)據(jù)。當(dāng)你在oracle 中定義一個(gè)character 數(shù)據(jù)時(shí),通常需要制定字段的長(zhǎng)度,它是該字段的最大長(zhǎng)度。ORACLE提供以下幾種character 數(shù)據(jù)類(lèi)型:
CHAR() CHAR數(shù)據(jù)類(lèi)型是一種有固定長(zhǎng)度和最大長(zhǎng)度的字符串。存儲(chǔ)在數(shù)據(jù)類(lèi)型為CHAR字段中的數(shù)據(jù)將以空格的形式補(bǔ)到最大長(zhǎng)度。長(zhǎng)度定義在1——2000字節(jié)之間。
當(dāng)你創(chuàng)建一個(gè)CHAR型字段,數(shù)據(jù)庫(kù)將保證在這個(gè)字段中的所有數(shù)據(jù)是定義長(zhǎng)度,如果某個(gè)數(shù)據(jù)比定義長(zhǎng)度短,那么將用空格在數(shù)據(jù)的右邊補(bǔ)到定義長(zhǎng)度。如果長(zhǎng)度大于定義長(zhǎng)度將會(huì)觸發(fā)錯(cuò)誤信息。
VARCHAR() varchar型數(shù)據(jù)是varchar2型數(shù)據(jù)的快照。
VARCHAR2() varchar2數(shù)據(jù)類(lèi)型是一種可變長(zhǎng)度的、有最大長(zhǎng)度的字母數(shù)字型數(shù)據(jù)。Varchar2類(lèi)型的字段長(zhǎng)度可以達(dá)到4000字節(jié),Varchar2類(lèi)型的變量長(zhǎng)度可以達(dá)到32676字節(jié)。
一個(gè)空的varchar2(2000)字段和一個(gè)空的varchar2(2)字段所占用的空間是一樣的。
NCHAR() 和 NVARCHAR2() NCHAR() 和 NVARCHAR2()數(shù)據(jù)類(lèi)型分別與CHAR() 和 VARCHAR2()類(lèi)型是相同的,只不過(guò)它們用來(lái)存儲(chǔ)NLS(National Language Support)數(shù)據(jù)。
LONG LONG 數(shù)據(jù)類(lèi)型是一個(gè)遺留下來(lái)的而且在將來(lái)不會(huì)被支持的數(shù)據(jù)類(lèi)型。它將被LOB(Large Object)數(shù)據(jù)類(lèi)型所代替。
比較規(guī)則 Varchar2和char數(shù)據(jù)類(lèi)型根據(jù)尾部的空格有不同的比較規(guī)則。對(duì)Char型數(shù)據(jù),尾部的空格將被忽略掉,對(duì)于Varchar2型數(shù)據(jù)尾部帶空格的數(shù)據(jù)排序比沒(méi)有空格的要大些。比如:
Char 型數(shù)據(jù): ‘YO’=‘YO ’
Varchar2型數(shù)據(jù): ‘YO’<’YO ’
Numberic 數(shù)據(jù)類(lèi)型
Numberic 數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)負(fù)的和正的整數(shù)、分?jǐn)?shù)和浮點(diǎn)型數(shù)據(jù),范圍在-1*10-103 和9.999…99*10125之間,有38位的精確度。標(biāo)識(shí)一個(gè)數(shù)據(jù)超出這個(gè)范圍時(shí)就會(huì)出錯(cuò)。
Number( ,) Number數(shù)據(jù)類(lèi)型存儲(chǔ)一個(gè)有p位精確度的s位等級(jí)的數(shù)據(jù)。
DATE 數(shù)據(jù)類(lèi)型
DATE 數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)日期和時(shí)間格式的數(shù)據(jù)。這種格式可以轉(zhuǎn)換為其他格式的數(shù)據(jù)去瀏覽,而且它有專(zhuān)門(mén)的函數(shù)和屬性用來(lái)控制和計(jì)算。以下的幾種信息都包含在DATE數(shù)據(jù)類(lèi)型中:
Century
Year
Month
Day
Hour
Minute
Second
LOB 數(shù)據(jù)類(lèi)型
LOB(Large Object) 數(shù)據(jù)類(lèi)型存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),比如二進(jìn)制文件,圖形文件,或其他外部文件。LOB 可以存儲(chǔ)到4G字節(jié)大小。數(shù)據(jù)可以存儲(chǔ)到數(shù)據(jù)庫(kù)中也可以存儲(chǔ)到外部數(shù)據(jù)文件中。LOB數(shù)據(jù)的控制通過(guò)DBMS_LOB 包實(shí)現(xiàn)。BLOB, NCLOB, 和CLOB 數(shù)據(jù)可以存儲(chǔ)到不同的表空間中,BFILE存儲(chǔ)在服務(wù)器上的外部文件中。LOB數(shù)據(jù)類(lèi)型有以下幾種:
BLOB: 二進(jìn)制數(shù)據(jù)
CLOB: 字符型數(shù)據(jù)
BFILE: 二進(jìn)制文件
其他數(shù)據(jù)類(lèi)型
ROWID ROWID 數(shù)據(jù)類(lèi)型是ORACLE數(shù)據(jù)表中的一個(gè)偽列,它是數(shù)據(jù)表中每行數(shù)據(jù)內(nèi)在的唯一的標(biāo)識(shí)。