oracle資料型別簡介
一、概述
在oracle8中定義了:標量(scalar)、復合(composite)、引用(reference)和lob四種資料型別,下面詳細介紹它們的特性。
二、標量(scalar)
合法的標量型別與資料庫的列所使用的型別相同,此外它還有一些擴充套件。它又分為七個組:數字、字元、行、日期、行標識、布林和可信。
數字,它有三種基本型別--number、pls_integer和binary_intener。number可以描述整數或實數,而pls_integer和binary_intener只能描述整數。
number,是以十進位制格式進行儲存的,它便於儲存,但是在計算上,系統會自動的將它轉換成為二進位制進行運算的。它的定義方式是number(p,s),p是精度,最大38位,s是刻度範圍,可在-84...127間取值。例如:number(5,2)可以用來儲存表示-999.99...999.99間的數值。p、s可以在定義是省略,例如:number(5)、number等;
binary_intener用來描述不儲存在資料庫中,但是需要用來計算的帶符號的整數值。它以2的補碼二進位制形式表述。迴圈計數器經常使用這種型別。
pls_integer和binary_intener唯一區別是在計算當中發生溢位時,binary_intener型的變數會被自動指派給乙個number型而不會出錯,pls_integer型的變數將會發生錯誤。
字元,包括char、varchar2(varchar)、long、nchar和nvarchar2幾種型別。
char,描述定長的字串,如果實際值不夠定義的長度,系統將以空格填充。它的宣告方式如下char(l),l為字串長度,預設為1,作為變數最大32767個字元,作為資料儲存在oracle8中最大為2000。
varchar2(varchar),描述變長字串。它的宣告方式如下varchar2(l),l為字串長度,沒有預設值,作為變數最大32767個位元組,作為資料儲存在oracle8中最大為4000。在多位元組語言環境中,實際儲存的字元個數可能小於l值,例如:當語言環境為中文(simplified chinese_china.zhs16gbk)時,乙個varchar2(200)的資料列可以儲存200個英文本元或者100個漢字字元。
long,在資料庫儲存中可以用來儲存高達2g的資料,作為變數,可以表示乙個最大長度為32760位元組的可變字串。
nchar、nvarchar2,國家字符集,與環境變數nls指定的語言集密切相關,使用方法和char、varchar2相同。
行,包括raw和long raw兩種型別。用來儲存二進位制資料,不會在字符集間轉換。
raw,類似於char,宣告方式raw(l),l為長度,以位元組為單位,作為資料庫列最大2000,作為變數最大32767位元組。
long raw,類似於long,作為資料庫列最大儲存2g位元組的資料,作為變數最大32760位元組。
日期,只有一種型別--date,用來儲存時間資訊,站用7個位元組(從世紀到秒),絕對沒有「千年蟲」問題。
行標識,只有一種型別--rowid,用來儲存「行識別符號」,可以利用rowidtochar函式來將行標識轉換成為字元。
布林,只有一種型別--boolean,僅僅可以表示true、false或者null。
可信,只有一種型別--mlslabel,可以在trusted oracle中用來儲存可變長度的二進位制標籤。在標準oracle中,只能儲存null值。
三、復合(composite)
標量型別是經過預定義的,利用這些型別可以衍生出一些復合型別。主要有記錄、表。
記錄,可以看作是一組標量的組合結構,它的宣告方式如下:
type record_type_name is record
( filed1 type1 [not null] [:=expr1]
.......
filedn typen [not null] [:=exprn] )
其中,record_type_name是記錄型別的名字。(是不是看著象create table?......)引用時必須定義相關的變數,記錄只是type,不是variable。
表,不是物理儲存資料的表,在這裡是一種變數型別,也稱為pl/sql表,它類似於c語言中的陣列,在處理方式上也相似。它的宣告方式如下:
type table_type_name is table of scalar_type index by binary_intener;
其中,table_type_name是型別的名字,scalar_type是一種標量型別的型別宣告。引用時也必須定義相關的變數。表和陣列不同,表有兩列,key和value,key就是定義時宣告的binary_intener,value就是定義時宣告的scalar_type。
除了記錄和表之外,還有物件型別、集合(巢狀表和varrays)等型別,這些將專門講解。
四、引用(reference)
在pl/sql8.0之前,只有一種型別--ref cursor,也就是游標。它的定義較為簡單,
cursor cursor_name is select .....from.....;
在pl/sql8.0之後,引入了ref型別,它指向乙個物件。這種型別將單獨講解。(等我弄明白再說,免得在高人面前......)
五、lob型
lob變數主要是用來儲存大量資料的資料庫字段,最大可以儲存4g位元組的內容(這麼大,存vcd?,浪費!)。主要有:
clob:和oracle7中的long型別相似,儲存單位元組字元資料。(別用來存中文喔。。。)
nclob:用來儲存定寬多位元組字元資料。(例如:存《嘯傲江湖》就挺好)
blob:和long raw相似,用來儲存無結構的二進位制資料。
bfile:它用來允許oracle對資料庫外儲存的大型二進位制文字進行唯讀形式的訪問。
Oracle資料型別簡介
一 概述 在oracle8中定義了 標量 scalar 復合 posite 引用 reference 和lob四種資料型別,下面詳細介紹它們的特性。二 標量 scalar 合法的標量型別與資料庫的列所使用的型別相同,此外它還有一些擴充套件。它又分為七個組 數字 字元 行 日期 行標識 布林和可信。數...
oracle資料型別簡介
char 固定長度字串 最大長度2000 bytes varchar2 可變長度的字串 最大長度4000 bytes 可做索引的最大長度749 nchar 根據字符集而定的固定長度字串 最大長度2000 bytes nvarchar2 根據字符集而定的可變長度字串 最大長度4000 bytes da...
oracle資料型別
char 用於描述定長的字元型資料,長度 2000位元組 varchar2 用於描述變長的字元型資料,長度 4000位元組 nchar 用來儲存unicode字符集的定長字元型資料,長度 1000位元組 nvarchar2 用來儲存unicode字符集的變長字元型資料,長度 1000位元組 numb...