


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、嵌套表嵌套表是表中之表。一個嵌套表是某些行的集合,它在主表中表示為其中的一列。對主表中的每一條記錄,嵌套表可以包含多個行。在某種意義上,它是在一個表中存儲一對多關系的一種方法。考查一個包含部門信息的表,在任何時間內每個部門會有很多工程正在實施。在一個嚴格的關系模型中,將需要建立兩個獨立的表department和project。嵌套表允許在department表中存放關于工程的信息。勿需執(zhí)行聯(lián)合操作,就可以通過 department表直接訪問工程表中的記錄。這種不經(jīng)聯(lián)合而直接選擇數(shù)據(jù)的能力使得用戶對 數(shù)據(jù)訪問更加容易。甚至在并沒有定義方法來訪問嵌套表的情況下,也能夠很清楚地把部門和工程中的數(shù)據(jù)聯(lián)
2、系在一起。在嚴格的關系模型中,department和project兩個表的聯(lián)系需要通過外部關鍵字(外鍵)關系才能實現(xiàn)。二、舉例說明嵌套表的使用:假設有一個關于動物飼養(yǎng)員的表,希望其中具有他們飼養(yǎng)的動物的信息。用一個嵌套表,就可以在同一個表中存儲飼養(yǎng)員和其飼養(yǎng)的全部動物的信息。1、創(chuàng)立類型animal_ty :此類型中,對于每個動物都包含有一個記錄,記載了其品種、名 稱和出生日期信息。CREATE TYPE an imal_ty AS OBJECT (breed varchar2(25),n ame varchar2(25),birthdate date);2、創(chuàng)立animals_nt :此類型
3、將用作一個嵌套表的根底類型。CREATE TYPE an imals_ nt as table of an imal_ty;3、創(chuàng)立表breeder :飼養(yǎng)員的信息表create table breeder(breeder name varchar2(25),ani mals ani mals_ nt)n ested table ani mals store as ani mals_ nt_tab;4、向嵌套表中插入記錄in sert into breedervalues('03y',a nimalsjn t(a nimal_ty('dog','butc
4、h','31-03-97'),an imal_ty('dog','rover','31-03-97'),an imal_ty('dog','julio','31-03-97');in sert into breedervalues('ja ne',a nimals_ nt(a nimal_ty('cat','a n','31-03-97'),an imal_ty('cat','jame
5、39;,'31-03-97'),an imal_ty('cat','killer','31-03-97');commit;5、查詢嵌套表select n ame,birthdate fromtable(select ani mals from breeder);select n ame,birthdate fromtable(select ani mals from breederwhere breeder name='03y');select breeder name ,n ame,birthdate fromb
6、reeder a,table(a.a ni mals) b同樣,三、嵌套表的特點:1、對象復用:如果編寫面向對象的代碼,就提高了重用以前編寫的代碼模塊的時機。如果創(chuàng)立面向對象的數(shù)據(jù)庫對象,也就提高了數(shù)據(jù)庫對象能夠被重用的時機。2、標準支持:如果創(chuàng)立標準的對象,那么它們被重用的時機就會提高。如果有多個應用或 多個表使用同一數(shù)據(jù)庫對象集合,那么它就是既成事實的數(shù)據(jù)庫對象標準。3、定義訪問路徑:對于每一個對象,用戶可定義在其上運行的過程和函數(shù),從而可以使數(shù)據(jù)和訪問此數(shù)據(jù)的方法聯(lián)合起來。有了用這種方式定義的訪問路徑,就可以標準化數(shù)據(jù)訪問的方法并提高對象的可復用性。對象表在Oracle中把對象作為一種數(shù)
7、據(jù)類型object,不但可以包含根本的 數(shù)據(jù)類型、集合,還可以為其定義 函數(shù)和過程作為其方法。創(chuàng)立格式如下:create or replace type person as object(NAME varchar2 ( 10 ),SEX char ( 2 ),BIRTHDATE date ,|PLACE varchar2 ( 100 );注意:不能在數(shù)據(jù)類型中定義以下類型:LONG、LONG RAW2. ROWID3. PL/SQL 特定類型(BINARY_INTEGER 、BOOLEAN、TYPE、ROWTYPE)4. 程序包中自定義的數(shù)據(jù)類型構造函數(shù)使用之前創(chuàng)立的對象建立構造函數(shù):decl
8、arepers on_one pers on;beginperson_one:=person('張三','男',date '2021-10-11','杭州');dbms_output.put_li ne(pers on_on e. name);end說明:先創(chuàng)立了一個 perso n類型的局部變量,再為該變量創(chuàng)立了一個實例。在實例化中用到的person是系統(tǒng)的構造函數(shù),可以對person類型變量進行賦值,該構造函數(shù)在對象創(chuàng)立 時由系統(tǒng)自動創(chuàng)立,與對象的名稱相同。注:創(chuàng)立對象實例時必須提供全部參數(shù),否那么報錯。引用對象類型可以創(chuàng)立實
9、例化的對象之后,將該對象插入到堆表中。1、例如創(chuàng)立含有 pers on類型數(shù)據(jù)的表:create tablet_pers on(pers on _col pers on,emp_idn umber ,dep_idn umber );2、直接插入數(shù)據(jù):insert into t_person values(person(' 張三 ',' 男 ',date'2021-10-11',' 杭州'),12345, 11 );commit ;3、也可以在PL/SQL中先創(chuàng)立保存實例的變量,再進行插入:declarepers on_one pe
10、rs on;begin);pers on_on e:=pers on(李四,男,date '2021-10-20'上海12345, 11 );insert in tot_pers onvalues(pers on_mit ;end ;4、之后可進行查詢數(shù)值:SQL > select * from t_person;PERSON_COL( NAME , SEX, BIRTHDATE, PLACE)EMP_IDDEP_ID1234512345PERSON(' 張三','男','11-OCT-08',' 杭州
11、')11PERSON('李四','男','20-OCT-08','上海')115、 假設需要查詢對象中的某個變量,那么必須在最前面加上表名:SQL > selecta.person_col.NAMEfrom t_person a;PERSON_COL.NAME張三李四注:當在某表中參加對象后,對象在table被drop之前不能被drop。方法方法:實例方法、類方法、構造函數(shù)、映射方法、排序方法1、實例方法和類方法實例方法是必須創(chuàng)立實例后才可以調用的方法,而類方法可以在創(chuàng)立實例前調用。實例方法用member 聲明,類方
12、法用 static倉U建 type 和口 type body :create or replacetype pers onas object(NAME varchar2(10 ),SEX char ( 2 ),BIRTHDATE dateJ|PLACE varchar2(100 ),|member procedurecha ng_n ame(name varchar2),|staticfun cti onnew (v_namevarchar2,v_sexvarchar2)returnpers on);create or replacetype body person ismember proc
13、edurechang_name( name varchar2) isbegin|:=name ;end chang_name;returnstatic function new (v_name varchar2 ,v_sex varchar2 )pers onisbeginnull , null );retur n(pers on(v_n ame,v_sex.end newend ;在過程中調用兩種不同類型的方法:declarepers on_one pers on;pers on_ two pers on;beginperson_one:=person('李四,男,
14、date '2021-10-20','上海);-創(chuàng)立實例person_one.chang_name(' 王五');dbms_output.put_li ne(pers on_on e. name);person_two:=person.new('小張',' 女');- 可直接調用dbms_output.put_li ne(pers on_ two. name);end ;2、映射方法由于將對象作為字段時,對象中包含很多參數(shù)須發(fā)進行比擬,此時可以為對象創(chuàng)立映射方法。在創(chuàng)立映射方法后,如果用到where 或order by 以
15、及 <>=等比擬關系時,自動調用映射方法。注:映射方法不帶參數(shù),且只能有一個。倉U建 type 禾口 type body :create or replace typepersonas object(NAME varchar2 ( 10 ),SEX char ( 2 ),BIRTHDATE date ,PLACE varchar2 ( 100 ),map member functioncompare return date);create or replace type body person ismap member functioncompare return date isb
16、eginretur nself.birthdate;end compare;end ;調用映射方法進行比擬:declarepers on_one pers on;pers on_ two pers on;begin上海杭州person_one:=person('李四,男,date '2021-10-20'');person_two:=person(' 小張, 女,date '2021-10-11'');if pers on_one > pers on _twothe ndbms_output.put_line(person_
17、|'比'|person_|' 大 ');elsifpers on_one < pers on _twothe ndbms_output.put_line(person_|'比'|person_|' 大 ');else dbms_output.put_line(' 一樣大');end if ;end ;3、排序方法排序方法主要為了簡化比擬對象大小的值,相當于sign舉例說明,創(chuàng)立 type 和type body :create or replace
18、 type person as object(NAME varchar2 ( 10 ),SEX char ( 2 ),BIRTHDATE date ,|PLACE varchar2 ( 100 ),in tegerin tegerisorder member functionmatch(p_person person)return);create or replace type body person isorder member functionmatch(p_person person)returnbeginif self.birthdate > p_pers on .birthdatethe nreturn 1 ;elsif self.birthdate < p_pers on .birthdatethe nreturn - 1 ;else return 0 ;end ifend match;end ;調用排
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化娛樂產業(yè)政策影響與經(jīng)紀人應對措施考核試卷
- 水產品冷凍加工技術培訓與人才培養(yǎng)考核試卷
- 廚房電器市場調查與分析考核試卷
- 英語三年級上冊人教版三年級英語上冊recycle1第三課時模板-英語
- 影視動畫渲染節(jié)點租賃與高速存儲服務合同
- 獨家技術培訓補充協(xié)議
- 演員代言產品售后服務責任補充協(xié)議
- 煉鋼爐智能溫控系統(tǒng)租賃與生產設備升級服務協(xié)議
- 網(wǎng)絡文學作品改編為影視作品獨家授權合同
- 物業(yè)公司安保人員智能設備操作全職聘用合同
- 《資本論》(德)卡爾·馬克思-文字版
- 多模態(tài)交互反饋機制
- 部編版小學道德與法治三年級下冊第8課《大家的“朋友”》課件
- DL∕T 523-2017 化學清洗緩蝕劑應用性能評價指標及試驗方法
- 中俄東線天然氣管道工程(永清-上海)環(huán)境影響報告書
- 關愛生命-急救與自救技能智慧樹知到期末考試答案章節(jié)答案2024年上海交通大學醫(yī)學院
- 2023年丹陽市婦幼保健院(第二人民醫(yī)院)招聘考試真題及答案
- 中醫(yī)培訓課件:《中藥熱奄包技術》
- 五年級語文下冊第八單元【教材解讀】
- 數(shù)字貿易學 課件 第3章 消費互聯(lián)網(wǎng)、產業(yè)互聯(lián)網(wǎng)與工業(yè)互聯(lián)網(wǎng)
- 第11課+宋元時期的經(jīng)濟、科技與文化【中職專用】《中國歷史》(高教版2023基礎模塊)
評論
0/150
提交評論