Character 資料類型
Character 資料類型用來存儲字母數字型資料。當你在oracle 中定義一個character 資料時,通常需要制定字段的長度,它是該字段的最大長度。ORACLE提供以下幾種character 資料類型:
CHAR(<size>) CHAR資料類型是一種有固定長度和最大長度的字元串。存儲在資料類型為CHAR字段中的資料将以空格的形式補到最大長度。長度定義在1——2000位元組之間。
當你建立一個CHAR型字段,資料庫将保證在這個字段中的所有資料是定義長度,如果某個資料比定義長度短,那麼将用空格在資料的右邊補到定義長度。如果長度大于定義長度将會觸發錯誤資訊。
VARCHAR(<size>) varchar型資料是varchar2型資料的快照。
VARCHAR2(<size>) varchar2資料類型是一種可變長度的、有最大長度的字母數字型資料。Varchar2類型的字段長度可以達到4000位元組,Varchar2類型的變量長度可以達到32676位元組。
一個空的varchar2(2000)字段和一個空的varchar2(2)字段所占用的空間是一樣的。
NCHAR(<size>) 和 NVARCHAR2(<size>) NCHAR(<size>) 和 NVARCHAR2(<size>)資料類型分别與CHAR(<size>) 和 VARCHAR2(<size>)類型是相同的,隻不過它們用來存儲NLS(National Language Support)資料。
LONG LONG 資料類型是一個遺留下來的而且在将來不會被支援的資料類型。它将被LOB(Large Object)資料類型所代替。
比較規則 Varchar2和char資料類型根據尾部的空格有不同的比較規則。對Char型資料,尾部的空格将被忽略掉,對于Varchar2型資料尾部帶空格的資料排序比沒有空格的要大些。比如:
Char 型資料: ‘YO’=‘YO ’
Varchar2型資料: ‘YO’<’YO ’
Numberic 資料類型
Numberic 資料類型用來存儲負的和正的整數、分數和浮點型資料,範圍在-1*10-103 和9.999…99*10125之間,有38位的精确度。辨別一個資料超出這個範圍時就會出錯。
Number(<p>,<s>) Number資料類型存儲一個有p位精确度的s位等級的資料。
DATE 資料類型
DATE 資料類型用來存儲日期和時間格式的資料。這種格式可以轉換為其他格式的資料去浏覽,而且它有專門的函數和屬性用來控制和計算。以下的幾種資訊都包含在DATE資料類型中:
Ø Century
Ø Year
Ø Month
Ø Day
Ø Hour
Ø Minute
Ø Second
LOB 資料類型
LOB(Large Object) 資料類型存儲非結構化資料,比如二進制檔案,圖形檔案,或其他外部檔案。LOB 可以存儲到4G位元組大小。資料可以存儲到資料庫中也可以存儲到外部資料檔案中。LOB資料的控制通過DBMS_LOB 包實作。BLOB, NCLOB, 和CLOB 資料可以存儲到不同的表空間中,BFILE存儲在伺服器上的外部檔案中。LOB資料類型有以下幾種:
Ø BLOB: 二進制資料
Ø CLOB: 字元型資料
Ø BFILE: 二進制檔案
其他資料類型
ROWID ROWID 資料類型是ORACLE資料表中的一個僞列,它是資料表中每行資料内在的唯一的辨別。
oracle中的boolean資料類型僅限于PL/SQL,oracle本身沒有預設的提供布爾型的存儲方式
在設計資料庫表結構時,選擇一種高效的政策來存儲一個可以在很多程式設計環境中使用的邏輯布爾值是非常重要的。(雖然 Oracle 沒有 Boolean 資料類型來表示資料庫字段,但是在 PL/SQL 中卻具有 Boolean 資料類型。)
任何布爾定義的字段還應該被正确進行限制檢查,以確定在插入/更新時輸入了有效的值。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
create table tbool (bool char check (bool in ('N','Y'));
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
insert into tbool values ('N');
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
insert into tbool values ('Y');
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
最常見的設計是模拟很多 Oracle 的資料字典視圖中使用的類似布爾的标志,選擇‘Y’表示真,‘N’表示假。然而,要正确地與宿主環境互動,比如與 JDBC、OCCI 和其它程式設計環境互動,最好選擇0表示假,選擇1表示真,進而使getBoolean 和setBoolean 能夠正确地處理它們。
我們可以将一個布樂類型定義為 NUMBER(1);然而,在 Oracle 的内部數字格式中,0在長度位元組之後占用一個位元組,而1在長度位元組之後占用兩個位元組(是以更加高效地方式是将其存儲為 CHAR)。即使字元被定義為 CHAR,SQL 也可以轉換和驗證明際的數字。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
create table tbool (bool char check (bool in (0,1));
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
insert into tbool values(0);
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
insert into tbool values(1);
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
本文轉自深藍居部落格園部落格,原文連結:http://www.cnblogs.com/studyzy/archive/2008/01/03/1023877.html,如需轉載請自行聯系原作者