ORACLE的所有字段类型
?http://space.itpub.net/7648593/viewspace-545486
字段類型 ????????? ?中文說(shuō)明 ??????????????????????????????????????????????????? ????? ?限制條件 ? 其它說(shuō)明 ? ?
? CHAR ????????????????? 固定長(zhǎng)度字符串????????????????????????????????????????????????最大長(zhǎng)度2000 ? bytes ? ? ?
? VARCHAR2 ???? ? 可變長(zhǎng)度的字符串???????????????????????????????????? ??????? 最大長(zhǎng)度4000 ? bytes ? ? 可做索引的最大長(zhǎng)度749 ? ?
? NCHAR ??????????? ? 根據(jù)字符集而定的固定長(zhǎng)度字符串?????? ??????? ? 最大長(zhǎng)度2000 ? bytes ? ? ? ?
? NVARCHAR2???? 根據(jù)字符集而定的可變長(zhǎng)度字符串 ?????????????? 最大長(zhǎng)度4000 ? bytes ? ? ? ?
? DATE ????????????????? ?日期(日-月-年) ? DD-MM-YY(HH-MI-SS) ? 經(jīng)過(guò)嚴(yán)格測(cè)試,無(wú)千蟲問(wèn)題 ? ?
? LONG?????????????????? 超長(zhǎng)字符串???????????????????????????????????????????????????? ?? 最大長(zhǎng)度2G(231-1) ? 足夠存儲(chǔ)大部頭著作 ? ?
? RAW???????????????????? 固定長(zhǎng)度的二進(jìn)制數(shù)據(jù)???????????????????????????????????? 最大長(zhǎng)度2000 ? bytes ? ? 可存放多媒體圖象聲音等 ? ?
? LONG?????????????????? RAW ? 可變長(zhǎng)度的二進(jìn)制數(shù)據(jù)?????????????????????????最大長(zhǎng)度2G ? 同上 ? ?
? BLOB?????????????????? 二進(jìn)制數(shù)據(jù)??????????????????????????????????????????????????????????最大長(zhǎng)度4G ? ? ?
? CLOB?????????????????? 字符數(shù)據(jù)??????????????????????????????????????????????????????????????最大長(zhǎng)度4G ? ? ?
? NCLOB???????????????? 根據(jù)字符集而定的字符數(shù)據(jù)?????????????????????? ???? 最大長(zhǎng)度4G ? ? ?
? BFILE?????????????????? 存放在數(shù)據(jù)庫(kù)外的二進(jìn)制數(shù)據(jù)??????????????????? ???? 最大長(zhǎng)度4G ? ? ?
? ROWID???????????????? 數(shù)據(jù)表中記錄的唯一行號(hào)??????????????????????????? ? ? 10 ? bytes ? ********.****.****格式,*為0或1 ? ?
? NROWID????????????? 二進(jìn)制數(shù)據(jù)表中記錄的唯一行號(hào)?? ?????????? ??? ? 最大長(zhǎng)度4000 ? bytes ? ?
? NUMBER(P,S)??? 數(shù)字類型?????????????????????????????????????????????????????? ???? ?P為整數(shù)位,S為小數(shù)位 ? ?
? DECIMAL(P,S)??? 數(shù)字類型????????????????????????????????????????????????????? ? ?? ? P為整數(shù)位,S為小數(shù)位 ? ?
? INTEGER?????????????整數(shù)類型?????????????????????????????????????????????????????????? ??小的整數(shù) ? ?
? FLOAT????????????????? 浮點(diǎn)數(shù)類型???????????????????????????????????????????????????? ??? NUMBER(38),雙精度 ? ?
? REAL?????????????????? 實(shí)數(shù)類型???????????????????????????????????????????????? ???????????? NUMBER(63),精度更高????
http://blog.csdn.net/redarmy_chen/article/details/7024384
字段類型??? 中文說(shuō)明??? 限制條件??? 其它說(shuō)明????
?? CHAR??? 固定長(zhǎng)度字符串??? 最大長(zhǎng)度2000??? bytes??????????
?? VARCHAR2??? 可變長(zhǎng)度的字符串??? 最大長(zhǎng)度4000??? bytes????? 可做索引的最大長(zhǎng)度749????
?? NCHAR??? 根據(jù)字符集而定的固定長(zhǎng)度字符串??? 最大長(zhǎng)度2000??? bytes??????????
?? NVARCHAR2??? 根據(jù)字符集而定的可變長(zhǎng)度字符串??? 最大長(zhǎng)度4000??? bytes??????????
?? DATE??? 日期(日-月-年)??? DD-MM-YY(HH-MI-SS)??? 經(jīng)過(guò)嚴(yán)格測(cè)試,無(wú)千蟲問(wèn)題????
?? LONG??? 超長(zhǎng)字符串??? 最大長(zhǎng)度2G(231-1)??? 足夠存儲(chǔ)大部頭著作????
?? RAW??? 固定長(zhǎng)度的二進(jìn)制數(shù)據(jù)??? 最大長(zhǎng)度2000??? bytes????? 可存放多媒體圖象聲音等????
?? LONG??? RAW??? 可變長(zhǎng)度的二進(jìn)制數(shù)據(jù)??? 最大長(zhǎng)度2G??? 同上????
?? BLOB??? 二進(jìn)制數(shù)據(jù)??? 最大長(zhǎng)度4G????????
?? CLOB??? 字符數(shù)據(jù)??? 最大長(zhǎng)度4G????????
?? NCLOB??? 根據(jù)字符集而定的字符數(shù)據(jù)??? 最大長(zhǎng)度4G????????
?? BFILE??? 存放在數(shù)據(jù)庫(kù)外的二進(jìn)制數(shù)據(jù)??? 最大長(zhǎng)度4G????????
?? ROWID??? 數(shù)據(jù)表中記錄的唯一行號(hào)??? 10??? bytes??? ********.****.****格式,*為0或1????
?? NROWID??? 二進(jìn)制數(shù)據(jù)表中記錄的唯一行號(hào)??? 最大長(zhǎng)度4000??? bytes????
?? NUMBER(P,S)??? 數(shù)字類型??? P為整數(shù)位,S為小數(shù)位????
?? DECIMAL(P,S)??? 數(shù)字類型??? P為整數(shù)位,S為小數(shù)位????
?? INTEGER??? 整數(shù)類型??? 小的整數(shù)????
?? FLOAT??? 浮點(diǎn)數(shù)類型??? NUMBER(38),雙精度????
?? REAL??? 實(shí)數(shù)類型??? NUMBER(63),精度更高????
數(shù)據(jù)類型 參數(shù) 描述
char(n) n=1 to 2000字節(jié) 定長(zhǎng)字符串,n字節(jié)長(zhǎng),如果不指定長(zhǎng)度,缺省為1個(gè)字節(jié)長(zhǎng)(一個(gè)漢字為2字節(jié))
varchar2(n) n=1 to 4000字節(jié) 可變長(zhǎng)的字符串,具體定義時(shí)指明最大長(zhǎng)度n,
這種數(shù)據(jù)類型可以放數(shù)字、字母以及ASCII碼字符集(或者EBCDIC等數(shù)據(jù)庫(kù)系統(tǒng)接受的字符集標(biāo)準(zhǔn))中的所有符號(hào)。
如果數(shù)據(jù)長(zhǎng)度沒有達(dá)到最大值n,Oracle 8i會(huì)根據(jù)數(shù)據(jù)大小自動(dòng)調(diào)節(jié)字段長(zhǎng)度,
如果你的數(shù)據(jù)前后有空格,Oracle 8i會(huì)自動(dòng)將其刪去。VARCHAR2是最常用的數(shù)據(jù)類型。
可做索引的最大長(zhǎng)度3209。
number(m,n) m=1 to 38
n=-84 to 127 可變長(zhǎng)的數(shù)值列,允許0、正值及負(fù)值,m是所有有效數(shù)字的位數(shù),n是小數(shù)點(diǎn)以后的位數(shù)。
如:number(5,2),則這個(gè)字段的最大值是99,999,如果數(shù)值超出了位數(shù)限制就會(huì)被截取多余的位數(shù)。
如:number(5,2),但在一行數(shù)據(jù)中的這個(gè)字段輸入575.316,則真正保存到字段中的數(shù)值是575.32。
如:number(3,0),輸入575.316,真正保存的數(shù)據(jù)是575。?
date 無(wú) 從公元前4712年1月1日到公元4712年12月31日的所有合法日期,
Oracle 8i其實(shí)在內(nèi)部是按7個(gè)字節(jié)來(lái)保存日期數(shù)據(jù),在定義中還包括小時(shí)、分、秒。
缺省格式為DD-MON-YY,如07-11月-00 表示2000年11月7日。?
long 無(wú) 可變長(zhǎng)字符列,最大長(zhǎng)度限制是2GB,用于不需要作字符串搜索的長(zhǎng)串?dāng)?shù)據(jù),如果要進(jìn)行字符搜索就要用varchar2類型。
long是一種較老的數(shù)據(jù)類型,將來(lái)會(huì)逐漸被BLOB、CLOB、NCLOB等大的對(duì)象數(shù)據(jù)類型所取代。?
raw(n) n=1 to 2000 可變長(zhǎng)二進(jìn)制數(shù)據(jù),在具體定義字段的時(shí)候必須指明最大長(zhǎng)度n,Oracle 8i用這種格式來(lái)保存較小的圖形文件或帶格式的文本文件,如Miceosoft Word文檔。
raw是一種較老的數(shù)據(jù)類型,將來(lái)會(huì)逐漸被BLOB、CLOB、NCLOB等大的對(duì)象數(shù)據(jù)類型所取代。?
long raw 無(wú) 可變長(zhǎng)二進(jìn)制數(shù)據(jù),最大長(zhǎng)度是2GB。Oracle 8i用這種格式來(lái)保存較大的圖形文件或帶格式的文本文件,如Miceosoft Word文檔,以及音頻、視頻等非文本文件。
在同一張表中不能同時(shí)有l(wèi)ong類型和long raw類型,long raw也是一種較老的數(shù)據(jù)類型,將來(lái)會(huì)逐漸被BLOB、CLOB、NCLOB等大的對(duì)象數(shù)據(jù)類型所取代。?
blob
clob
nclob 無(wú) 三種大型對(duì)象(LOB),用來(lái)保存較大的圖形文件或帶格式的文本文件,如Miceosoft Word文檔,以及音頻、視頻等非文本文件,最大長(zhǎng)度是4GB。
LOB有幾種類型,取決于你使用的字節(jié)的類型,Oracle 8i實(shí)實(shí)在在地將這些數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi)部保存。
可以執(zhí)行讀取、存儲(chǔ)、寫入等特殊操作。?
bfile 無(wú) 在數(shù)據(jù)庫(kù)外部保存的大型二進(jìn)制對(duì)象文件,最大長(zhǎng)度是4GB。
這種外部的LOB類型,通過(guò)數(shù)據(jù)庫(kù)記錄變化情況,但是數(shù)據(jù)的具體保存是在數(shù)據(jù)庫(kù)外部進(jìn)行的。
Oracle 8i可以讀取、查詢BFILE,但是不能寫入。
大小由操作系統(tǒng)決定。?
數(shù)據(jù)類型是列或存儲(chǔ)過(guò)程中的一個(gè)屬性。
??? Oracle支持的數(shù)據(jù)類型可以分為三個(gè)基本種類:字符數(shù)據(jù)類型、數(shù)字?jǐn)?shù)據(jù)類型以及表示其它數(shù)據(jù)的數(shù)據(jù)類型。
??? 字符數(shù)據(jù)類型
????? CHAR???????????? char數(shù)據(jù)類型存儲(chǔ)固定長(zhǎng)度的字符值。一個(gè)CHAR數(shù)據(jù)類型可以包括1到2000個(gè)字符。如果對(duì)CHAR沒有明確地說(shuō)明長(zhǎng)度,它的默認(rèn)長(zhǎng)度則設(shè)置為1。如果對(duì)某個(gè)CHAR類型變量賦值,其長(zhǎng)度小于規(guī)定的長(zhǎng)度,那么Oracle自動(dòng)用空格填充。
????? VARCHAR2 存儲(chǔ)可變長(zhǎng)度的字符串。雖然也必須指定一個(gè)VARCHAR2數(shù)據(jù)變量的長(zhǎng)度,但是這個(gè)長(zhǎng)度是指對(duì)該變量賦值的最大長(zhǎng)度而非實(shí)際賦值長(zhǎng)度。不需用空格填充。最多可設(shè)置為4000個(gè)字符。因?yàn)閂ARCHAR2數(shù)據(jù)類型只存儲(chǔ)為該列所賦的字符(不加空格),所以VARCHAR2需要的存儲(chǔ)空間比CHAR數(shù)據(jù)類型要小。
??? Oracle推薦使用VARCHAR2
????? NCHAR和NVARCHAR2 NCHAR和NVARCHAR2數(shù)據(jù)類型分別存儲(chǔ)固定長(zhǎng)度與可變長(zhǎng)度的字符串,但是它們使用的是和數(shù)據(jù)庫(kù)其他類型不同的字符集。在創(chuàng)建數(shù)據(jù)庫(kù)時(shí),需要指定所使用的字符集,以便對(duì)數(shù)據(jù)中數(shù)據(jù)進(jìn)行編碼。還可以指定一個(gè)輔助的字符集[即本地語(yǔ)言集]。NCHAR和NVARCHAR2類型的列使用輔助字符集。NCHAR和NVARCHAR2類型的列使用輔助字符集。
????? 在Oracle 9i中,可以以字符而不是字節(jié)為單位表示NCHAR和NVARCHAR2列的長(zhǎng)度。
????? LONG long數(shù)據(jù)類型可以存放2GB的字符數(shù)據(jù),它是從早期版本中繼承下來(lái)的。現(xiàn)在如果存儲(chǔ)大容量的數(shù)據(jù),Oracle推薦使用CLOB和NCLOB數(shù)據(jù)類型。在表和SQL語(yǔ)句中使用LONG類型有許多限制。
????? CLOB和NCLOB??? CLOB和NCLOB數(shù)據(jù)類型可以存儲(chǔ)多達(dá)4GB的字符數(shù)據(jù)。NCLOB數(shù)據(jù)類型可存儲(chǔ)NLS數(shù)據(jù)。
????? 數(shù)字?jǐn)?shù)據(jù)類型
????? Oracle使用標(biāo)準(zhǔn)、可變長(zhǎng)度的內(nèi)部格式來(lái)存儲(chǔ)數(shù)字。這個(gè)內(nèi)部格式精度可以高達(dá)38位。
????? NUMBER數(shù)據(jù)類型可以有兩個(gè)限定符,如:column NUMBER(precision,scale)。precision表示數(shù)字中的有效位。如果沒有指定precision的話,Oracle將使用38作為精度。scale表示小數(shù)點(diǎn)右邊的位數(shù),scale默認(rèn)設(shè)置為0。如果把scale設(shè)成負(fù)數(shù),Oracle將把該數(shù)字取舍到小數(shù)點(diǎn)左邊的指定位數(shù)。
????? 日期數(shù)據(jù)類型
?????? Oracle標(biāo)準(zhǔn)日期格式為:DD-MON-YY HH:MI:SS
?????? 通過(guò)修改實(shí)例的參數(shù)NLS_DATE_FORMAT,可以改變實(shí)例中插入日期的格式。在一個(gè)會(huì)話期間,可以通過(guò)Alter session SQL命令來(lái)修改日期,或者通過(guò)使用SQL語(yǔ)句的TO_DATE表達(dá)式中的參數(shù)來(lái)更新一個(gè)特定值。
?????? 其它的數(shù)據(jù)類型
?????? RAW和LONG RAW??? RAW和LONG RAW數(shù)據(jù)類型主要用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行解釋。指定這兩種類型時(shí),Oracle以位的形式來(lái)存儲(chǔ)數(shù)據(jù)。RAW數(shù)據(jù)類型一般用于存儲(chǔ)有特定格式的對(duì)象,如位圖。RAW數(shù)據(jù)類型可占用2KB的空間,而LONG RAW數(shù)據(jù)類型則可以占用2GB大小。
?????? ROWID ROWID是一種特殊的列類型,稱之為偽列(pseudocolumn)。ROWID偽列在SQL SELECT語(yǔ)句中可以像普通列那樣被訪問(wèn)。Oracle數(shù)據(jù)庫(kù)中每行都有一個(gè)偽列。ROWID表示行的地址,ROWID偽列用ROWID數(shù)據(jù)類型定義。
?????? ROWID與磁盤驅(qū)動(dòng)的特定位置有關(guān),因此,ROWID是獲得行的最快方法。但是,行的ROWID會(huì)隨著卸載和重載數(shù)據(jù)庫(kù)而發(fā)生變化,因此建議不要在事務(wù)中使用ROWID偽列的值。例如,一旦當(dāng)前應(yīng)用已經(jīng)使用完記錄,就沒有理由保存行的ROWID。不能通過(guò)任何SQL語(yǔ)句來(lái)設(shè)置標(biāo)準(zhǔn)的ROWID偽列的值。
????? 列或變量可以定義成ROWID數(shù)據(jù)類型,但是Oracle不能保證該列或變量的值是一個(gè)有效的ROWID。
??? LOB(大型對(duì)象)數(shù)據(jù)類型,可以保存4GB的信息。LOB有以下3中類型:
????? <CLOB>,只能存儲(chǔ)字符數(shù)據(jù)
??? <NCLOB>,保存本地語(yǔ)言字符集數(shù)據(jù)
??? <BLOB>??? ,以二進(jìn)制信息保存數(shù)據(jù)
????? 可以指定將一個(gè)LOB數(shù)據(jù)保存在Oracle數(shù)據(jù)庫(kù)內(nèi),還是指向一個(gè)包含次數(shù)據(jù)的外部文件。
????? LOB可以參與事務(wù)。管理LOB中的數(shù)據(jù)必須通過(guò)DBMS_LOB PL/SQL內(nèi)置軟件包或者OGI接口。
????? 為了便于將LONG數(shù)據(jù)類型轉(zhuǎn)換成LOB,Oracle 9i包含許多同時(shí)支持LOB和LONG的函數(shù),喊包括一個(gè)ALTER TABLE語(yǔ)句的新選擇,它允許將LONG數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換成LOB。
??? BFILE
????? BFILE數(shù)據(jù)類型用做指向存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)以外的文件的指針。
????? XML Type
????? 作為對(duì)XML支持的一部分,Oracle 9i包含了一個(gè)新的數(shù)據(jù)類型XML Type。定義為XMLType的列將存儲(chǔ)一個(gè)字符LOB列中的XML文檔。有許多內(nèi)置的功能可以使你從文檔中抽取單個(gè)節(jié)點(diǎn),還可以在XML Type文檔中對(duì)任何節(jié)點(diǎn)創(chuàng)建索引。
????? 用戶自定義數(shù)據(jù)
????? 從Oracle 8以后,用戶可以定義自己的復(fù)雜數(shù)據(jù)類型,它們由Oracle基本數(shù)據(jù)類型組合而成。
????? AnyType、AnyData和AnyDataSet
?????? Oracle包括3個(gè)新的數(shù)據(jù)類型,用于定義在現(xiàn)有數(shù)據(jù)類型之外的數(shù)據(jù)結(jié)構(gòu)。其中每種數(shù)據(jù)類型必須用程序單元來(lái)定義,以便讓Oracle9i知道如何處理這些類型的特定實(shí)現(xiàn)。
??? 類型轉(zhuǎn)換
??? Oracle會(huì)自動(dòng)將某些數(shù)據(jù)類型轉(zhuǎn)換成其他的數(shù)據(jù)類型,轉(zhuǎn)換取決于包括該值的SQL語(yǔ)句。
??? 數(shù)據(jù)轉(zhuǎn)換還可以通過(guò)Oracle的類型轉(zhuǎn)換函數(shù)顯示地進(jìn)行。
??? 連接與比較
??? 在大多數(shù)平臺(tái)上Oracle SQL中的連接操作符用兩條豎線(||)表示。連接是將兩個(gè)字符值連接。Oracle的自動(dòng)類型轉(zhuǎn)換功能使得兩個(gè)數(shù)字值也可以進(jìn)行連接。
??? NULL
??? NULL值是關(guān)系數(shù)據(jù)庫(kù)的重要特征之一。實(shí)際上,NULL不代表任何值,它表示沒有值。如果要?jiǎng)?chuàng)建表的一個(gè)列,而這個(gè)列必須有值,那么應(yīng)將它指定為NOT NULL,這表示該列不能包含NULL值。
??? 任何數(shù)據(jù)類型都可以賦予NULL值。NULL值引入了SQL運(yùn)算的三態(tài)邏輯。如果比較的一方是NULL值,那么會(huì)出現(xiàn)3種狀態(tài):TURE、FALSE以及兩者都不是。
??? 因?yàn)镹ULL值不等于0或其他任何值,所以測(cè)試某個(gè)數(shù)據(jù)是否為NULL值只能通過(guò)關(guān)系運(yùn)算符IS NULL來(lái)進(jìn)行。
??? NULL值特別適合以下情況:當(dāng)一個(gè)列還未賦值時(shí)。如果選擇不使用NULL值,那么必須對(duì)行的所有列都要賦值。這實(shí)際上也取消了某列不需要值的可能性,同時(shí)對(duì)它賦的值也很容易產(chǎn)生誤解。這種情況則可能誤導(dǎo)終端用戶,并且導(dǎo)致累計(jì)操作的錯(cuò)誤結(jié)果。
number(p,s)
p:1~38
s:-84~127
p>0,對(duì)s分2種情況:1. s>0
精確到小數(shù)點(diǎn)右邊s位,并四舍五入。然后檢驗(yàn)有效數(shù)位是否<=p;如果s>p,小數(shù)點(diǎn)右邊至少有s-p個(gè)0填充。
2. s<0
精確到小數(shù)點(diǎn)左邊s位,并四舍五入。然后檢驗(yàn)有效數(shù)位是否<=p+|s|
123.2564 NUMBER 123.2564
1234.9876 NUMBER(6,2) 1234.99
12345.12345 NUMBER(6,2) Error
1234.9876 NUMBER(6) 1235
12345.345 NUMBER(5,-2) 12300
1234567 NUMBER(5,-2) 1234600
12345678 NUMBER(5,-2) Error
123456789 NUMBER(5,-4) 123460000
1234567890 NUMBER(5,-4) Error
12345.58 NUMBER(*, 1) 12345.6
0.1 NUMBER(4,5) Error
0.01234567 NUMBER(4,5) 0.01235
0.09999 NUMBER(4,5) 0.09999
?
出處:http://www.baanerp.com/post/95.html
?
總結(jié)
以上是生活随笔為你收集整理的ORACLE的所有字段类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle中table变量在JDBC中
- 下一篇: oracle 数组类型