oracle 的資料類型

來源:互聯網
上載者:User

  資料類型(datatype)是列(column)或預存程序中的一個屬性。

    Oracle支援的資料類型可以分為三個基本種類:

  • 字元資料類型
  • 數字資料類型
  • 其它資料的資料類型

     字元資料類型

    CHAR :CHAR資料類型儲存固定長度的字元值。一個CHAR資料類型可以包括1到2000個字元。如果對CHAR沒有明確地說明長度,它的預設長度則設定為1.如果對某個CHAR類型變數賦值,其長度小於規定的長度,那麼Oracle自動用空格填充。

    VARCHAR2:儲存可變長度的字串。雖然也必須指定一個VARCHAR2資料變數的長度,但是這個長度是指對該變數賦值的的最大長度而非實際賦值長度。不需要用空格填充。最多可設定為4000個字元。

    因為VARCHAR2資料類型只儲存為該列所賦的字元(不加空格),所以VARCHAR2需要的儲存空間比CHAR資料類型要小。

    Oracle推薦使用VARCHAR2

    NCHAR和NVARCHAR2 NCHAR和NVARCHAR2資料類型分別儲存固定長度與可變長度的字元資料,但是它們使用的是和資料庫其他類型不同的字元集。在建立資料庫時,需要指 定所使用的字元集,以便對資料庫中資料進行編碼。還可以指定一個輔助的字元集[即本地語言集(National Language Set,簡稱NLS)]。NCHAR和NVARCHAR2類型的列使用輔助字元集。

    在Oracle9i中,可以以字元而不是位元組為單位來表示NCHAR和NVARCHAR2列的長度。

    LONG: LONG資料類型可以存放2GB的字元資料,它是從早期版本中繼承來的。現在如果想儲存大容量的資料,Oracle推薦使用CLOB和NCLOB資料類型。在表和SQL語句中使用LONG類型有許多限制。

    這種資料類型應該基本上沒用了

    CLOB和NCLOB:CLOB和NCLOB資料類型可以儲存多達4GB的字元資料。NCLOB資料類型可儲存NLS資料。

    數字資料類型

    Oracle使用標準的、可變長度的內部格式來儲存數字。這個內部格式精度可以高達38位,也就是NUMBER資料類型。

    NUMBER資料類型可以有兩個限定符,如:

    column NUMBER ( precision, scale)

    precision表示數字中的有效位。如果沒有指定precision的話,Oracle將使用38作為精度。

    scale表示數字小數點右邊的位元,scale預設設定為0.  如果把scale設成負數,Oracle將把該數字取捨到小數點左邊的指定位元。

    日期資料類型

    Oracle標準日期格式為:DD-MON-YY  HH:MI:SS

    通過修改執行個體的參數NLS_DATE_FORMAT,可以改變執行個體中插入日期的格式。在一個會話期間,可以通過ALTER SESSION SQL命令來修改日期,或者通過使用SQL語句的TO_DATE運算式中的參數來更新一個特定值。

 

    RAW和LONG RAW RAW和LONG RAW資料類型主要用於對資料庫進行解釋。指定這兩種類型時,Oracle以位的形式來儲存資料。RAW資料類型一般用於儲存有特定格式的對象,如位元影像。 RAW資料類型可佔用2KB的空間,而LONG RAW資料類型則可以佔用2GB大小。

    ROWID ROWID是一種特殊的列類型,稱之為偽列(pseudocolumn)。ROWID偽列在SQL SELECT語句中可以像普通列那樣被訪問。Oracle資料庫中每行都有一個偽列。ROWID表示行的地址,ROWID偽列用ROWID資料類型定義。

    ROWID與磁碟驅動的特定位置有關,因此,ROWID是獲得行的最快方法。但是,行的ROWID會隨著卸載和重載資料庫而發生變化,因此建議不要在事務 中使用ROWID偽列的值。例如,一旦當前應用已經使用完記錄,就沒有理由儲存行的ROWID.不能通過任何SQL語句來設定標準的ROWID偽列的值。

    列或變數可以定義成ROWID資料類型,但是Oracle不能保證該列或變數的值是一個有效ROWID.

    LOB

    LOB(大型物件)資料類型,可以儲存4GB的資訊。LOB有以下3種類型:

    。CLOB,只能儲存字元資料

    。NCLOB,儲存本地語言字元集資料

    。BLOB,以二進位資訊儲存資料

    可以指定將一個LOB資料儲存在Oracle資料庫內,還是指向一個包含次資料的外部檔案。

    LOB可以參與事務。管理LOB中的資料必須通過DBMS_LOB PL/SQL內建軟體包或者OCI介面。

    為了便於將LONG資料類型轉換成LOB,Oracle9i包含許多同時支援LOB和LONG的函數,還包括一個ALTER TABLE語句的的新選擇,它允許將LONG資料類型自動轉換成LOB.

    BFILE

    BFILE資料類型用做指向儲存在Oracle資料庫以外的檔案的指標。

    XMLType

    作為對XML支援的一部分,Oracle9i包含了一個新的資料類型XMLType.定義為XMLType的列將儲存一個在字元LOB列中的XML文檔。有許多內建的功能可以使你從文當中抽取單個節點,還可以在XMLType文檔中對任何節點建立索引。

    使用者自訂資料

    從Oracle8以後,使用者可以定義自己的複雜資料類型,它們由Oracle基礎資料型別 (Elementary Data Type)組合而成。

    AnyType、AnyData和AnyDataSet

    Oracle包括3個新的資料類型,用於定義在現有資料類型之外的資料結構。其中每種資料類型必須用程式單元來定義,以便讓Oracle9i知道如何處理這些類型的特定實現。

    類型轉換

    Oracle會自動將某些資料類型轉換成其他的資料類型,轉換取決於包括該值的SQL語句。

    資料轉換還可以通過Oracle的類型轉換函式顯示地進行。

    串連與比較

    在大多數平台上Oracle SQL中的串連操作符用兩條豎線(||)表示。串連是將兩個字元值串連。Oracle的自動類型轉換功能使得兩個數字值也可以進行串連。

    NULL

    NULL值是關聯式資料庫的重要特徵之一。實際上,NULL不代表任何值,它表示沒有值。如果要建立表的一個列,而這個列必須有值,那麼應將它指定為NOT NULL,這表示該列不能包含NULL值。

    任何資料類型都可以賦予NULL值。NULL值引入了SQL運算的三態邏輯。如果比較的一方是NULL值,那麼會出現3種狀態:TURE、FALSE以及兩者都不是。

    因為NULL值不等於0或其他任何值,所以測試某個資料是否為NULL值只能通過關係運算子IS NULL來進行。

    NULL值特別適合以下情況:當一個列還未賦值時。如果選擇不使用NULL值,那麼必須對行的所有列都要賦值。這實際上也取消了某列不需要值的可能性,同時對它賦的值也很容易產生誤解。這種情況則可能誤導終端使用者,並且導致累計操作的錯誤結果。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.