Oracle提供了22種不同的sql數(shù)據(jù)類型供我們使用:
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、臨澤網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為臨澤等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
1、char :
這是個定長的字符串,會用空格填充來達(dá)到其最大長度。char 字段最多可以存儲2000字節(jié)信息;
2、nchar :
這個一個包含Unicode格式數(shù)據(jù)的定長字符串。與char類型有所不同,char類型定義的長度可為字節(jié)或字符。nchar字段最多可以存儲2000字節(jié)的信息;
3、varchar2 :
目前這也是varchar的同義詞。它是個變長字符串,與char類型不同,它不會用空格將字段或變量填充至最大長度。它最多可以存儲4000字節(jié)信息。自O(shè)racle12C起,它可以最多存儲32767字節(jié)信息;
4、nvarchar2 :
這個一個包含Unicode格式數(shù)據(jù)的變長字符串。它最多可以存儲4000字節(jié)的信息。自O(shè)racle12C起,它可以存儲最多32767字節(jié)的信息;
5、raw :
這個一種變長二進(jìn)制數(shù)據(jù)類型,也就是說采用這種數(shù)據(jù)類型存儲的數(shù)據(jù)不會發(fā)生字符集轉(zhuǎn)換。它最多存儲2000字節(jié)信息。自O(shè)racle12C起,它可以存儲最多32767字節(jié)的信息;
6、number :
這種數(shù)據(jù)類型能存儲精度最多達(dá)38位的數(shù)字,這種類型的數(shù)據(jù)會以變長方式來存儲,其長度在0~22字節(jié)(null值長度為0)。它的精度很高;
7、binary_float :
這是Oracle10 才開始有的一種新類型。它是一個32位單精度浮點數(shù),可以支持至少6位精度,占用磁盤上5個字節(jié)的存儲空間;
8、binary_double :
這是一種Oracle10 才開始有的新類型,它是一個64位雙精度浮點數(shù),可以支持至少15位精度,占用磁盤9字節(jié)的存儲空間;
9、long :
這種類型能存儲最多2GB的字符數(shù)據(jù)(2GB是指2千兆字節(jié),而不是2千兆個字符,因為在一個多字節(jié)字符集中,有的字符可能占用多個字節(jié)),不建議使用該類型,在現(xiàn)有的應(yīng)用中應(yīng)將long類型轉(zhuǎn)換為CLOB類型;
10、long raw :
該類型能存儲多大2GB的二進(jìn)制信息,與long類型同樣的原因建議在應(yīng)用中使用BLOB類型;
11、date :
這是個7字節(jié)的定寬日期/時間數(shù)據(jù)類型,其中共包含7個屬性:世紀(jì)、世紀(jì)中的哪一年、月份、天、小時、分鐘和秒;
12、timestamp :
這是個7字節(jié)或11字節(jié)的定寬日期時間數(shù)據(jù)類型(高精度會使用11字節(jié))。它與date數(shù)據(jù)類型不同,因為timestamp可以包含小數(shù)秒,帶小數(shù)秒的timestamp最多可以保留9位小數(shù);
13、timestamp with time zone :
這是一個13字節(jié)的定寬timestamp,不過它還提供了時區(qū)(time zone)支持。因為時區(qū)信息是與timestamp存儲在一起的,所以數(shù)據(jù)在插入時的時區(qū)信息會與時間一起保留下來;
14、timestamp with local time zone :
與timestamp類型,這是一種以7字節(jié)或11字節(jié)的定寬日期時間數(shù)據(jù)類型(高精度會使用11字節(jié));不過,這種類型對時區(qū)敏感;
15、interval year 10 month :
這是個5字節(jié)的定寬數(shù)據(jù)類型,用于存儲一個時段。這個類型將時段存儲為年數(shù)和月數(shù);我們可以在日期運算中使用這種時段,使一個date或timestamp類型的數(shù)據(jù)增加或減少一段時間;
16、interval day 10 second :
這是個11字節(jié)的定寬數(shù)據(jù)類型,用于存儲一個時段。這種類型將時段存儲為天、小時、分鐘、秒數(shù),還可以有最多9位的小數(shù)秒;
17、BLOB :
在Oracle9i以前最多能存儲4GB數(shù)據(jù),而從Oracle10以后最多能存儲(4GB-1)X(數(shù)據(jù)庫塊大小)字節(jié)的數(shù)據(jù);blob包含不需要進(jìn)行字符集轉(zhuǎn)換的二進(jìn)制數(shù)據(jù)。
18、CLOB :
在Oracle9i以前最多能存儲4GB數(shù)據(jù),而從Oracle10以后最多能存儲(4GB-1)X(數(shù)據(jù)庫塊大小)字節(jié)的數(shù)據(jù);當(dāng)發(fā)生字符集轉(zhuǎn)換時,CLOB會受到影響。這種數(shù)據(jù)類型很適合存儲大塊純文本信息。
19、NCLOB :
在Oracle9i以前最多能存儲4GB數(shù)據(jù),而從Oracle10以后最多能存儲(4GB-1)X(數(shù)據(jù)庫塊大小)字節(jié)的數(shù)據(jù);NVLOB會存儲以數(shù)據(jù)庫國家字符集編碼的信息,而且像CLOB一樣,當(dāng)發(fā)生字符集轉(zhuǎn)換時,這種類型也會受到影響;
20、BFILE :
這種數(shù)據(jù)類型可以在數(shù)據(jù)庫列中存儲一個Oracle目錄對象和一個文件名,我們可以通過它來讀取這個文件;
21、rowid:
rowid實際上是數(shù)據(jù)庫表中行的地址,它有10字節(jié)長。rowid中編碼的信息,不但足以在磁盤上定位每一行,而且還能識別出rowid指向的那行數(shù)據(jù)所屬的對象(表等);
22、urowid:
urowid是一個通用rowid,用于沒有固定rowid的表。urowid通常表現(xiàn)為主鍵的值。因此urowid的大小會根據(jù)所指向的對象而有所變化;
注意:從Oracle12C 起,varchar2、nvarchar2和raw類型可以存儲最多32767字節(jié)的信息,但是需要啟用擴(kuò)展數(shù)據(jù)類型。在默認(rèn)情況下這個特性沒有啟用的。
從Oracle12C起,varchar2 和 nvarchar2類型的最大長度由原來的4000字節(jié)變成現(xiàn)在最多存儲32767字節(jié),12C默認(rèn)情況下沒有啟用擴(kuò)展數(shù)據(jù)類型,需要手動啟動,如下:
shutdown immediate;
startup upgrade;
alter system set max_string_size=extended;
@?/rdbms/admin/utl32k.sql
shutdown immediate
startup;
---按照上面的命令就可以激活擴(kuò)展數(shù)據(jù)類型;
注意:一旦激活擴(kuò)展數(shù)據(jù)類型,是不可以回退的,除非做一個非完全恢復(fù),將數(shù)據(jù)恢復(fù)到變更的時間點前的狀態(tài);