Oracle基礎資料型別

2021-09-01 03:45:07 字數 3281 閱讀 6811

一、資料型別

oracle支援的資料型別可以分為三個基本種類:字元資料型別、數字資料型別以及表示其它資料的資料型別。

1.字元資料型別

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

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

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

oracle推薦使用varchar2

nchar和nvarchar2 nchar和nvarchar2資料型別分別儲存固定長度與可變長度的字元資料,但是它們使用的是和資料庫其他型別不同的字符集(為unicode字符集)。在建立資料庫時,需要指 定所使用的字符集,以便對資料庫中資料進行編碼。還可以指定乙個輔助的字符集[即本地語言集(national language set,簡稱nls)]。nchar和nvarchar2型別的列使用輔助字符集。

在oracle9i中,可以以字元而不是位元組為單位來表示nchar和nvarchar2列的長度。

long long資料型別可以存放2gb的字元資料,它是從早期版本中繼承來的。現在如果想儲存大容量的資料,oracle推薦使用clob和nclob資料型別。在表和sql語句中使用long型別有許多限制。

clob和nclob clob和nclob資料型別可以儲存多達4gb的字元資料。nclob資料型別可儲存nls資料。

2.數字資料型別

oracle使用標準、可變長度的內部格式來儲存數字。這個內部格式精度可以高達38位。

number資料型別可以有兩個限定符,如:

column number ( precision, scale)

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

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

另外還有乙個float型別,不同的是它的精度位數是按照二進位制位數算的。參考

3.日期資料型別

有date資料型別,timestamp資料型別。

date用於儲存表中的日期和時間資料,oracle使用自己的格式儲存日期,使用7個位元組固定長度,每個位元組分別儲存世紀,年月日,小時,分和秒。日期資料型別的值從西元前2023年1月1日到公元2023年12月31日。oracle中的sysdate函式用於返回當前的日期和時間。timestamp資料型別與date不同的是:它還返回當前的時區。

oracle標準日期格式為:dd-mon-yy hh:mi:ss

通過修改例項的引數nls_date_format,可以改變例項中插入日期的格式。在乙個會話期間,可以通過alter session sql命令來修改日期,或者通過使用sql語句的to_date表示式中的引數來更新乙個特定值。

4.其它的資料型別

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文件中對任何節點建立索引。

oracle中沒有boolean型別困擾,網上有兩種解決方案,一是用number(1),二是用char(1),各有所長。

二、oracle 9i/10g共提供了16種標量資料型別

名稱 含義

char 用於描述定長的字元型資料,長度<=2000位元組

varchar2 用於描述變長的字元型資料,長度<=4000位元組

nchar 用來儲存unicode字符集的定長字元型資料,長度<=1000位元組

nvarchar2 用來儲存unicode字符集的變長字元型資料,長度<=1000位元組

number 用來儲存整型或者浮點型數值

date 用來儲存日期資料

long 用來儲存最大長度為2gb的變長字元資料

raw 用來儲存非結構化資料的變長字元資料,長度<=2000位元組

long raw 用來儲存非結構化資料的變長字元資料,長度<=2gb

rowid 用來儲存表中列的實體地址的二進位制資料,占用固定的10個位元組

blob 用來儲存多達4gb的非結構化的二進位制資料

clob 用來儲存多達4gb的字元資料

nclob 用來儲存多達4gb的unicode字元資料

bfile 用來把非結構化的二進位制資料儲存在資料庫以外的作業系統檔案中

urowid 用來儲存表示任何型別列位址的二進位制資料

float 用來儲存浮點數

oracle 基礎 資料型別

1 適用於字元數字資料型別 varchar2 可變長度資料字元資料 從1b 到4kb 資料儲存在資料庫字符集中。nvarchar2 可變長度,儲存在國家語言字符集 unicode 字符集之一 char 固定長度字元資料 從1b 到2kb 儲存在資料庫字符集中。2 適用於數字型別資料,都為可變長度資料...

資料型別基礎資料型別

資料型別 基礎型別 除八大基礎型別其他的都是引用型資料型別 引用資料型別 基礎資料型別 整型 byte 佔乙個位元組,範圍 128 127 short 佔兩個位元組,範圍 32768 32767 int 最常用 佔四個位元組,範圍 2147483648 2147483647 long 佔八個位元組 ...

oracle基礎 資料型別 常用函式

一.oracle的資料型別有 char 用於描述定長的字元型資料,長度 2000位元組 varchar2 用於描述變長的字元型資料,長度 4000位元組 nchar 用來儲存unicode字符集的定長字元型資料,長度 1000位元組 nvarchar2 用來儲存unicode字符集的變長字元型資料,...