1. 程式人生 > >Oracle資料型別概述

Oracle資料型別概述

-- 用number()型別,需要注意的是number()型別的最大寬度是38,你將41修改為38試試!

-- 12.1 Oracle 資料型別概述

-- Oracle 提供了22種不同的SQL資料型別供我們使用。簡要地講,這些資料型別如下:

 

-- *(01) CHAR:這是一個定長字串,會用空格填充來達到最大長度。非null的CHAR(10)總是包含10位元組資訊(使用了預設國家語言支援(National Language Support, NLS)設定)。

-- 稍後將更詳細地介紹NLS的作用。CHAR欄位最多可以儲存2000位元組的資訊。

 

-- *(02) NCHAR:這昌一個包含UNICODE格式的定長字串。Unicode是一種字元編碼標準,由Unicode聯盟(Unicode Consortium)開發,其目的是為所有語言提供 一種對字元進行編碼的通用方法,

-- 而不論使用是的何種計算機系統或平臺。有了NCHAR型別,就允許資料庫中包含採用兩種不同字符集的資料:使用資料庫字符集的CHAR型別和使用國家字符集的NCHAR型別。

-- 非null的NCHAR(10)總是包含10個字元的資訊(注意,在這方面,它與CHAR型別有所不同)。NCHAR欄位最多可以儲存2000位元組的資訊。

 

-- *(03) VARCHAR2:目前也是VARCHAR的同義詞。這是一個變長字串,與CHAR型別不同,它不會用空格填充至最大長度。VARCHAR2(10)可能包含0~10位元組的資訊(使用預設NLS設定)。

-- VARCHAR2最多可以儲存4000位元組的資訊。

 

-- *(04) NVARCHAR2:這是一個包含UNICODE格式資料的變長字串。NVARCHAR2(10)可以包含0~10字元的資訊。NVARCHAR2最多可以儲存4000位元組的資訊。

 

-- *(05) RAW:這是一種變長二進位制資料型別,這說明採用這種資料型別儲存的資料 不會發生字符集轉換。可以把它看作由資料庫儲存的資訊的二進位制位元組串。

-- 這種型別最多可以儲存2000位元組的資訊。

 

-- *(06) NUMBER:這種資料型別能儲存精度最多達38位的數字。這些數介於1.0x10(-130)~(但不包括)1.0x10(126)之間。每個數字儲存在一個變長欄位中,

-- 其長度在0(尾部的NULL列就是0位元組)~22位元組之間。Oracle的NUMBER型別精度很高,遠遠高於許多程式語言中常規的FLOAT和DOUBLE型別。

 

-- *(07) BINARY_FLOAT:這是Oracle 10g Release 1及以後版本中才有的一種新型別。它是一個32位單精度浮點數,可以支援至少6位精度,佔用磁碟上5位元組的儲存空間。

 

-- *(08) BINARY_DOUBLE:這是一種Oracle 10g Release 1及以後版本中才有的新型別。它是一個64位雙精度浮點數,可以支援至少13位精度,佔用磁碟上9位元組的儲存空間。

 

-- *(09) LONG:這種型別能儲存最多2GB的字元資料(2GB是指2千兆位元組,而不是2千兆字元,因為在一個多位元組字符集中,每個字元可能有多個位元組)。由於LONG型別有諸多限制(後面會討論),

-- 而且提供LONG型別只是為了保證向後相容性,所以強烈建議新應用中不要使用LONG型別,而且在現有的應用中也要儘可能將LONG型別轉換為CLOB型別。

 

-- *(10) LONG RAW:LONG RAW型別能儲存多達2GB的二進位制資訊。由於LONG同樣的原因,建議在將來的所有開發中都使用BLOB型別,另外現有的應用中也應儘可能將LONG RAW轉換為BLOB型別。

 

-- *(11) DATE:這是一個7位元組的定寬日期/時間資料型別。其中總包含7個屬性,包括:世紀、世紀中哪一年、月份、月中的哪一天、小時、分鐘和秒。

 

