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
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 位小數精度。