Oracle欄位型別及儲存

2021-08-02 20:56:23 字數 3098 閱讀 6705

oracle

中2000

個byte

,並不是

2000

個字元的意思,

1個字元在

oracle

中可能是1個

byte到4

個byte

不等,需看資料庫字符集的設定了。

對gbk

字符集而言,

ascii

碼中128

個字元使用

1個位元組進行儲存,其它字元使用雙位元組儲存;對

utf8

字符集而言,

ascii

碼中128

個字元使用

1個位元組進行儲存,其它採用兩個或三個位元組進行儲存,四個位元組儲存的是極少使用字元;

資料庫中有乙個引數

nls_leng

th_semantics

,這個引數有兩個取值

char

和byte

。當為char

時字元型別的長度是按字元個數來計算,而不是按

byte

來計算,這在使用變長字符集

(al32utf8)

的情況下非常有用,因為乙個字元所占用的位元組數是不定的,就給我們準確估計字段長度

(byte)

帶來不便。 1

、char。

char

儲存定長資料很方便,

char

欄位上的索引效率級高,比如定義

char(10)

,那麼不論你儲存的資料是否達到了

10個位元組,都要占去

10個位元組的空間,不足的自動用空格填充。 2

、varchar

varchar

儲存變長資料,但儲存效率沒有

char

高。如果乙個字段可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 varchar(10)是最合算的。varchar型別的實際長度是它的值的實際長度+1。為什麼「+1」呢?這乙個位元組用於儲存實際使用了多大的長度。

從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。 3

、text

text

儲存可變長度的非

unicode

資料,最大長度為

2^31-1(2,147,483,647)

個字元。 4

、nchar

、nvarchar

、ntext

這三種從名字上看比前面三種多了個

「n」。它表示儲存的是

unicode

資料型別

的字元。我們知道字元中,英文本元只需要乙個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,

unicode

字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文本元也是用兩個位元組表示。 5、

字符集與國家字符集

1>

字符集(1)

用來儲存

char, varchar2, clob, long

等型別資料

(2)用來標示諸如表名、列名以及

pl/sql

變數等(3)

用來儲存

sql和

pl/sql

程式單元等

2>

國家字符集

(1)用以儲存

nchar, nvarchar2, nclob

等型別資料

(2)國家字符集實質上是為

oracle

選擇的附加字符集,主要作用是為了增強

oracle

的字元處理能力,因為

nchar

資料型別可以提供對亞洲使用定長多位元組編碼的支援,而資料

庫字符集則不能。國家字符集在

oracle9i

中進行了重新定義,只能在

unicode

編碼中的

af16utf16

和utf8

中選擇,預設值是

af16utf16

字段型別

中文說明

限制條件

其它說明

char

固定長度字串

最大長度2000bytes

varchar2

可變長度的字串

最大長度4000bytes

可做索引的最大長度749

nchar

根據字符集而定的固定長度字串

最大長度2000bytes

nvarchar2

根據字符集而定的可變長度字串

最大長度4000bytes

date

日期(日-月-年)

dd-mm-yy(hh-mi-ss)

經過嚴格測試,無千蟲問題

long

超長字串

最大長度2g(231-1)

足夠儲存大部頭著作

raw固定長度的二進位制資料

最大長度2000bytes

可存放多**圖象聲音等

long raw

可變長度的二進位制資料

最大長度2g

同上blob

二進位制資料

最大長度4g

clob

字元資料

最大長度4g

nclob

根據字符集而定的字元資料

最大長度4g

bfile

存放在資料庫外的二進位制資料

最大長度4g

rowid

資料表中記錄的唯一行號

10bytes

********.****.****格式,*為0或1

nrowid

二進位制資料表中記錄的唯一行號

最大長度4000bytes

number(p s)

數字型別

p為整數字,s為小數字

decimal(p s)

數字型別

p為整數字,s為小數字

integer

整數型別

小的整數

float

浮點數型別

number(38),雙精度

real

實數型別

number(63),精度更高

oracle儲存過程 更改字段型別

一 問題說明 在專案開發過程中,有時需要將多張表做union操作,會發現由於個別表的字段不一致,造成union語句查詢報錯。這時有以下的解決方法 1.較為簡單 將少量的不一致字段,使用to number to date等方式作下處理。這樣能夠確保查詢操作正常 2.較為複雜 更改少量不一致欄位的字段型...

Oracle 字段型別

oracle 字段型別 字段型別 描述字段長度及其預設值 char size 用於儲存定長 size 位元組的字串資料。每行定長 不足部分補為空格 最大長度為每行2000位元組,預設值為每行1位元組。設定長度 size 前需考慮字符集為單位元組或多位元組。varchar2 size 用於儲存變長的字...

Oracle欄位型別

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