oracle 10g的數據類型

數據類型

   定義了:標量(SCALAR)、複合(COMPOSITE)、引用(REFERENCE)和LOB 四種數據類型

      ☆標量(SCALAR)

   合法的標量類型與數據庫的列所使用的類型相同,此外它還有一些擴展。它又分爲七個組:數字、字符、行、日期、行標識、布爾和可信。

      ☆數字

  數字,它有三種基本類型 -- NUMBER、PLS_INTEGER和BINARY_INTENER 。NUMBER可以描述整數或實數,而PLS_INTEGER和BINARY_INTENER只能描述整數。   NUMBER,是以十進制格式進行存儲的,它便於存儲,但是在計算上,系統會自動的將它轉換成爲二進制進行運算的。它的定義方式是NUMBER(P,S),P是精度,最大38位,S是刻度範圍,可在 - 84 127間取值。例如:NUMBER( 5 2 )可以用來存儲表示 - 999.99 999 .99間的數值。P、S可以在定義是省略,例如:NUMBER( 5 )、NUMBER等;   BINARY_INTENER用來描述不存儲在數據庫中,但是需要用來計算的帶符號的整數值。它以2的補碼二進制形式表述。循環計數器經常使用這種類型。   PLS_INTEGER和BINARY_INTENER唯一區別是在計算當中發生溢出時,BINARY_INTENER型的變量會被自動指派給一個NUMBER型而不會出錯,PLS_INTEGER型的變量將會發生錯誤。

      ☆Number補充

   在Oracle中Number類型可以用來存儲0,正負定點或者浮點數,可表示的數據範圍在  1.0   *   10 ( - 130 ) ——  9.9 9   *   10 ( 125 ) {38個9後邊帶88個0} 的數字,當Oracle中的數學表達式的值 >= 1.0 * 10 ( 126 )時,Oracle就會報錯。      Number的數據聲明如下:      1 )Number(p, s) 聲明一個定點數 p(precision)爲精度,s(scale)表示小數點右邊的數字個數,精度最大值爲38,scale的取值範圍爲 - 84到127      2 )Number(p) 聲明一個整數 相當於Number(p,  0 )      3 )Number 聲明一個浮點數 其精度爲38,要注意的是scale的值沒有應用,也就是說scale的指不能簡單的理解爲0,或者其他的數。     定點數的精度(p)和刻度(s)遵循以下規則:     當s > 0時(s表示小數點右邊的數字的個數):     當一個數的整數部分的長度  >  p - s 時,Oracle就會報錯      當一個數的小數部分的長度  >  s 時,Oracle就會舍入。     當s < 0時(s表示小數點左邊的數字的個數):     Oracle就對小數點左邊的s個數字進行舍入。      當s  >  p 時, p表示小數點後第s位向左最多可以有多少位數字,如果大於p則Oracle報錯,小數點後s位向右的數字被舍入
