


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌套表嵌套表是表中之表。一個嵌套表是某些行的集合,它在主表中表示為其中的一列。對主表中的每一條記錄,嵌套表可以包含多個行。在某種意義上,它是在一個表中存儲一對多關(guān)系的一種方法??疾橐粋€包含部門信息的表,在任何時間內(nèi)每個部門會有很多工程正在實施。在一個嚴格的關(guān)系模型中,將需要建立兩個獨立的表department和project。嵌套表允許在department表中存放關(guān)于工程的信息。勿需執(zhí)行聯(lián)合操作,就可以通過 department表直接訪問工程表中的記錄。這種不經(jīng)聯(lián)合而直接選擇數(shù)據(jù)的能力使得用戶對 數(shù)據(jù)訪問更加容易。甚至在并沒有定義方法來訪問嵌套表的情況下,也能夠很清楚地把部門和工程中的數(shù)據(jù)聯(lián)
2、系在一起。在嚴格的關(guān)系模型中,department和project兩個表的聯(lián)系需要通過外部關(guān)鍵字(外鍵)關(guān)系才能實現(xiàn)。二、舉例說明嵌套表的使用:假設(shè)有一個關(guā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、對象復(fù)用:如果編寫面向?qū)ο蟮拇a,就提高了重用以前編寫的代碼模塊的時機。如果創(chuàng)立面向?qū)ο蟮臄?shù)據(jù)庫對象,也就提高了數(shù)據(jù)庫對象能夠被重用的時機。2、標準支持:如果創(chuàng)立標準的對象,那么它們被重用的時機就會提高。如果有多個應(yīng)用或 多個表使用同一數(shù)據(jù)庫對象集合,那么它就是既成事實的數(shù)據(jù)庫對象標準。3、定義訪問路徑:對于每一個對象,用戶可定義在其上運行的過程和函數(shù),從而可以使數(shù)據(jù)和訪問此數(shù)據(jù)的方法聯(lián)合起來。有了用這種方式定義的訪問路徑,就可以標準化數(shù)據(jù)訪問的方法并提高對象的可復(fù)用性。對象表在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ù)類型構(gòu)造函數(shù)使用之前創(chuàng)立的對象建立構(gòu)造函數(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)的構(gòu)造函數(shù),可以對person類型變量進行賦值,該構(gòu)造函數(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、 假設(shè)需要查詢對象中的某個變量,那么必須在最前面加上表名:SQL > selecta.person_col.NAMEfrom t_person a;PERSON_COL.NAME張三李四注:當在某表中參加對象后,對象在table被drop之前不能被drop。方法方法:實例方法、類方法、構(gòu)造函數(shù)、映射方法、排序方法1、實例方法和類方法實例方法是必須創(chuàng)立實例后才可以調(diào)用的方法,而類方法可以在創(chuàng)立實例前調(diào)用。實例方法用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 ;在過程中調(diào)用兩種不同類型的方法: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('小張',' 女');- 可直接調(diào)用dbms_output.put_li ne(pers on_ two. name);end ;2、映射方法由于將對象作為字段時,對象中包含很多參數(shù)須發(fā)進行比擬,此時可以為對象創(chuàng)立映射方法。在創(chuàng)立映射方法后,如果用到where 或order by 以
15、及 <>=等比擬關(guān)系時,自動調(diào)用映射方法。注:映射方法不帶參數(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 ;調(diào)用映射方法進行比擬: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 ;調(diào)用排
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源汽車電控工程師崗位面試問題及答案
- 2025屆重慶市主城四區(qū)高一下化學期末復(fù)習檢測試題含解析
- 廣西玉林、柳州市2025年高一下化學期末聯(lián)考模擬試題含解析
- 廣東省深圳市南山區(qū)南頭中學2025屆高二下化學期末預(yù)測試題含解析
- 江蘇省南京梅山高級中學2025年化學高二下期末檢測試題含解析
- 2025屆湖北省鄂東南五校一體聯(lián)盟聯(lián)考高二下化學期末質(zhì)量跟蹤監(jiān)視試題含解析
- 縣區(qū)培訓材料管理辦法
- 跨境旅游品牌策略-洞察及研究
- 村級畜牧獸醫(yī)管理辦法
- 廈門采購方式管理辦法
- 外賣配送人員勞動合同
- 《義務(wù)教育數(shù)學課程標準(2022年版)》初中內(nèi)容解讀
- 精神疾病患者的麻醉管理
- 高一物理競賽試題及答案
- 醫(yī)院預(yù)約平臺建設(shè)方案
- 生命體征課件教學課件
- 2024年全國環(huán)保產(chǎn)業(yè)職業(yè)技能競賽(工業(yè)廢水處理工)考試題庫(含答案)
- 《烏魯木齊市國土空間總體規(guī)劃(2021-2035年)》
- HJ 651-2013 礦山生態(tài)環(huán)境保護與恢復(fù)治理技術(shù)規(guī)范(試行)
- SY-T 5333-2023 鉆井工程設(shè)計規(guī)范
- 冠脈介入進修匯報
評論
0/150
提交評論