WEB开发网      婵犵數濮烽弫鍛婄箾閳ь剚绻涙担鍐叉搐绾剧懓鈹戦悩瀹犲闁汇倗鍋撻妵鍕箛閸洘顎嶉梺绋款儑閸犳劙濡甸崟顖氬唨闁靛ě浣插亾閹烘鈷掗柛鏇ㄥ亜椤忣參鏌″畝瀣暠閾伙絽銆掑鐓庣仭缁楁垿姊绘担绛嬪殭婵﹫绠撻、姘愁樄婵犫偓娴g硶鏀介柣妯款嚋瀹搞儱螖閻樺弶鍟炵紒鍌氱Ч瀹曟粏顦寸痪鎯с偢瀵爼宕煎☉妯侯瀳缂備焦顨嗗畝鎼佸蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮⒑鐠団€虫灀闁哄懐濮撮悾鐤亹閹烘繃鏅濋梺闈涚墕濡瑩顢欒箛鏃傜瘈闁汇垽娼ф禒锕傛煕閵娿儳鍩f鐐村姍楠炴﹢顢欓懖鈺嬬幢闂備浇顫夊畷妯肩矓椤旇¥浜归柟鐑樻尭娴滃綊姊虹紒妯虹仸闁挎洍鏅涜灋闁告洦鍨遍埛鎴︽煙閼测晛浠滃┑鈥炽偢閹鈽夐幒鎾寸彇缂備緡鍠栭鍛搭敇閸忕厧绶炴俊顖滅帛濞呭洭姊绘担鐟邦嚋缂佽鍊垮缁樼節閸ャ劍娅囬梺绋挎湰缁嬫捇宕㈤悽鍛婄厽閹兼番鍨婚埊鏇㈡煥濮樿埖鐓熼煫鍥ュ劤缁嬭崵绱掔紒妯肩畺缂佺粯绻堝畷姗€濡歌缁辨繈姊绘担绛嬪殐闁搞劋鍗冲畷顖炲级閹寸姵娈鹃梺缁樻⒒閳峰牓寮崒鐐寸厱闁抽敮鍋撻柡鍛懅濡叉劕螣鐞涒剝鏂€闂佺粯鍔曞Ο濠囧吹閻斿皝鏀芥い鏃囨閸斻倝鎽堕悙鐑樼厱闁哄洢鍔屾晶顖炴煕濞嗗繒绠婚柡灞界Ч瀹曨偊宕熼鈧▍锝囩磽娴f彃浜炬繝銏f硾椤戝洨绮绘ィ鍐╃厵閻庢稒岣跨粻姗€鏌ㄥ☉妯夹fい銊e劦閹瑩顢旈崟顓濈礄闂備浇顕栭崰鏍礊婵犲倻鏆﹂柟顖炲亰濡茶鈹戦埄鍐ㄧ祷妞ゎ厾鍏樺璇测槈閵忕姈鈺呮煏婢跺牆鍔撮柛鏂款槺缁辨挻鎷呯粙搴撳亾閸濄儳鐭撶憸鐗堝笒閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓 ---闂傚倸鍊搁崐鐑芥倿閿旈敮鍋撶粭娑樺幘濞差亜鐓涢柛娑卞幘椤斿棝姊虹捄銊ユ珢闁瑰嚖鎷�
开发学院数据库DB2 DB2 基础: 结构化数据类型和类型化表简介 阅读

DB2 基础: 结构化数据类型和类型化表简介

 2010-07-20 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷闂傚倸鍊搁崐椋庣矆娓氣偓楠炲鏁撻悩鎻掔€梺姹囧灩閻忔艾鐣烽弻銉︾厵闁规鍠栭。濂告煕鎼达紕校闁靛洤瀚伴獮鎺楀箣濠靛啫浜鹃柣銏⑶圭壕濠氭煙閻愵剚鐏辨俊鎻掔墛缁绘盯宕卞Δ鍐冣剝绻涘畝濠佺敖缂佽鲸鎹囧畷鎺戭潩閹典焦鐎搁梻浣烘嚀閸ゆ牠骞忛敓锟�婵犵數濮烽弫鍛婃叏椤撱垹绠柛鎰靛枛瀹告繃銇勯幘瀵哥畼闁硅娲熷缁樼瑹閳ь剙岣胯鐓ら柕鍫濇偪濞差亜惟闁宠桨鑳堕崝锕€顪冮妶鍡楃瑐闁煎啿鐖奸崺濠囧即閵忥紕鍘梺鎼炲劗閺呮稒绂掕缁辨帗娼忛埡浣锋闂佽桨鐒﹂幑鍥极閹剧粯鏅搁柨鐕傛嫹闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷  闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶銆冮崨鏉戠厺鐎广儱顦崡鎶芥煏韫囨洖校闁诲寒鍓熷铏圭磼濡搫顫嶅銈嗗姉閸樠囧煡婢跺á鐔兼煥鐎n兘鍋撴繝姘拺鐟滅増甯掓禍浼存煕閹惧鈽夐柍缁樻煥椤繈鎳滅喊妯诲闂備礁鎲$粙鎴︺偑閺夋垟鏋旈柡鍐e亾缂佺粯绋撴禒锕傚磼濮橆剦鐎抽梻浣哥-缁垶骞戦崶顒傚祦閻庯綆浜栭弨浠嬫煙闁箑澧い鏂垮€规穱濠囨倷椤忓嫧鍋撻弽褜娼栧┑鐘宠壘閸屻劎鎲歌箛娑樼疅闁圭虎鍠楅弲鎼佹煥閻曞倹瀚�
核心提示: Salesperson_t 和 Engineer_t 是在 Emp_t 之下创建的子类型,Emp_t 是它们的超类型,DB2 基础: 结构化数据类型和类型化表简介(6),这些子类型的定义包括不属于 Emp_t 类型的其他属性,但那就是这些子类型与它们的超类型的不同之处;属性是超类型定义的一部分,

Salesperson_t 和 Engineer_t 是在 Emp_t 之下创建的子类型,Emp_t 是它们的超类型。这些子类型的定义包括不属于 Emp_t 类型的其他属性,但那就是这些子类型与它们的超类型的不同之处;属性是超类型定义的一部分,不过,也可以被其子类型所继承。

已经创建了所需的结构化类型,现在我们就可以创建基于这些类型(清单 3)的类型化表。小型表层次结构的超表称为 EMP。在富有想象力的创造中,我们命名了对象标识符列 OID,并指定它的值由用户生成。插入一个 OID 列的值之后,该值就无法再修改。INHERIT SELECT PRIVILEGES 子句指定,在超表上保留了SELECT 权限的用户或组都将获准在新表上拥有同等的权限。

我们现在准备把数据插入到 ENGINEER 和 SALESPERSON 表中。两个例子中 INSERT 语句的 VALUES 子句包括了对 address_t()的调用,像先前的例子一样,它为 address_t 结构化类型调用了构造函数,创建了一个所有属性值都为空的类型实例。双点运算符调用了 mutator 方法来设置每个地址属性的值。VALUES 子句还为用户指定的 OID 列的值包括了一个 casting 函数,因为该值必须强制转换成目标表的 REFERENCE 类型。默认情况下,casting 函数的名称和结构化类型的名称相同(在这里,这两个名称分别是 Engineer_t 和 Salesperson_t)。

针对层次结构中的三个表执行的查询表明,ENGINEER 和 SALESPERSON 子表已经继承了其超表(EMP)的列,其中包括对象标识符列(OID)。

清单 3. 类型化表层次结构,演示层次结构

connect to sample
 
... 
 
create type emp_t as (empno integer, lname varchar(12), fname varchar(12), 
deptno char(4), salary decimal(7,2), address address_t) ref using integer mode db2sql 
create type salesperson_t under emp_t as (commission decimal(7,2)) mode db2sql 
create type engineer_t under emp_t as (perf_bonus decimal(7,2), 
 recog_award decimal(7,2)) mode db2sql 
create table emp of emp_t (ref is oid user generated) 
create table salesperson of salesperson_t under emp inherit select privileges 
create table engineer of engineer_t under emp inherit select privileges 
insert into engineer (oid, empno, lname, fname, deptno, salary, 
 perf_bonus, recog_award, address) values (engineer_t(1), 42, 'Kidman', 'Jennifer', 
 'Z004', 65000.00, 4000.00, 2000.00, address_t() ..street('7 Dorval Rd') 
  ..city('Markham') ..province('Ontario') ..postal_code('L6G2R1')) 
insert into salesperson (oid, empno, lname, fname, deptno, salary, commission, address) 
 values (salesperson_t(2), 69, 'Theron', 'Maggie', 'C012', 49000.00, 15000.00, 
 address_t() ..street('7 River St') ..city('Ottawa') ..province('Ontario') 
  ..postal_code('K9G6R2')) 
select * from emp 
OID     EMPNO    LNAME    FNAME    DEPTNO SALARY  ADDRESS 
----------- ----------- ------------ ------------ ------ --------- -------------------- 
     1     42 Kidman    Jennifer   Z004  65000.00 7 Dorval Rd, Mark... 
     2     69 Theron    Maggie    C012  49000.00 7 River St, Ottaw... 
 2 record(s) selected. 
select oid, empno, lname, deptno, salary, perf_bonus, recog_award, address from engineer 
OID     EMPNO    LNAME    DEPTNO SALARY  PERF_BONUS RECOG_AWARD ADDRESS 
----------- ----------- ------------ ------ --------- ---------- ----------- ---------- 
     1     42 Kidman    Z004  65000.00  4000.00   2000.00 7 Dorva... 
 1 record(s) selected. 
select oid, empno, lname, deptno, salary, commission, address from salesperson 
OID     EMPNO    LNAME    DEPTNO SALARY  COMMISSION ADDRESS 
----------- ----------- ------------ ------ --------- ---------- ---------------------- 
     2     69 Theron    C012  49000.00  15000.00 7 River St, Ottawa,... 
 1 record(s) selected. 
connect reset 

结束语

我们已经看到,用户定义的结构化数据类型是表示结构化(非原子的)数据的一种有效方法,这些数据需要作为单独的数据元素或一个独立的单元进行处理,这主要取决于应用程序。这个话题很广泛,并且可能很复杂。本文向您介绍了结构化数据类型、类型层次结构和类型化表的基本概念,这些概念都通过实际例子得以阐明,您可以立刻使用和运行这些例子。

上一页  1 2 3 4 5 6 

Tags:DB 基础 结构化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接