例如:    Value --> Datatype --> Stored Value      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  (等價於NUMBER( 6 , 0 ))     12345.345 --> NUMBER( 5 , - 2 ) --> 12300  (小數點左邊兩位做四捨五入)     12345678 --> NUMBER( 5 , - 2 ) --> Error ( 8 - 2 > 5 )     123456789 --> NUMBER( 5 , - 4 ) --> 123460000       1234567890 --> NUMBER( 5 , - 4 ) --> Error      12345.58 --> NUMBER( * 1 ) --> 12345.6       0.1 --> NUMBER( 4 , 5 ) --> Error      0.01234567 --> NUMBER( 4 , 5 ) --> 0.01235       0.09999 --> NUMBER( 4 , 5 ) --> 0.09999       0.099996 --> NUMBER( 4 , 5 ) --> Error 

      ☆字符

  字符,包括CHAR、VARCHAR2(VARCHAR)、LONG、NCHAR和NVARCHAR2 幾 種類型。   CHAR,描述定長的字符串,如果實際值不夠定義的長度,系統將以空格填充。它的聲明方式如下CHAR(L),L爲字符串長度,缺省爲1,作爲變量最 大32767個字符,作爲數據存儲在ORACLE8中最大爲2000。   VARCHAR2(VARCHAR),描述變長字符串。它的聲明方式如下VARCHAR2(L),L爲字符串長度,沒有缺省值,作爲變量最大 32767個字節,作爲數據存儲在ORACLE8中最大爲4000。在多字節語言環境中,實際存儲的字符個數可能小於L值,例如:當語言環境爲中文 (SIMPLIFIED CHINESE_CHINA.ZHS16GBK)時,一個VARCHAR2( 200 )的數據列可以保存200個英文字符或者100個漢字字符。   LONG,在數據庫存儲中可以用來保存高達2G的數據,作爲變量,可以表示一個最大長度爲32760字節的可變字符串。   NCHAR、NVARCHAR2,國家字符集,與環境變量NLS指定的語言集密切相關,使用方法和CHAR、VARCHAR2相同。     (varchar2是oracle提供的獨特的數據類型,oracle保證在任何版本中該數據類型向上和向下兼容,但不保證varchar。因爲varchar是標準sql提供的數據類型,有可能隨着sql標準的變化而改變,推薦用varchar2。)     (CHAR如果存放字母數字佔1個字節,存放GBK編碼的漢字存放2個字節,存放UTF - 8編碼的漢字佔用3個字節;NCHAR根據所選字符集來定義存放字符的佔用字節數,一般都爲2個字節存放一個字符(不管字符或者漢字)。同理VARCHAR2與NVARCHAR2的區別。)

      ☆

  行,包括RAW和LONG RAW 兩種類型。用來存儲二進制數據,不會在字符集間轉換。   RAW,類似於CHAR,聲明方式RAW(L),L爲長度,以字節爲單位,作爲數據庫列最大2000,作爲變量最大32767字節。   LONG RAW,類似於LONG,作爲數據庫列最大存儲2G字節的數據,作爲變量最大32760字節。    (raw這種格式可以用來保存較小的圖形文件或帶格式的文本文件,如Miceosoft Word文檔。raw是一種較老的數據類型,將來會逐漸被BLOB、CLOB、NCLOB等大的對象數據類型所取代。 long  raw 無可變長二進制數據,最大長度是2GB。Oracle用這種格式來保存較大的圖形文件或帶格式的文本文件,如Miceosoft Word文檔,以及音頻、視頻等非文本文件。在同一張表中不能同時有long類型和long raw類型, long  raw也是一種較老的數據類型,將來會逐漸被BLOB、CLOB、NCLOB等大的對象數據類型所取代)

      ☆其他

  日期,只有一種類型 -- DATE,用來存儲時間信息,站用7個字節(從世紀到秒),絕對沒有“千年蟲”問題。   行標識,只有一種類型 -- ROWID,用來存儲“行標識符”,可以利用ROWIDTOCHAR函數來將行標識轉換成爲字符。   布爾,只有一種類型 -- BOOLEAN,僅僅可以表示TRUE、FALSE或者NULL。   可信,只有一種類型 -- MLSLABEL,可以在TRUSTED ORACLE中用來保存可變長度的二進制標籤。在標準ORACLE中,只能存儲NULL值。

      ☆複合(COMPOSITE)與引用(REFERENCE) 【略】       ☆LOB

  LOB變量主要是用來存儲大量數據的數據庫字段,最大可以存儲4G字節的內容。主要有:   CLOB:和ORACLE7中的LONG類型相似,存儲單字節字符數據。(別用來存中文)   NCLOB:用來存儲定寬多字節字符數據。   BLOB:和LONG RAW相似,用來存儲無結構的二進制數據。   BFILE:它用來允許ORACLE對數據庫外存儲的大型二進制文本進行只讀形式的訪問。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章