Oracle的資料類型簡介

來源:互聯網
上載者:User

在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類型,它指向一個對象。

本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45460.htm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.