Oracle中的資料型別

2021-10-02 03:23:29 字數 3206 閱讀 5292

oracle的資料型別主要應用場景為:資料表中列的型別、函式、儲存過程的變數定義。這些資料型別大致可以分為4類:字元型(character)、數值型(number)、日期時間型(date)、和大物件型(lob),除此之外oracle還存在這一些特殊的資料值得注意。另外需要注意的是:在oracle中並不存在布林型別,因為存在布林型別是沒有任何意義的。如果需要,可以利用字串或者利用數值型(1或0)來代替。

一、字元型

char(n)

char資料型別用於標識固定長度的字串,小括號內的數字n即代表了字串的長度。當實際資料不足定義長度時,oracle將使用空格補全右邊不足位;當實際資料的長度大於其固定長度時,oracle將不允許資料儲存於對應的列或這變數中,並丟擲錯誤。

char資料型別是有最大長度限制的,即n的最大值不能大於2000,同時不能小於1

varchar(n)

varchar型別,是可變字串兒型別。當某個列或變數指定為varchar(n)的型別時,意味著該列或變數的最大長度不大於n,但當其實際資料小於n時,oracle並不在其右端補齊空格。這樣,減少了儲存時所占用的實際資源

varchar2(n)

varchar2同樣是可變字串兒型別。與varchar的區別在於,varchar是sql標準規定的、資料庫必須實現的資料型別,所以oracle資料庫中必須存在該資料型別。而varchar2則是oracle在varchar的基礎上自行定義的可變長度的字串型別,並使用了varchar2這個名稱。varchar2當被用做列的資料型別時,其最大長度可被定義為4000,當用作變數的資料型別時,其長度可以達到32767。

但是,需要注意的是:varchar和varchar2的實際資料長度,都不可以大於其定義的長度n。

varchar是符合工業標準(sql標準)的資料型別。該型別可以儲存空字串兒,而varchar2則不儲存空字串兒,而是將空字串而轉換為null進行儲存。為了保證資料庫的向後相容性,oracle建議使用varchar2,而不是varchar。

二、數值型

number(n) 表示乙個整數,數字的長度是n;可以使用int代替

number(m,n) 表示乙個小數,其中m表示總體長度,小數長度為n,整數長度為m-n;可以使用float代替

三、日期時間型

日期時間主要用來儲存日期和時間格式的資料。

1、date(oracle中最常用的日期型為date)

該型別中包含了以下資訊

oracle中除了常用的date型別之外,還提供了timestamp的日期時間型別,timestamp可以提供精度更高的時間,它可以將時間精確到毫秒。

四、lob型別

lob型別主要用於儲存大物件,例如大量的文字資訊(因為varchar2最大長度只能達到4000)、二進位制檔案等。 lob型別的最大儲存容量為4g,資料儲存的形式可以為資料,也可以是外部資料檔案。

lob型別有以下幾種具體型別

clob: 用於儲存大型文字資訊,例如,備註資訊

blob: 用於儲存二進位制檔案,例如,電影、歌曲、等,但是一般不會這麼放

bfile: 作為單獨檔案存在的二進位制資料

五、oralcle中的特殊資料

1、rowid

rowid是用於表示資料實體地址的列。該列是乙個偽列,它並非使用者建立,而是由資料庫自動為表新增,而且可供資料庫內部使用。rowid通常由10個位元組組成。

rowid的前6個字元,例如 aaar3s 代表資料物件標號

其後的3個字元,例如 aae 代表檔案編號

接下來的的前5個字元,例如 aaaac 代表塊編號

最後的前4個字元,例如 xaaa 代表行的編號

分析表中的各個記錄可知,表中的rowid是唯一的。一幫情況下,可以認為在查詢語句中沒有指定排序標準時,將以rowid作為預設排序標準。

但是,需要注意的是,rowid不能作為記錄插入資料表的先後記錄。rowid靠後的記錄不一定是晚插入的記錄。因為,oracle總是查詢空閒的空間進行插入動作。某些記錄被刪除之後,oracle即可釋放相應的空間,之後插入的資料有可能儲存於刪除記錄所帶來的空閒空間中。

2、null與空字串

oracle中將空字串兒視為null,所以在oracle中判斷某列的值是否為空,不能將該列的值與『』比較,應該使用is null

create

table test (id varchar2(10)

,name varchar2(20)

)--建立測試表

begin

insert

into test values(1

,'aaa');

--字串要使用單引號引起來

insert

into test values(1

,'bbbb');

insert

into test values(1

,'');

--兩個單引號表示空字串

insert

into test values(1

,null);

--null表示為空

commit

;end

;

指定查詢條件name=』』(name等於空字串兒)什麼也查不出來

需要指定is null才可以

3、單引號與雙引號

oracle中單引號與雙引號有著截然不同的意義

單引號用於界定字串

雙引號用於表示物件名稱

oracle中的資料型別

字段型別 中文說明 限制條件 其它說明 char 固定長度字串 最大長度2000 bytes varchar2 可變長度的字串 最大長度4000 bytes 可做索引的最大長度749 nchar 根據字符集而定的固定長度字串 最大長度2000 bytes nvarchar2 根據字符集而定的可變長度...

ORACLE中的資料型別

char 固定長度字元域,最大長度可達2 000 個位元組 nchar 多位元組字符集的固定長度字元域,長度隨字符集而定,最多為2 000個字元或2 000個位元組 varchar2 可變長度字元域,最大長度可達4 000 個字元 nvarchar2 多位元組字符集的可變長度字元域,長度隨字符集而定...

Oracle中的資料型別

oracle 8 資料型別 資料型別 引數描述 char n n 1 to 2000位元組 定長字串,n位元組長,如果不指定長度,預設為1個位元組長 乙個漢字為2位元組 varchar2 n n 1 to 4000位元組 可變長的字串,具體定義時指明最大長度n,這種資料型別可以放數字 字母以及asc...