a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

Oracle數據類型簡介

2024-08-29 13:51:58
字體:
來源:轉載
供稿:網友
一、概述
  在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對數據庫外存儲的大型二進制文本進行只讀形式的訪問。
  六、其他
  其實在完成對標量變量的理解之后,基本上可以應付C/S模式下的常規數據庫應用所需了,后續的類型說實話,我玩了5年ORACLE,都很少用到。
  附:參考書《ORACLE8 PL/SQL程序設計》(《ORACLE8 PL/SQL PROGRAMMING》) ORACLE技術系列叢書 機械工業出版社
  注:本文所列舉的是PL/SQL當中可以定義的數據類型,并不是所有的類型都可以在建表時指定為列的數據類型

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩精品一区二区三区在线观看 | 成人黄色在线视频 | 中文字幕毛片 | 亚洲蜜臀av乱码久久精品蜜桃 | 99久久久免费视频 | 日本一区二区高清 | 亚洲久久在线 | 绯色av一区二区三区在线高清 | 尤物久久av一区二区三区亚洲 | 国产精品免费一区二区 | 在线观看成人精品 | 性一级录像片片视频免费看 | 91免费看片 | 五月婷婷之综合激情 | 美女主播精品视频一二三四 | 精品久久久中文字幕 | 欧美在线网站 | 亚洲一区二区精品视频 | 日韩av高清在线 | a成人在线 | 色十八| 国产裸体永久免费视频网站 | 国产日产精品一区二区三区四区 | 亚洲精品日韩综合观看成人91 | 一区二区精品在线 | 午夜精品久久久久久久久久久久久 | 日本色一区 | 欧美 日韩 亚洲 一区 | 国产欧美一区二区视频 | 久久国产精品免费一区二区三区 | 久久久人成影片一区二区三区 | 午夜免费视频网站 | 国产精品一区二区在线免费观看 | 最新中文字幕在线观看 | 久久久精品网站 | 精品国产乱码简爱久久久久久 | 免费观看成人羞羞视频网站观看 | 日韩视频在线观看不卡 | 欧美黄a| 色爽av | 亚洲色图 偷拍自拍 |