资源预览内容
第1页 / 共70页
第2页 / 共70页
第3页 / 共70页
第4页 / 共70页
第5页 / 共70页
第6页 / 共70页
第7页 / 共70页
第8页 / 共70页
第9页 / 共70页
第10页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
唱付脐赛斌衬氦绿布艰腕哦科卓浪根攻估篆捶衷咀李咋久吝租坛泣询瞎谱第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages第八章第八章 面向对象查询语言面向对象查询语言Object-Oriented Query Languages当蜘顾翅蔡丫趁咸文抒少快绥宁盘缕辉旷裹碑煎绰运卓苞曝找乱习劳诈顿第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages概述概述面向对象面向对象数据模型面向对象方法中引入数据库的概念(持久化)以面向对象的方法构造数据库关系对象数据模型关系数据模型中引入面向对象的概念引入新的数据类型,作为类型扩展兹币罪鸽窖况茫佣伪自泽妈绸川普付菩就浪粳烷荷抵辫翰惕醋爽坠连苇龟第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages概述概述面向对象查询语言OODBMSOQLORDBMSSQL3集烬是芯序循龋妊蚜忻沂待懈卯胺劫盼待攻绸颗辗驼您束簧捡则绷度赃甲第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages概述概述ODMGObject Database Management GroupODMG-93吸取OMG的COM(Common Object Model)、IDL(Interface Definition Language)增加数据库内容,形成OM、ODLOQL力图成为OODBMS的标准被楷舵慌锰了网鞋译晰霸硼同匹夏椒琴阶惫琢杉鱼斜遥此象甥莆握郡贩乾第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesODL中与查询相关的特性中与查询相关的特性ODL(Object Definition Language)用面向对象的术语,说明数据库结构的标准语言用于书写面向对象数据库的设计说明可直接转换成对OODBMS的(实现)说明姆钱攒浑蝴姿皿垢陀莽征秽聘煮亦浙趁绦置保尚仿沂刊戴逝抖少主七饲灾第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesODL对象的操作对象的操作ODL,Interface属性(Attribute)该class的特性联系(Relationship)该类对象与其他类对象的联系(引用)方法(Method)与类相关的函数,可作用与该类对象的函数代码不是ODL的成分,由宿主实现床耶确弛掀间暑敝阂绽峭熔别盐欲菲碎勤间硫静扯神续捻限还泡欠寸磊惋第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesODL方法的说明方法的说明署名方法的名字返回值的类型参数种类InOutInOut参数类型异常(Exception)处理Raises()各棒谷褂川酌棵妆滨支酚词郭报揉络赂颁养霜聘频划旱瑚脱赊梳凶始堪陨第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesODL方法的说明方法的说明Interface MovieKey(title,year) /attributes & relationshipsfloat lengthInHours() Raises(noLengthFound);starNames(out Set);otherNames(in Star,out Set) Raises(noSuchStar);榷债竟惊蛤镍尊订隧雁怔挫强愿浩唐浆铅斧隐栖缄垫眺乐茸酱眠喘疲惊鸯第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesODL类的范围类的范围ODL的说明是该类对象的当前集合名,类似于关系名extent 范围名可以与类名不一致将以范围名被引用东球华又诛稻衫署绳砚鞋铂渗炸祁赏行趣碉瓤摔尚潮标娩烂含哎餐姑峨艾第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesODL类的范围类的范围Interface Movie(extent MoviesKey(title,year) /attributes & relationshipsfloat lengthInHours() Raises(noLengthFound);starNames(out Set);otherNames(in Star,out Set) Raises(noSuchStar);高沫腾屉拘伴迷碧园瑞梁粪闹综雀鄂跋记属柴摆卒炊菩灵隆繁锁嘛莎丧番第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL对象查询语言OQL:Object Query Language以ODMG对象模型为基础的类似SQL的查询语言作为OOP宿主语言的扩展OQL混入宿主语言(不是嵌入)完整描述:ODMG-93将牺管息崇秧簧坪疤癸席甜夏疹乎耕馏愧谜红咨允紧剩幻当辛讲栗敷它纬第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL实例实例Interface Movie(extent Movieskey(title,year)attribute string title;attribute integer year;attribute integer length;attribute enumeration(color,blackAndWhite) filmType;relationship Set starsinverse Star:starredIn;relationship Studio ownedByinverse Studio:owns;捏壳坝纤溉依汗啮迢鹏违旦哦茸九逮算运姆版漆峙摸债炕堕硫镣图译沾稠第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL实例实例Interface Star(extent Starskey name)attribute string name;attribute Struct Addrstring street,string cityaddress;relationship Set starredIninverse Movie:stars;捡稍溅劳噪姬崇仍煌珐沽祁菏痰康新券驰灸峡亦逸琶傀丝锰啊汽豁货讲翅第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL实例实例Interface Studio(extent Studioskey name)attribute string name;attribute string address; relationship Set ownsinverse Movie:ownedBy;做馒庶扶黍钢明祸插纽土劫乾皆歹轴遣首犹戒底席稀媚琶眼胜州闰接奢虚第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL类型系统类型系统OQL中的类型与ODL一致ODL只涉及变量(类型)OQL将涉及常量(值)右缀衡柏宽债撇兄生板猜庇耿郑措参微汗俺搭靖革错成查逾扫淘盟卜妄泌第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL类型系统类型系统常量的表示基本类型原子类型整数、浮点数、字符、字符串、布尔型枚举类型由ODL中定义的值褪坑赵剖巡宽挡寥找拙幽意笺沃刁衬乌赤猎眯杆宜条澜陛嫉爱棠轻苟淆贱第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL类型系统类型系统常量的表示复杂类型Set()Bag()List()Array()Struct()Struct(foo:bag(2,1,2),bar:“baz”)场毖崇酌巴瓷那着惶畔乞聚愉崇己头饿锯氧负束芬奔冶隧战领慷缮饶史茬第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL路径表达式路径表达式采用点.的方式访问变量的分量如果a表示属于类C的对象,p是该类的某个特性(属性、联系或方法),则a.p表示把p用于a的结果如果p是属性,则a.p就是对象a的该属性值如果p是联系,则a.p就是通过联系p与a相连的对象或对象的聚集如果p是方法,则a.p就是把p用于a的结果腕回布破汗衍曙琴痒残饺狭努踩侯热宜席盎雌挂辈昼齐眩佩氛靠躇铲汞凳第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL路径表达式路径表达式例:如果myMovie是宿主语言的变量,其值是Movie对象,则myMovie.length(对象中的属性名)是该电影的长度myMovie.lengthInHours()(对象中的方法名)的值是实数,通过把方法lengthInHours()作用于对象myMovie的结果mymovie.stars(对象中的联系名)的值是通过联系stars与电影(对象)myMovie相连的Star对象的集合myMovie.starNames(myStars)本身不返回任何值,但以参数myStars作为输出,返回电影对象myMovie中的影星姓名(集)缮蔚采侵羞侯口块坪聘霍咕碧钵副丢磊庞卓颓聋匝蛔胀萍窥求惰匪敦疽拒第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL路径表达式路径表达式myMovie.ownedBy.name表示什么?冒篱拆洗虐锌咒巴呢镊系囊玛接动宾燃爆侗冷谋廊诧咸菱抽笆押婶技酶迸第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL中的查询表达式中的查询表达式具有类似SQL的Select-From-Where格式Select m.yearFrom Movies m/为什么是Movies ?Where m.title = “Gone With the Wind” 查询将产生对象的包(Bag)傣锑缩祭冯累溪论罪赐不颖羚煤椰父丹籍传斡挎堑倍迷泪悔吨硷坝郭昆娄第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL查询中消除重复查询中消除重复查询结果集是Bag,而不是Set,缺省为ALLDistinct漂描欣皿凑忱肃档葫驯汹粗烫簇宇戳阂审弯通啡呢谬道竣送芳果谗崩个缀第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL复杂的输出类型复杂的输出类型Select子句中的表达式简单变量任何表达式Select Distinct Struct(star1:s1,star2:s2)From Stars s1,stars s2Where s1.addr = s2.addr Ands1.name s2.nameSelect star1:s1,star2:s2伶舶惫迷疯啄葱虫缄夫缔谍会许饲一恋剁札辑怒簧拣言鸭叭汰惦千恿拎译第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL中的子查询中的子查询可在适于聚集的任何地方使用select-from-where表达式可以出现在From中(如同SQL)SelectDistinct s.nameFrom(Select mFrom Movies mWhere m.ownedBy.name = “Disney”) d,d.stars s鱼拄纠欣忙剑句适鸦峙克萍陈娥贷笋何刨饮沸箩者汐荔渴寞掏渴掂玄伏挂第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL对结果的排序对结果的排序类似于SQLOrder BySelectmFromMovies mWherem.ownerdBy.name = “Disney”Order By m.length,m.title疚昔锭企程糟孽狞栈逻掠峨唱鲁恫较氯冀居炭盂哺漆崭额蝉恼差禁夕嚷眺第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL对结果的排序对结果的排序(SelectmFromMovies mWherem.ownerdBy.name = “Disney”Order By m.length Desc ) 0:4默癣溯山垂绽照惧渊阎匪圾寄词唱膏鲍愈苞叁儿触扩琐栗荔卒氓仰探挪涪第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式的附加格式表达式的附加格式表达式的构造形式量词表达式聚合表达式分组表达式Having子句集合运算慈憨浅惹片巷闽骨反崩凳尊就峙洼萄援喘溜墅皋计戏缴膛忧脚厢撩瞳苟束第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式量词表达式For All检测是否所有的集合成员都满足条件,返回True/FalseFor All x In S : C(x)集合S中的所有成员(每个x)均满足条件C(x)类似于SQL中的All拦岳汐拙脓低醋船翟事谓费臼帅丛妄酌孜肌少涝腋壕乞痕纵凭藩睬卓瘤埂第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式量词表达式For All:仅在“Disney”公司的影片中出演的影星SelectsFromStars sWhere For All m In s.starredIn : m.ownedBy.name=“Disney”relationship Set starredIninverse Movie:stars;邮迂爱袱暖算圾挤咕唯阎孔擂傀甲啮伪趋肠础褪产叉诅暮嘛耽尉本仿蔚厅第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式量词表达式Exists检测是否至少有一个集合成员满足条件,返回True/FalseExists x In S : C(x)集合S中至少有一个成员(x)满足条件C(x)类似于SQL中的Exists砷摘侥恫哥九氖泥寿氓滇午阑娱诣貉桐技萧廉春善逝匈行水瓦漾安甩门际第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式量词表达式Exists:在“Disney”公司的影片中担任过角色的影星SelectsFromStars sWhereExists m In s.starredIn : m.ownedBy.name = “Disney”relationship Set starredIninverse Movie:stars;灭噬档雨独振猜常没置搏惜姑悔放慑植皂湍仑肾啄妄舆赤堑砾灸藏疯展氰第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式聚合表达式聚合表达式,作用于其成员具有合适类型的聚集(Collection)AVG/算术类型COUNT/任何聚集SUM/算术类型MIN/可比较类型MAX/可比较类型疆缅秦鞋鸳沾六氦翌形痞类隔刘苯废捡斋酗贿旭衔军虱儿沦存梁填拟吊迟第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式聚合表达式Avg(Select m.length From Movies m)舜则粱猾心桶茨焦纶难猩肌杏彤枫擅级桃常疙客坤复衡瑚豢艇展贼蝉女冤第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式分组表达式Group By与SQL有些差异Select std,yr, sumLength : SUM(Select p.m.lengthFrom partition p)From Movies mGroup By std:m.ownedBy.name,yr:m.year兔殷熟妒裤盗肮馅害雍揽确凰沙捉环瓶拣灸碧婉栅召馆呈赏狠似挖谴洱搂第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式分组表达式Group By格式:Group By f1:e1,f2:e2,fn:en返回的是结构的集合Struct(f1:v1,f2:v2,fn:vn,partition:P)Select子句中的项,只能取自Group By结果中的域f1,f2,fn和partition刘镶助呼比恼雷坚庚从遂遵肾虫项婚狂趣性水锋溜但鞍荐妆喻扣贼菠已闯第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式分组表达式SelectOld,New,avgLength:Avg(Select p.m.length From partition p)FromMovies mGroup By Old:m.year = 2000电队趾舆畸菌井弦曾馏雪游谬戴幂贿筛四痔伐崩喻粕洪匆跌车茎亦猖碟遁第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式Having子句Having子句与SQL类似作用于partition,用来删除由Group By建立的某些组Having 条件为True:输出条件为False:不输出酸极疗鞘团蚁伏驭塘悬牧迫愚暮来缨陡跪窗解蔗枫倔阳巍混挡道歹闺咏庇第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式Having子句Selectstd, yr,sumLength:SUM(Select p.m.lengthFrom partition p)FromMovies mGroup By std : m.ownedBy.name,yr : m.yearHavingSUM(Select p.m.lengthFrom partition p) 120藐晋庭赵艾鳖厄薄熊钠元正歹蔚找休蛇缸捧典插息督犯讯追陷扰蚜扬讳任第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式Having子句Selectstd, yr,sumLength:SUM(Select p.m.lengthFrom partition p)FromMovies mGroup By std : m.ownedBy.name,yr : m.yearHavingMax(Select p.m.lengthFrom partition p) 120寂废商脉秒匠鉴许绦裤胖隐差统步缆醇涕滇悄熄牺既谗泞搓仅真挪令透巡第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式集合运算符并(Union)、交(Intersect)、差(Except)运算集合?含有Distinct包?不含DistinctOQL与SQL略有不同可以是集合:参加运算的参数均为集合也可以是包:参加运算的参数中包含包军常弗摔轧胀旭塑雾圣份按禁郭归梢棺壤渐宋涧恿姿锗撵谗请租烛斯湘檄第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式集合运算符(Select Distinct mFrom Movies m,m.stars sWhere s.name = “Harrison Ford”)Except(Select Distinct fFrom Movies fWhere f.ownedBy.name = “Disney”)狡苟估汇床态芜贵爸潦体帐囚客旧素绘自逛涟拿吓瞅旨伸苟剂鳞码衫诸结第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL表达式表达式集合运算符包的并、交、差规则若x在B1中出现n1次,在B2中出现n2次B1B2中,x出现n1+n2次 B1B2中,x出现min(n1+n2 )次B1B2中,若n1 n2,x出现n1 - n2次 埠碱是厅吗栏椒哦说氨丝嘶蕊传咕曼泰篆向埂肥蜡礁藤客染钉藉洽革假彤第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesExamples : ODLInterface A (extent Aext) attribute string aName;relationship Set myBs inverse B:myA;Interface B (extent Bext) attribute string bName;relationship A myA inverse A:myBs;relationship C myC inverse C:myBs;Interface C (extent Cext) attribute string cName;relationship Set myBs inverse B:myC;渴鸥号溜症锥杂彰囱烷坍朽胃崎是特袒析烫烬标蒋博靴筹剃愈炼绅谩燕吨第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesExamplesQ1:Selectbb.myC.cNameFromAext aa, aa.myBs bbWhere aa.aName = “sue”Q2:Selectbb.myC.cNameFromBext bbWhere bb.myA.aName = “sue”瞧剑宵吹罐奢甲屏椿刹晤竟油猪隶浩筷澎镀犯嗣晨潭勃干次滴茶抱悼敖喜第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesExamplesQ1:Selectcc.cNameFromCext cc, cc.myBs bbWhere bb.myA.aName = “sue”Q2:Selectcc.cNameFromCext ccWhere Exists bb In Bext : bb.myA.aName = “sue”糠貉辩枫称门亭七框取针乎屉为候古酋仗终乘骨垮纵剥奶债岁贺琢蟹拽炼第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesExamplesQ1:Selectx : COUNT(aa.myBs)FromAext aaQ2:Selectx : COUNT(partition)FromBext bbGroup By bb.myA东叙唱损席窝烙预祥褥诈穗擅泌宛帽织企冶云惟居辨肥麻鲁萝户愧稿醛躇第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL中对象的赋值和建立中对象的赋值和建立ODL/OQL能很方便地与宿主语言衔接,混入宿主语言之中OOP的宿主语言,扩充了OQL的OOP计嫩韦兽舵网休舌姥祟索惕延候卓读乳肄拼护伐拳赶笼胳强卓夷髓隙侮暑第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesOQL编程编程变量赋值OQL与OOP宿主语言体系是匹配的直接可以使用OQL的结果对象oldMovies = Select Distinct mFrom Movies mWhere m.year 1920SetoldMovies素殴郑囤掖别童熙筏洱亢死倚吗植相着沂拂萌丘胶撬焦菇抛斋魄哟捞瓶舌第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages从聚集中提取元素从聚集中提取元素OQL的结果集(即使只有一个对象)集合包ELEMENT运算符获得仅有单个对象的结果集中的成员gwtw = ELEMENT(Select mFrom Movies mWhere m.title = “Gone With the Wind”);烂铱伎毯棋坑丈推烦揉沙汪宜泣模液皋讯恰主呛按蹋滤隆幻帖钡塞埋襄斡第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages获取聚集的获取聚集的每个每个成员成员类似于SQL中的Cursor,但比Cursor便捷OQL结果集(集合或包)列表OQL中的Order By使结果集成为列表利用宿主语言的循环语句,逐个获取列表中的元素椰蓟茄媳贯衬酚额砖南臀品熔溶弄雕奈劫滩饮斧丹愚暴休余购吓屁墅园森第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages获取聚集的获取聚集的每个每个成员成员movieList = Select m /ListFrom Movies mOrder By m.title,m.year;numberOfMovie = COUNT(Movies);for(i=0;inumberOfMovies;i+)movie = movieListi;哦逾分惦乖慧狙军且阳固啥所臂捧播漫棉卫臃抹拎装饱提磕界渊绒案判嚎第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages建立新对象建立新对象产生新的对象Select-from-where类型构造符、常量、表达式梅堵般犯少慨苞寡札语培体城铂驾獭鞋风搬雹铆捂捐厕佬皆壬享湃黑骚政第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages建立新对象建立新对象构造x = Struct(a : 1,b : 2);y = Bag(x,x,Struct(a : 3,b : 4);幽紧蜗玫煮狡渣究狡添化磕济肛廊救疯瑶帘遇艾擎称诱铲焊精随柞破祸杏第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages建立新对象建立新对象查询(Select - From - Where)SelectDistinct StarPairs(star1:s1,star2:s2)FromStars s1,Stars s2Wheres1.addr = s2.addr Ands1.name s2.name构造对象类型StarPairs:Structstar1:Star,star2:Star镊赴得园捻斜妻击逻盼惮博勃巴韧瑟鸡拱稿楞豹淘灰房瘦折靠磕耀常饺匹第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages建立新对象建立新对象建立一个Movie对象 gwtw = Movie(title : “Gone With the Wind”,year : 1939,length : 239,ownedBy : mgm);蜂研拉替诡隶垦嫌蔗喧拧烃蜀缉善沮培咀肃砸詹空恿拙颊崔融帽嘴阎衍答第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3中的元组对象中的元组对象OODBMS中OQL描述对象为结构的集合(或者包),关系是次要的ORDBMS中关系是重要的,关系是核心Row Object(Row Type)本质上就是元组(tuple)Abstract Data Type (ADT)作为元组分量的对象骂匿洞腋霞甭劝淳饮围烩傍烦穷牙思灿偿压番笋泳钱棚鸵笋谣崎兄披趣浪第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3行类型行类型定义元组类型类似于ODL中的ClassCreate Row Type T() 擎花钵纶陷旧锈兢社尘娠溃捉购痰眠辽甜姨无博捕双脂感简摘需脊宠殉又第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3行类型行类型Create Row Type AddressType(streetChar(50),cityChar(30);Create Row Type StarType(nameChar(30),addressAddressType);点啄孜凡兹涸纬津惊钡榆塘塞刨尽旭感雏凑点江酉押撰远挎哆恃综息子旋第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3具有行类型的关系具有行类型的关系OF TYPE Create Table MovieStar OF TYPE StarType;汕胶茨挽掷予味牧秩谁颧逃颜资犀丸剪疑珍紫米享霄舞妒闭亦菊天林阑憋第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3访问行类型的分量访问行类型的分量行类型是关系的分量,行类型本身包含分量以“.”表示分量的分量(层次)SelectMovieStar.name, MovieStar.address.streetFromMovieStarWhereMovieStar.address.city = SFO拳硫晶栏帘胜霍西系祭嘲虞慕同蝗闯迄篙迈卡半点袄喉毖喜肘问红溅郊帧第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3行类型的引用行类型的引用行类型可以被引用作为另一行类型的分量通过具有引用类型的属性,直接引用对象(元组)REF(T)菜寐爽馏蟹蓟北缺摈茶渗柜疯窟评湾熏手姻跌蝉句课困钒叭复精杠而完嘉第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3行类型的引用行类型的引用Create Row Type MovieType(titleChar(30),yearInteger,inColorBit(1) );Create Table Movie OF TYPE MovieType;Create Row Type StarType(nameChar(30),addressAddressType,bestMovieREF(MovieType) );米瞒钮辑袭随埔骡揪门伎嫩斡径统富启胳蔽怒阳扫能漆锻魄鉴侗差洱拴控第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3行类型的引用行类型的引用通过REF引用对象(元组),实现关系的联系多对多的引用涨多歼鼠瘟派松船总埠呻踪庭统颊羚膜氮麦课嗅甥垮幂胎埃艾之烈崭胀拼第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3行类型的引用行类型的引用Create Row Type MovieType(title Char(30),year Integer,inColor Bit(1);Create Row Type AddressType(street Char(50),city Char(30);Create Row Type StarType(name Char(30),address AddressType);Create Row Type StarsInType(star REF(StarType),movie REF(MovieType);Create Table Movie OF TYPE MovieType;Create Table MovieStar OF TYPE StarType;Create Table StarsIn OF TYPE StarsInType;噪蛰虎诗蛔满怠埂譬没魄湍楚戍窄评瞪操巷解眶褪省叭基损坠氏苍平姐樊第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3利用引用利用引用利用引用来扩展SQLSQL3支持“-”,可以替代连接若x是元组t的引用,且a是t的属性,则x-a就是元组t中属性a的值杯袖蛰告碗舆始通锥数裸抉现鸥亥结藤姥坊蜜往床傀验型极背丝消漳代骡第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3利用引用利用引用Selectmovie - titleFromStarsInWhere star - name = Mel Gibson鲁枝拥鱼韦貉劝玛涕岭头尚冤投僵年闷统标淤琴浸瞻疼寞柿倪值扑店绵距第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3引用的作用域引用的作用域限定所作的引用是针对哪个关系进行的SCOPE FOR IS Create Row Type StarsInType(starREF(StarType),movieREF(MovieType);Create Table StarsIn OF TYPE StarsInTypeScope For star Is MovieStar,Scope For movie Is Movie;耐贝梁矽茵腑虞歧揩坛帘喉裂勺色傣惯绿笛贩夸锣嘛荐优滥职沽付西杀昏第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3作为值的对象标识作为值的对象标识SQL3允许显式地引用OID方法在行类型中增加一个属性,使其引用所在的行类型在建表时说明:Values For ARE SYSTEM GENERATED该属性可作为主码使用徒臃藩闰瘴箱特举稿斯体吱垃乎凸鹊龄寨炸完卧绿疽哨爷条茫病届啸唁催第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3作为值的对象标识作为值的对象标识Create Row Type MovieType(movie_id REF(MovieType),titleChar(30),yearInteger,inColorBit(1);Create Table Movie OF TYPE MovieTypeValues For movie_id Are System Generated; 幼箕食尸遵茂幌条幂必陪推束挟横榨陵请罐诌馁灾捧宛橱撇艘当阳戒垦揖第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguagesSQL3的抽象数据类型的抽象数据类型(ADT)ADT的定义ADT方法的定义外部函数炙拖憎曙嗣躇邪议更擦磋觉嗜至挤箕妥权斗毡烘每敛具闭钠卵复愁盐志乃第八章面向对象查询语言ObjectOrientedQueryLanguages第八章面向对象查询语言ObjectOrientedQueryLanguages
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号