Oracle資料型別

2021-04-17 14:33:28 字數 4374 閱讀 4432

oracle系列:oracle資料型別

標量(scalar)、復合(composite)、引用(reference)和lob四種資料型別。

大部分會單獨介紹。

(本文所列舉的是pl/sql當中可以定義的資料型別,並不是所有的型別都可以在建表時指定為列的資料型別,)

一,標量(scalar)

合法的標量型別與資料庫的列所使用的型別相同,

此外它還有一些擴充套件。它又分為七個組:數字、字元、行、日期、行標識、布林和可信

1,數字資料型別

它有三種基本型別--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型的變數將會發生錯誤。

2,字元

包括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位元組的可變字串。

一列只可以有一列long型別;

long列不能定義唯一約束或主鍵約束;

不能建立索引;

過程或過程不能接受long型別資料型別引數;

④nchar、nvarchar2,

國家字符集,與環境變數nls指定的語言集密切相關,使用方法和char、varchar2相同。

3,行

包括raw和long raw兩種型別。用來儲存二進位制資料,不會在字符集間轉換。

①raw

儲存基於位元組的資料,宣告方式raw(l),l為長度,以位元組為單位,作為資料庫列最大2000,作為變數最大32767位元組。

②long raw

儲存可變長度二進位制資料,作為資料庫列最大儲存2g位元組的資料,作為變數最大32760位元組。

所受限制同long型別資料;

4,日期

①date

用來儲存表中的日期和時間資料,佔7個位元組固長(從世紀到秒),絕對沒有「千年蟲」問題。

sysdate函式:返回當前日期和時間;

②timestamp

和date區別:從年到秒,秒精確到小數點後6位,包含時區資訊。

systimestamphans函式:返回當前日期和時間,以及時區;

5,行標識

①rowid : 唯一標誌記錄物理位置的乙個id,基於64位編碼的18個字元顯示。

參見我的bloge:oracle系列:偽列rowid

rowid的函式

rowidtochar(rowid) :將rowid轉換成string

chartorowid('rowid_string') :將string轉換成rowid

②rownum

返回乙個數值代表行的次序,數值從1開始,可以用來限制返回的行數。

6,布林(boolean)

僅僅可以表示true、false或者null。

7,可信(mlslabel)

可以在trusted oracle中用來儲存可變長度的二進位制標籤。

在標準oracle中,只能儲存null值。

二,復合(composite)

標量型別是經過預定義的,利用這些型別可以衍生出一些復合型別。主要有記錄、表。

除了記錄和表之外,還有物件型別、集合(巢狀表和varrays)等型別,這些將專門講解。

1,記錄record :由單行多列的標量型別構成的臨時記錄物件型別;

參見我的bloge: oracle系列:記錄record

2,pl/sql表:由多行單列的索引列和可用列構成的臨時索引表物件型別;

參見我的bloge: oracle系列:pl/sql表

3,record + pl/sql表:封裝成乙個臨時的表物件,進行資料的多行多列儲存,進行傳遞和操作。

參見我的bloge: oracle系列:record + pl/sql表

三、引用(reference)

1,cursor型別:從表中檢索出結果集構成的臨時物件,從中每次指向一條記錄進行互動。

參見我的bloge: oracle系列:cursor

2,ref cursor型別:動態關聯結果集的臨時物件。

參見我的bloge: oracle系列:ref cursor

四,lob型別

lob變數主要是用來儲存大量資料的資料庫字段,最大可以儲存4g位元組的非結構化資料。

允許對資料進行高效,隨機,分段訪問。可以是外部也可以是內部,取決它們與相對於資料庫的位置。

乙個表中可以多個列定義為lob型別。

參見我的bloge: oracle系列:lob大物件處理

參見我的bloge: oracle系列:的儲存

儲存大量單位元組字元資料。非結構化xml文件。(別用來存中文喔。。。)

2,nclob:

用來儲存定寬多位元組字元資料。(例如:存《笑傲江湖》就挺好)

4,bfile:

將二進位制檔案儲存在資料庫外部的作業系統檔案中,最大4g;

參考:參考書《oracle8 pl/sql程式設計》(《oracle8 pl/sql programming》) oracle技術系列叢書 機械工業出版社

oracle資料型別

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

Oracle資料型別

一 概述 標量 scalar 復合 composite 引用 reference lob 二 標量 scalar 合法的標量型別與資料庫的列所使用的型別相同,此外它還有一些擴充套件。它又分為七個組 數字 字元 行 日期 行標識 布林和可信。數字,它有三種基本型別 number pls integer...

Oracle 資料型別

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