oracle常用的資料型別
字元資料型別
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