oracle資料型別詳解

2021-10-01 17:39:47 字數 3768 閱讀 2407

資料庫中建立表,常見型別總結:

見乙個大神總結的很全:

二、字元資料型別

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

2。 varchar2 儲存可變長度的字串。雖然也必須指定乙個varchar2資料變數的長度,但是這個長度是指對該變數賦值的最大長度而非實際賦值長度。不需用空格填充。 最多可設定為4000個字元。因為varchar2資料型別只儲存為該列所賦的字元(不加空格),所以varchar2需要的儲存空間比char資料型別 要小。

oracle推薦使用varchar2

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

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

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

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

三、 數字資料型別

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

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(大型物件)資料型別,可以儲存4gb的資訊。lob有以下3中型別:

,只能儲存字元資料

,儲存本地語言字符集資料

,以二進位制資訊儲存資料

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

lob可以參與事務。管理lob中的資料必須通過dbms_lob pl/sql內建軟體包或者ogi介面。

為了便於將long資料型別轉換成lob,oracle 9i包含許多同時支援lob和long的函式,喊包括乙個alter table語句的新選擇,它允許將long資料型別自動轉換成lob。

bfile

bfile資料型別用做指向儲存在oracle資料庫以外的檔案的指標。

xml type

作為對xml支援的一部分,oracle 9i包含了乙個新的資料型別xml type。定義為xmltype的列將儲存乙個字元lob列中的xml文件。有許多內建的功能可以使你從文件中抽取單個節點,還可以在xml type文件中對任何節點建立索引。

使用者自定義資料

從oracle 8以後,使用者可以定義自己的複雜資料型別,它們由oracle基本資料型別組合而成。

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值,那麼必須對行的所有列都要賦值。這實際上也取消了某列不需要值的可能性,同時對它賦的值也很容易產生誤解。這種情況則可能誤導終端使用者,並且導致累計操作的錯誤結果。

number(p,s)

p:1~38

s:-84~127

p>0,對s分2種情況:1. s>0

精確到小數點右邊s位,並四捨五入。然後檢驗有效數字是否<=p;如果s>p,小數點右邊至少有s-p個0填充。

2. s<0

精確到小數點左邊s位,並四捨五入。然後檢驗有效數字是否<=p+|s|

123.2564 number 123.2564

1234.9876 number(6,2) 1234.99

12345.12345 number(6,2) error

1234.9876 number(6) 1235

12345.345 number(5,-2) 12300

1234567 number(5,-2) 1234600

12345678 number(5,-2) error

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

資料型別詳解

char 1 個位元組 128 到 127 或者 0 到 255 unsigned char 1 個位元組 0 到 255 signed char 1 個位元組 128 到 127 int4 個位元組 2147483648 到 2147483647 unsigned int 4 個位元組 0 到 4...

資料型別詳解

1.整型 unsigned char取值範圍是0 255,char取值範圍是 128 127 2.浮點型 float型通常是32位,double型通常是64位。3.型別轉換 3.1 整型提公升 integer promotion 如果原始型別的取值範圍都能用int型表示,則其型別被提公升為int,如...

資料型別詳解

這裡我們先只介紹一下基本型別,引用型別這裡還沒有講,按照進度慢慢來。首先我們要知道乙個問題,那就是什麼是位元組?了解位元組之前,我們還要搞清楚乙個定義,那就是位 bit 位 bit 位是計算機內部資料儲存的最小單位,比如11001100就是乙個八位的二進位制數。二進位制我們都耳熟能詳了,無非就是0 ...