(0) Oracle 數據類型
varchar2:可變長字符數據
char(size):定長字符數據
number(p,s):可變長數值數據
date:日期型數據
long:可變長字符數據,最大可達到2G
clob:字符數據,最大可達到4G
RAW(LONG RAW):原始的二進制數據
BLOB:二進制數據,最大可達到4G
BFILE:存儲外部文件的二進制數據,最大可達到4G
ROWID:行地址
(1)字符類型
① • CHAR:一個定長字符串,當位數不足自動用空格填充來達到其最大長度。如非NULL的CHAR(12)總是包含12字節信息。CHAR字段最多可以存儲2,000字節的信息。
② • VARCHAR2:目前這也是VARCHAR 的同義詞。這是一個變長字符串,與CHAR 類型不同,它不會用空格填充至最大長度。VARCHAR2(12)可能包含0~12字節的信息。VARCHAR2最多可以存儲4,000 字節的信息。
CHAR和VARCHAR2的比較:
CHAR(4) “A“ 實際在數據庫中存儲為"A “,“ABCDE”超長報錯
VARCHAR2(4) “A” 存儲的還是“A”,“ABCDE”超長報錯
漢字:每個漢字占多少字節,要看具體的編碼方式,如UTF-8(1-3字節)、GB2312(2字節)、GBK(2字節)、GB18030(1、2、4字節)
(2)數字類型
①• NUMBER:該數據類型能存儲精度最多達38位的數字。每個數存儲在一個變長字段中,其長度在0~22字節之間。Oracle的NUMBER類型精度很高, 遠遠高於許多編程語言中常規的FLOAT和DOUBLE類型。
NUMBER( p,s ) p表示精度(總長度) s表示小數位置且四舍五入
NUMBER(10,3) 10是總長度,3是小數位數的長度
123.456
123.4567 :將存儲為123.457
12345679.899 :精度超長了,10是總長度,3是小數位, 整數位為10-3=7位
NUMBER(10)==NUMBER(10,0) java.lang.Integer
NUMBER(19)==NUMBER(19,0) java.lang.Long
(3)日期類型
①• DATE:一個7字節的定寬日期/時間數據類型。其中總包含7個屬性,包括:世紀、世紀中哪一年、月份、月中的哪一天、小時、分鍾和秒。
②• TIMESTAMP:一個7 字節或12.字節的定寬日期/時間數據類型。它與DATE 數據類型不同,因為TIMESTAMP 可以包含小數秒(fractional second);帶小數秒的TIMESTAMP 在小數點右邊最多可以保留9位。
(4)二進制及大文本數據
① • BLOB: (binary large object)在Oracle9i及以前的版本中, 這種數據類型允許存儲最多4GB的數據, 在Oracle 10g及以后的版本中允許存儲最多(4GB)×(數據庫塊大小)字節的數據。BLOB包含不需要進行字符集轉換的“二進制“數據,如果要存儲電子表格、字處理文檔、圖像文件等就很適合采用。
② • CLOB:(Character Large Object)在Oracle9i及以前的版本中, 這種數據類型允許存儲最多4GB的數據, 在Oracle 10g及以后的版本中允許存儲最多(4GB)×(數據庫塊大小)字節的數據。CLOB包含要進行字符集轉換的信息。這種數據類型很適合存儲純文本信息。