-- *(12) TIMESTAMP:這是一個7位元組或11位元組的定寬日期/時間資料型別。它與DATE資料型別不同,因為TIMESTAMP可以包含小數秒(fractional second);

-- 帶小數秒的TIMESTAMP在小數點右邊最多可以保留9位。

 

-- *(13) TIMESTAMP WITH TIME ZONE:與前一種型別類似,這是一個13位元組的定寬TIMESTAMP,不過它還提供了時區(TIME ZONE)支援。資料中會隨TIMESTAMP儲存關於時區的額外資訊,

-- 所以原先插入的TIME ZONE會與資料一同保留。

 

-- *(14) TIMESTAMP WITH LOCAL TIME ZONE:與TIMESTAMP類似,這是一種7位元組或11位元組的定寬日期/時間資料型別;不過,這種型別對時區敏感(time zone sensitive)。如果在資料庫中有修改,

-- 會參考資料中提供的TIME ZONE,根據資料庫時區對資料庫中的日期/時間部分進行“規範化”。所以,如果你想使用U.S./Pacific時區插入一個日期/時間,而資料庫時區為U.S/Eastern,

-- 最後的日期/時間資訊會轉換為Eastern時區的日期/時間,並像TIMESTAMP一樣儲存。獲取這個資料時,資料庫中儲存的TIMESTAMP將轉換為會話時區的時間。

 

-- *(15) INTERVAL YEAR TO MONTH:這是一個5位元組的定寬資料型別,用於儲存一個時段,這個型別將時段儲存為年數和月數。

-- 可以在日期運算中使用這種時間間隔使一個DATE或TIMESTAMP型別增加或減少一段時間。

 

-- *(16) INTERVAL DAY TO SECOND:這是一個11位元組的定寬資料型別,用於儲存一個時段,這個型別將時段儲存為天/小時/分鐘/秒數,還可以有最多9位的小數秒。

 

-- *(17) BFILE:這種資料型別允許在資料庫列中儲存一個Oracle目錄物件(作業系統目錄的一個指標)和一個檔名,並讀取這個檔案。

-- 這實際上允許你以一種只讀的方式訪問資料庫伺服器上可用的作業系統檔案,就好像它們儲存在資料庫表本身中一樣。

 

-- *(18) BLOB:在Oracle 9i及以前的版本中,這種資料型別允許儲存最多4GB的資料,在Oracle 10g及以後的版本中允許儲存最多(4 GB)x(資料庫塊大小)位元組的資料。

-- BLOB包含不需要進行字符集轉換的“二進位制”資料,如果要儲存電子表格、字處理文件、影象檔案等就很適合採用這種資料型別。

 

-- *(19) CLOB:在Oracle 9i及以前的版本中,這種資料型別允許儲存最多4GB的資料,在Oracle 10g及以後的版本中允許儲存最多(4 GB)x(資料庫塊大小)位元組的資料。

-- CLOB包含要進行字符集轉換的資訊。這種資料型別很適合儲存純文字資訊。

 

-- *(20) NCLOB:在Oracle 9i及以前的版本中,這種資料型別允許儲存最多4GB的資料,在Oracle 10g及以後的版本中允許儲存最多(4 GB)x(資料庫塊大小)位元組的資料。

-- NCLOB儲存用資料庫國家字符集編碼的資訊,而且像CLOB一樣,這些資訊要進行字符集轉換。

 

-- *(21) ROWID:ROWID實際上是資料庫中一行的10位元組地址。ROWID中編碼有足夠的資訊,足以在磁碟上定位這一行,以及標識ROWID指向的物件(表等)。

 

-- *(22) UROWID:UROWID是一個通用ROWID,用於表(如IOT和通過異構資料庫閘道器訪問的沒有固定ROWID的表)。UROWID是行主鍵值的一種表示,因此,取決於所指向的物件,

-- UROWID的大小會有所變化。