溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle基礎(chǔ)-數(shù)據(jù)類型總結(jié)

發(fā)布時間:2020-07-15 15:03:15 來源:網(wǎng)絡(luò) 閱讀:602 作者:一個笨小孩 欄目:數(shù)據(jù)庫

Oracle提供了22種不同的sql數(shù)據(jù)類型供我們使用:

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é)的信息,但是需要啟用擴展數(shù)據(jù)類型。在默認(rèn)情況下這個特性沒有啟用的。


從Oracle12C起,varchar2 和 nvarchar2類型的最大長度由原來的4000字節(jié)變成現(xiàn)在最多存儲32767字節(jié),12C默認(rèn)情況下沒有啟用擴展數(shù)據(jù)類型,需要手動啟動,如下:

shutdown immediate;

startup upgrade;

alter system set max_string_size=extended;

@?/rdbms/admin/utl32k.sql

shutdown immediate

startup;

---按照上面的命令就可以激活擴展數(shù)據(jù)類型;

注意:一旦激活擴展數(shù)據(jù)類型,是不可以回退的,除非做一個非完全恢復(fù),將數(shù)據(jù)恢復(fù)到變更的時間點前的狀態(tài);


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI