字符數據類型
char數據類型
當需要固定長度時,使用char數據類型,此數據類型長度可以使1-2000字節.若是不指定大小默認占1字節,如果長度有空余時會以空格進行填充,如果大於設定長度
數據庫則會返回錯誤報告
nchar數據類型
nchar,即國家字符集,使用方法和char相同.如果開發的項目需要國際化那么就選擇nchar數據類型,nchar()和char()的區別在於nchar用來存儲Unicode字符集類型,
即雙字節字符數據.如:定義char和nchar長度分別為1,前者占1字節,后者占2字節.那么就意味着長度為1的char是不能存儲中文.當然最主要的原因如下
NChar:將Unicode編碼還原成對應的字符
Char:將ASC碼還原成對應的字符
varchar2數據類型
varchar2數據類型支持可變長度的字符串.該字符數據類型的大小為1~4000字節.在定義該數據類型時需指定其大小.與char類型相比,使用varchar2數據類型可以節省自盤空間
如當長度不固定的時候varchar2會自動縮減,char則會以空格進行填充.但char的存取數度還是要比varchar2要快得多,因為其長度固定,方便程序的存儲與查找;但是
char也為此付出的是空間的代價,因為其長度固定,所以難免會有多余的空格占位符占據空間,可謂是以空間換取時間效率,而varchar2是以空間效率為首位的.
因此oracle中長度固定都是選char進行存儲,不固定選擇varchar2
varchar和varchar2的區別
1.varchar2把所有字符都占兩字節處理(一般情況下),varchar只對漢字和全角等字符占兩字節,數字,英文字符等都是一個字節;
2.VARCHAR2把空串等同於null處理,而varchar仍按照空串處理;
3.VARCHAR2字符要用幾個字節存儲,要看數據庫使用的字符集,
一般建議使用varchar2,為了保證更好的兼容性
數值類型
number數據類型
number數據類型可以存儲正數,負數,0,定點數和精度為38為的浮點數,該數據類型格式為
number(p.s)
其中,p表示精度,標書有效的位數,在1~38之間.有效數:從左邊第一個不為0的數算起,小數點和負號不計入有效數.
s為范圍,表示小數點右邊數字的位數,它在- 84 ~ +127之間
規則:首頁精確到小數點右邊S位也就是小數部分,超出的四舍五入.如果精確后的有效位數小於等於p,則正確,否則報錯
如下栗子:
實際數據 | 數據類型 | 結果 | 說明 |
123.12 | number(4,2) | 錯誤 | 精確到小數點右邊2位值為123.12,有效數為5大於4所以出錯 |
12.789 | number(4,2) | 12.19 | 精確到小數點右邊2位值為12.79,有效數4所以是12.19 |
1 | number(3,4) | 錯誤 | 精確到小數點右邊4位值為1.0000,有效為5大於3所以出錯 |
0.1 | number(3,4) | 錯誤 | 精確到小數點右邊4位值為0.1000,有效數為4大於3所以出錯 |
0.01 | number(3,4) | 0.0100 | 精確到小數點右邊4位值為0.0100,有效數3所以是0.0100 |
0.00001 | number(3,4) | 0.0000 | 精確到小數點右邊4位值為0.0000,有效數0所以是0.0000 |
日期時間數據類型
data數據類型
data數據類型用於存儲表中的日期和時間數據.oracle數據庫使用自己的格式存儲日期,使用7字節固定長度,每個字節分別存儲 世紀,年,月,日,小時,分,秒.
日期實際數據類型的值為公元前4712年1月1日到公元9999年12月31日.其中oracle中的sysdate函數的功能是返回當前日期和時間.
timestamp數據類型
timestamp數據類型用於存儲日期的年,月,日,小時,分,秒,其中秒值精確到小數點后6位,該數據類型同事包含時區信息.systimestamp函數的功能是返回當前日期,時間和時區
注意:查詢的時候可能會遇到可是不正確的問題,如顯示語言,顯示格式的等.可能存放的格式是 yyyy-mm-dd hh24:mi:ss,而查詢出來卻是dd-mm-yy hh24:mi:ss,可能是字符集出了
問題,還有一個原因就是系統的環境變量沒有設置問題.
- 可以選擇更新會話:alert session set nls_date_format='YYYY-MM-DD HH24:MI:SS';(但是只對當前窗口有效,不想每次都調就可設置環境變量)
- 在系統變量中增加一個
lob數據類型
lob又稱"大對象"數據類型,該數據類型可以存儲多達4GB的非結構化信息,如聲音剪輯,視頻剪輯等等.lob允許對數據進行高效,隨機分段訪問.lob可以是外部的,也可以是內部的
,取決於它相對數據庫的位置
修改lob類型可以用SQL數據操縱語言來完成也可以通過PL/sql中提供的程序包DBMS_lob完成.一個表可以有多列lob類型.
clob
該數據類型可以存儲單字節字符數據和多字節數據.主要用於存儲非結構化的xml文檔,如新聞內容簡介等大量文字內容文檔
blob
該數據類型能夠存儲大的二進制對象,如圖像,聲音,視頻等等
bfile
該數據類型能夠將二進制存儲在數據庫外部的操作系統文件中,bfile列存儲一個bfile定位器,指向與服務器文件系統上的二進制,支持最大文件為4GB
nclob
該數據類型用於存儲大的nchar字符數據,nchar數據類型同時支持固定寬度字符和可變寬字符(Unicode數據),用法類型clob,大小不得大於4GB