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...