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

Oracle資料型別-

Oracle資料型別

字串型別
可以依據儲存空間分為固定長度型別(**CHAR/NCHAR**) 和可變長度型別(**VARCHAR2/NVARCHAR2**)兩種.
固定長度:是指雖然輸入的欄位值小於該欄位的限制長度,但是實際儲存資料時,會先自動向右補足空格後,才將欄位值的內容儲存到資料塊中。

這種方式雖然比較浪費空間,但是儲存效率較可變長度型別要好。同時還能減少資料行遷移情況發生。
可變長度:是指當輸入的欄位值小於該欄位的限制長度時,直接將欄位值的內容儲存到資料塊中,而不會補上空白,這樣可以節省資料塊空間。

CHAR:如果建立表時,不指定CHAR長度,則預設為1。非NULL的CHAR(12)總是包含12位元組資訊。CHAR欄位最多可以儲存2000位元組的資訊。

NCHAR:NCHAR欄位最多可以儲存2,000位元組的資訊。它的最大長度取決於國家字符集。另外查詢時,如果欄位是NCHAR型別,則需要如下書寫

SELECT translated_description FROM product_descriptions WHERE translated_name = N'LCD Monitor 11/PM';
	

VARCHAR:不要使用VARCHAR資料型別。使用VARCHAR2資料型別。雖然VARCHAR資料型別目前是VARCHAR2的同義詞,VARCHAR資料型別將計劃被重新定義為一個單獨的資料型別用於可變長度的字串相比,具有不同的比較語義。

VARCHAR2

:VARCHAR2型別變長字串,與CHAR型別不同,它不會使用空格填充至最大長度。VARCHAR2最多可以儲存4,000位元組的資訊。

NVARCHAR2:這是一個包含UNICODE格式資料的變長字串。 NVARCHAR2最多可以儲存4,000位元組的資訊。

數字型別

NUMBER:NUMBER(p,s)
範圍:1<=p<= 38; -84<=s<= 127
儲存資料範圍: -1.0e-130<= number value<1.0e+126
儲存在機器內部的範圍: 1 ~ 22 bytes
有效位:從左邊第一個不為0的數算起的位數。
s的情況:
s >0精確到小數點右邊s位,並四捨五入。然後檢驗有效位是否 <= p
s <0精確到小數點左邊s位,並四捨五入。然後檢驗有效位是否 <= p + |s|
s =0此時NUMBER表示整數。

eg:
			Actual   Data       Specified   As     Stored   As
			----------------------------------------------------
			123.89                       NUMBER            123.89
			123.89                       NUMBER(3)           124
			123.89                       NUMBER(6,2)       123.89
			123.89                       NUMBER(6,1)       123.9
			123.89                       NUMBER(4,2)       exceeds   precision   (有效位為5,   5   >   4)
			123.89                       NUMBER(6,-2)     100
			.01234                       NUMBER(4,5)       .01234   (有效位為4)
			.00012                       NUMBER(4,5)       .00012
			.000127                      NUMBER(4,5)       .00013
			.0000012                     NUMBER(2,7)       .0000012
			.00000123                    NUMBER(2,7)       .0000012
			1.2e-4                       NUMBER(2,5)       0.00012
			1.2e-5                       NUMBER(2,5)       0.00001
			123.2564                     NUMBER                 123.2564
			1234.9876                    NUMBER(6,2)       1234.99
			12345.12345                  NUMBER(6,2)       Error   (有效位為5+2   >   6)
			1234.9876                    NUMBER(6)           1235   (s沒有表示s=0)
			12345.345                    NUMBER(5,-2)     12300
			1234567                      NUMBER(5,-2)     1234600
			12345678                     NUMBER(5,-2)     Error   (有效位為8   >   7)
			123456789                    NUMBER(5,-4)     123460000
			1234567890                   NUMBER(5,-4)     Error   (有效位為10   >   9)
			12345.58                     NUMBER(*,   1)     12345.6
			0.1                          NUMBER(4,5)       Error   (0.10000,   有效位為5   >   4)
			0.01234567                   NUMBER(4,5)       0.01235
			0.09999                      NUMBER(4,5)       0.09999

INTEGER:INTEGER是NUMBER的子型別,它等同於NUMBER(38,0),用來儲存整數。若插入、更新的數值有小數,則會被四捨五入。

BINARY_FLOAT:BINARY_FLOAT 是 32 位、 單精度浮點數字資料型別。可以支援至少6位精度,每個 BINARY_FLOAT 的值需要 5 個位元組,包括長度位元組。

BINARY_DOUBLE:BINARY_DOUBLE 是為 64 位,雙精度浮點數字資料型別。每個 BINARY_DOUBLE 的值需要 9 個位元組,包括長度位元組。

FLOAT:FLOAT型別也是NUMBER的子型別。Float(n),數 n 指示位的精度,可以儲存的值的數目。N 值的範圍可以從 1 到 126。若要從二進位制轉換為十進
制的精度,請將 n 乘以 0.30103。要從十進位制轉換為二進位制的精度,請用 3.32193 乘小數精度。126 位二進位制精度的最大值是大約相當於 38 位小數精度。

日期型別