1. 程式人生 > >oracle常用的資料型別

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