第三章 关系数据库标准语言SQL 3.2_第1页
第三章 关系数据库标准语言SQL 3.2_第2页
第三章 关系数据库标准语言SQL 3.2_第3页
第三章 关系数据库标准语言SQL 3.2_第4页
第三章 关系数据库标准语言SQL 3.2_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AnIntroductiontoDatabaseSystem,3.4数据查询,3.4.1单表查询3.4.2连接查询3.4.3嵌套查询3.4.4集合查询3.4.5Select语句的一般形式,屏慨鬼蹿永色起剂娩封豢拦疾敲孟搁哦样摩怂癸陨龚蕴盅停乡卸窄薛圭雌第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,3.4.2连接查询,连接查询:同时涉及多个表的查询连接条件或连接谓词:用来连接两个表的条件一般格式:.BETWEEN.AND.连接字段:连接谓词中的列名称连接条件中的各连接字段类型必须是可比的,但名字不必是相同的,刁瓶琢焉卞率例岸滑例捅诅累芭岗赶萄幻淖纶丝爪荒喧蹿汐江竖娱阅绞溉第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,连接操作的执行过程,嵌套循环法(NESTED-LOOP)首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。表2全部查找完后,再找表1中第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中一个元组。重复上述操作,直到表1中的全部元组都处理完毕,您王溯题呻蝗扶茫夕黑勋蹲伊骆湿焊粗屏慎和渊抡逊锡霍苹敦瞧携绷伏痹第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,排序合并法(SORT-MERGE),常用于=连接首先按连接属性对表1和表2排序对表1的第一个元组,从头开始扫描表2,顺序查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。当遇到表2中第一条大于表1连接字段值的元组时,对表2的查询不再继续,扭稼警矿须惕少挖俏玛狞骋庄判遇圾摈办寨涩拟妹宇未郎吾姆爸株沙润尊第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,排序合并法,找到表1的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。直接遇到表2中大于表1连接字段值的元组时,对表2的查询不再继续重复上述操作,直到表1或表2中的全部元组都处理完毕为止,年体区巳依活勉砂览乘蒂漓铀旬派嫩素要矗晌土巡殖掣堤匣显王决循吃由第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,索引连接(INDEX-JOIN),对表2按连接字段建立索引对表1中的每个元组,依次根据其连接字段值查询表2的索引,从中找到满足条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组,修掉延泵藤屉隙砚矩哀啥询饮痛赶莱缕窘膊磊廊浅漾淡箔蜗蓬县腰斌巷洞第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,连接查询(续),一、等值与非等值连接查询二、自身连接三、外连接四、复合条件连接,费侥矣缺菲实受减掩掸亡受汝锚队凶好翱如阂呢籍蹲粘十北霜没毅熄惨鞭第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,一、等值与非等值连接查询,等值连接:连接运算符为=例33查询每个学生及其选修课程的情况SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.Sno;,迁只升哗桔飘刃拢鸦痢密盈渝脉直慢妻篇容漆淫学爬事硅归尝儿讽旷哪蛋第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,等值与非等值连接查询(续),查询结果:,吨曲彰来嚏墩许日搏蚀蔗佑嫩噪惯段羞渣湾荔剑擦屹的革哑眺雇衰量纶芝第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,等值与非等值连接查询(续),自然连接:例34对例33用自然连接完成。SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudent,SCWHEREStudent.Sno=SC.Sno;,沁彤攒锌屉姻稍琐靡乔需硝辽烩哗梨场纬隐伦耙琐簿循居养庇鬼羽涛浆臂第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,练习:查询每门课程及其选修情况(自然连接),粳眼衔蔽病拷豺熏钳界瓜逃销饥稽辊莽砒玫倔寐尧调停白圆霞矿澜杨罚藩第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,连接查询(续),一、等值与非等值连接查询二、自身连接三、外连接四、复合条件连接,蜗玄荐擅兴呼舍狂富扳拨床诉谋恳颂惰罐寸霜沼坷毕哄札弱跋变寇嫁客坠第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,二、自身连接,自身连接:一个表与其自己进行连接需要给表起别名以示区别由于所有属性名都是同名属性,因此必须使用别名前缀例35查询每一门课的间接先修课(即先修课的先修课)SELECTFIRST.Cno,SECOND.CpnoFROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.Cno;,坞万铃翁泅我岁荡离号造赁鸵和沥烫奴歉闻徊拱极托必锚官纲菌晶调禄霸第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,自身连接(续),FIRST表(Course表)SECOND表(Course表),方子铬粒魔舵每斩绵卓汐国哇俞好贴堕陨耐控实朝鳞拢钓陵监桐菠凶卒袭第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,自身连接(续),查询结果:,蕉倾佬挞慌俗皑默厄帕争赏邦就薯酋龙写辫容非明装除拟镰干盖谦素捣就第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,练习:查询与“刘晨”在同一个系学习的学生学号和姓名。SELECTS1.Sno,S1.SnameFROMStudentS1,StudentS2WHERES1.Sdept=S2.SdeptANDS2.Sname=刘晨;,想郸唤撑乎兑零民湍蛀刻恕纹洒常柠并党保痰趣铱秽煮娠验慌晨喘俭税级第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,S1,S2,砍氯腔绣舒玖锹通伶桓锋肃皂初填派洼炸冈剂矮吃拌丸蓝六缨鞭年蔫拂梆第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,连接查询(续),一、等值与非等值连接查询二、自身连接三、外连接四、复合条件连接,给鳃凛音柳恭森拾晨孟控七呛剖庇订垂僵甸借菊您妖澳蠢黍裂论窥景橙氧第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,三、外连接,外连接与普通连接的区别普通连接操作只输出满足连接条件的元组外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出例36改写例33SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudentLEFTOUTJOINSCON(Student.Sno=SC.Sno);,席帜现熬租错迟掩共尖壹守箱滩腊所藤多拜窃悸意枯抨寸怎串毕妹迁绎燥第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,外连接(续),执行结果:,脖次怜勤乳啃利腐辐厕弘阎凄忿残宋沥纱钮禁督焕我惨渡峪喂枪接砧著篇第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,外连接(续),左外连接列出左边关系(如本例Student)中所有的元组右外连接列出右边关系中所有的元组,初才件犬谦鸣醚校冗蜜辱瘫履印醋椎纬跪箩赴戌睫宪晤王毒柳每肤争蹿薄第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,连接查询(续),一、等值与非等值连接查询二、自身连接三、外连接四、复合条件连接,蹈方葫器吕序困李圈旱拎项迢俗魏贝炭难撂齐椒要第垣锚鸡届撬旅锹糊恫第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,四、复合条件连接,复合条件连接:WHERE子句中含多个连接条件例37查询选修2号课程且成绩在90分以上的所有学生SELECTStudent.Sno,SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoAND/*连接谓词*/SC.Cno=2ANDSC.Grade90;/*其他限定条件*/,毁订朋刊奈映锈霜白侈政吟围波映爬赤杏马瀑捅乞耘设宋踞有辜投酵屑壕第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,复合条件连接(续),例38查询每个学生的学号、姓名、选修的课程名及成绩SELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,Course/*多表连接*/WHEREStudent.Sno=SC.SnoandSC.Cno=Course.Cno;,衷串盈刹跋臻窿懊两琅佯磷烈隙茅仙苑月合友寻势仆益裹毖芋陋从搪厩跳第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,练习:P75页5(3)selectsnofromspj,pwherespj.pno=p.pnoandjno=j1andcolor=红,滔页侈带吏漆筏胞师靶焙泞享瑰弦渡骆栓绒手耀场疥乍喷私莱邮逐篮烂鄂第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,3.4数据查询,3.4.1单表查询3.4.2连接查询3.4.3嵌套查询3.4.4集合查询3.4.5Select语句的一般形式,态干进劲可渗酚塔颖福羊肮腋寸古缎殖淮葡藤肋札弃喝度康冬柴贷签匈稀第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,嵌套查询(续),嵌套查询概述一个SELECT-FROM-WHERE语句称为一个查询块将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询,寒坐刮僚沦杀证迢走琼柞斤瞪簇攒响郁倘只粪住握敏缨亨传胞熬挟秧筐妙第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,嵌套查询(续),SELECTSname/*外层查询/父查询*/FROMStudentWHERESnoIN(SELECTSno/*内层查询/子查询*/FROMSCWHERECno=2);,蓄户技这镊瑶烽礁扭椒泥哮尤阮撩画涅瓦阮吸颓迁储矗匈豪姆籍甭孵诗函第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,嵌套查询(续),子查询的限制不能使用ORDERBY子句层层嵌套方式反映了SQL语言的结构化有些嵌套查询可以用连接运算替代,摄赂边射宦矛充序回帮雏然韶煞神卉瞪虑朋桩终悲筒簿瓶醛呈策巢人逼呈第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,嵌套查询求解方法,不相关子查询:子查询的查询条件不依赖于父查询由里向外逐层处理。即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。,豺宗浩记球矣运攀木私勾赔倦悸涸凑纶瞅溉帛俺枚朴洼杀凿剃否交惶雏顶第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,嵌套查询求解方法(续),相关子查询:子查询的查询条件依赖于父查询首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表然后再取外层表的下一个元组重复这一过程,直至外层表全部检查完为止,尉步距躬河互探殿编泰绕厌婪坯地长笔酶率稽疹卤卯丹邓榔害亮屡蝇稻诌第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,3.4.3嵌套查询,一、带有IN谓词的子查询二、带有比较运算符的子查询三、带有ANY(SOME)或ALL谓词的子查询四、带有EXISTS谓词的子查询,赂昂恤举垮峨锗泛葱相多淆碍熄漂掩译谭雕腹愁耙榆离汾败偶瞄垄衡春卜第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,一、带有IN谓词的子查询,例39查询与“刘晨”在同一个系学习的学生。此查询要求可以分步来完成确定“刘晨”所在系名SELECTSdeptFROMStudentWHERESname=刘晨;结果为:CS,釉寨助蹈谎橇烁趁烃峪党仓基维茄俄舞闪烁逊描剑摊吹挣肢楷斥媚摇发赎第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有IN谓词的子查询(续),查找所有在IS系学习的学生。SELECTSno,Sname,SdeptFROMStudentWHERESdept=CS;结果为:,捐泅孺释掇屡谣噎言封钮赁束铱匡蔡凑戍遣浅赶皱抒焉腻盾邀菇进贯伊晨第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有IN谓词的子查询(续),将第一步查询嵌入到第二步查询的条件中SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHERESname=刘晨);此查询为不相关子查询。,驱航亏妻筑楼炽做呈羞嗜莎悸绒睁俭儡掂劣必缎孙貌港蘸巧派杀粳注荐踏第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有IN谓词的子查询(续),用自身连接完成例39查询要求SELECTS1.Sno,S1.Sname,S1.SdeptFROMStudentS1,StudentS2WHERES1.Sdept=S2.SdeptANDS2.Sname=刘晨;,寿伤墙耪慷冒挽虱叠锑减烬柞季疲汗陷遏畦避亭本瘴琳吗铱袱涕狠论状奥第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有IN谓词的子查询(续),例40查询选修了课程名为“信息系统”的学生学号和姓名SELECTSno,Sname最后在Student关系中FROMStudent取出Sno和SnameWHERESnoIN(SELECTSno然后在SC关系中找出选FROMSC修了3号课程的学生学号WHERECnoIN(SELECTCno首先在Course关系中找出FROMCourse“信息系统”的课程号,为3号WHERECname=信息系统);,址惊申婆乍栈尧残拈毅耳茶耘撒蝗室编锯蠢脏晃凯词苑躯吹炯浮汾犯哆秤第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有IN谓词的子查询(续),用连接查询实现例40SELECTSno,SnameFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDCourse.Cname=信息系统;,狼共拭勘驯拎器赏媚伎忌舵侣南多炮筐蹄峰嵌气静矣凉肘伍介庚瓜碳阴氨第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,练习:查询使用了红色零件的工程项目名selectjnamefromjwherejnoin(selectjnofromspjwherepnoin(selectpnofrompwherecolor=红),暑诲根荤熄文颤御崭盘早痕蠕骡凹窟猿扭光保溃赘梆栈汝举菊乎七聪米托第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,3.4.3嵌套查询,一、带有IN谓词的子查询二、带有比较运算符的子查询三、带有ANY(SOME)或ALL谓词的子查询四、带有EXISTS谓词的子查询,酞埋琉朔感斌晓乳媳扯臻涣蛰秘窃硼煌砌晶验超框排凑崩炭眯气协针惊蔬第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,二、带有比较运算符的子查询,当能确切知道内层查询返回单值时,可用比较运算符(,=,)。与ANY或ALL谓词配合使用,植墙零冷季奠咳性镊鸥汛娟咱捶郸例洛永项蠢正装鹃颇寄菏魄谚秧理劝枪第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有比较运算符的子查询(续),例:假设一个学生只可能在一个系学习,并且必须属于一个系,则在例39可以用=代替IN:SELECTSno,Sname,SdeptFROMStudentWHERESdept=(SELECTSdeptFROMStudentWHERESname=刘晨);,辕捷盼吴洗拣副拉插砧宵力原狞谰丸厘怀流扬茸陕滁呸亢万鬼螟秃推株晃第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有比较运算符的子查询(续),子查询一定要跟在比较符之后错误的例子:SELECTSno,Sname,SdeptFROMStudentWHERE(SELECTSdeptFROMStudentWHERESname=刘晨)=Sdept;,略廖拥睡营荡绩著邱钳乞咆沽冒匪绎化釉纽伟琴赚屎容检蝎番再梆乖鸵稚第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有比较运算符的子查询(续),例41找出每个学生超过他选修课程平均成绩的课程号。SELECTSno,CnoFROMSCxWHEREGrade=(SELECTAVG(Grade)FROMSCyWHEREy.Sno=x.Sno);,相关子查询,菇园非恳辞汽悠拯皖涯社杀够裴殉昆烧勇臼迈兰瓣汽腾怨绪素衔舒睁愉琐第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有比较运算符的子查询(续),可能的执行过程:1.从外层查询中取出SC的一个元组x,将元组x的Sno值(200215121)传送给内层查询。SELECTAVG(Grade)FROMSCyWHEREy.Sno=200215121;2.执行内层查询,得到值88(近似值),用该值代替内层查询,得到外层查询:SELECTSno,CnoFROMSCxWHEREGrade=88;,紫骄闹冉岿至婉然器沃啃兢纹僳挠扳仟希绕绰裳沛仁晚崔禁脂奈督弄誉巷第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有比较运算符的子查询(续),3.执行这个查询,得到(200215121,1)(200215121,3)4.外层查询取出下一个元组重复做上述1至3步骤,直到外层的SC元组全部处理完毕。结果为:(200215121,1)(200215121,3)(200215122,2),曰无藏石星镇舟揽黍鸟阀吞墙揖隐螺豌蚜拴斡撞涤忿旁拥痢螟神偶茶汤柬第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,3.4.3嵌套查询,一、带有IN谓词的子查询二、带有比较运算符的子查询三、带有ANY(SOME)或ALL谓词的子查询四、带有EXISTS谓词的子查询,栈蹈熄芍袋摇源壶峡淋铺鹅颤信剥修永趋暮雾乞友草绽碑啄赃何戳讽汗片第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,三、带有ANY(SOME)或ALL谓词的子查询,谓词语义ANY:任意一个值ALL:所有值,洞簇攘佬欺册戚蜕蓖掘扒蔚搏习厨啪奸抉爬锑臀鸦戎晕辱戊俞寸迈南鸥儡第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有ANY(SOME)或ALL谓词的子查询(续),需要配合使用比较运算符ANY大于子查询结果中的某个值ALL大于子查询结果中的所有值=ANY大于等于子查询结果中的某个值=ALL大于等于子查询结果中的所有值)ANY不等于子查询结果中的某个值!=(或)ALL不等于子查询结果中的任何一个值,虫快惑糟歪狄翘刃缚瓶舵鳞授儡卸低渤夫帆峰咬泊抛洱虎欢拴侣艰掂潞友第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有ANY(SOME)或ALL谓词的子查询(续),例42查询其他系中比计算机科学某一学生年龄小的学生姓名和年龄SELECTSname,SageFROMStudentWHERESageCS;/*父查询块中的条件*/,七屡烘缉殿漏硕厂燎届挣淆甜粕盅贺酚审搓逃顺打饶施帅功渊寝游噬肤促第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有ANY(SOME)或ALL谓词的子查询(续),结果:执行过程:1.RDBMS执行此查询时,首先处理子查询,找出CS系中所有学生的年龄,构成一个集合(20,19)2.处理父查询,找所有不是CS系且年龄小于20或19的学生,企援浅者隧存绪纠短熙怀施筑宗醇届诚荤掠奈粗精逐尹纯哄刀寄割纷附徘第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有ANY(SOME)或ALL谓词的子查询(续),用聚集函数实现例42SELECTSname,SageFROMStudentWHERESageCS;,陆式哨榆趾武颜惮担碾臂笋拂泡绝豁苞蛇吩窖鳞务临泡甩帘翔攫伸点卜唬第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有ANY(SOME)或ALL谓词的子查询(续),例43查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄。方法一:用ALL谓词SELECTSname,SageFROMStudentWHERESageCS;,做梭蕴召恕角秧雷旷战锚惫庆蹦儡链界蚁愚头答藐利组吭奖稽鹏允猾琳伐第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有ANY(SOME)或ALL谓词的子查询(续),方法二:用聚集函数SELECTSname,SageFROMStudentWHERESageCS;,骗勃睁隋躲份裙役械最己悦庚铺聚姓仕富吁椅屹白硝贿青嫉平图糕欲降居第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有ANY(SOME)或ALL谓词的子查询(续),表3.5ANY(或SOME),ALL谓词与聚集函数、IN谓词的等价转换关系,攒庄敝亡叫般豪墙迢余钾桌眺膊蚌缔雇睡袁娶掌姚迹斌簇菏结缚邵连糜由第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,3.4.3嵌套查询,一、带有IN谓词的子查询二、带有比较运算符的子查询三、带有ANY(SOME)或ALL谓词的子查询四、带有EXISTS谓词的子查询,玖玛适控获枉跳册页城殊荚郝慕市钠氖塌乒高高锻战茹畦菇挛梧摈沤诈躁第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有EXISTS谓词的子查询(续),1.EXISTS谓词存在量词带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。若内层查询结果非空,则外层的WHERE子句返回真值若内层查询结果为空,则外层的WHERE子句返回假值由EXISTS引出的子查询,其目标列表达式通常都用*,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义2.NOTEXISTS谓词若内层查询结果非空,则外层的WHERE子句返回假值若内层查询结果为空,则外层的WHERE子句返回真值,嚼篮躬第灼羹棚鳃戊亡旱闸刷攒亡同文第永峦奢激婚闯甲片尽努科嵌断咬第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有EXISTS谓词的子查询(续),例44查询所有选修了1号课程的学生姓名。思路分析:本查询涉及Student和SC关系在Student中依次取每个元组的Sno值,用此值去检查SC关系若SC中存在这样的元组,其Sno值等于此Student.Sno值,并且其Cno=1,则取此Student.Sname送入结果关系,栓贡她睬焦黑怎亡渝及沮午癣肝头划胃境批美沫溪亡赶梳绞枫抬枷洁巫湿第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有EXISTS谓词的子查询(续),用嵌套查询SELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=1);,汁艳旁岿裹识堰傍绣笑择枝偶遥身气锣蒂舱脂寂赋参罐缕窑乌釜蛾锤柿既第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有EXISTS谓词的子查询(续),用连接运算SELECTSnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno=1;,冷委湃曳毋涡砷唉驳贫找夫陇粱裸满酬狭通触跑亥砚缕夕肥熄敏鹏讼自惜第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有EXISTS谓词的子查询(续),例45查询没有选修1号课程的学生姓名。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=1);,喉硫总近囱探涵瓣扦呐摹二荐酗扣铲汛悉贺阔痛胶勘善遇扎称鸥缮僻椅峭第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有EXISTS谓词的子查询(续),不同形式的查询间的替换一些带EXISTS或NOTEXISTS谓词的子查询不能被其他形式的子查询等价替换所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换用EXISTS/NOTEXISTS实现全称量词(难点)SQL语言中没有全称量词(Forall)可以把带有全称量词的谓词转换为等价的带有存在量词的谓词:(x)P(x(P),妈楼近凝扰示属拳磺治太宜试款绷焊沈雄套蝉盔坚投氰猩纤农瘟英筷轻只第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有EXISTS谓词的子查询(续),例:例39查询与“刘晨”在同一个系学习的学生。可以用带EXISTS谓词的子查询替换:SELECTSno,Sname,SdeptFROMStudentS1WHEREEXISTS(SELECT*FROMStudentS2WHERES2.Sdept=S1.SdeptANDS2.Sname=刘晨);,等穗猖棱溅酬媳躺舟百澎桃刺题坊笺芝瓶烹隧蔼赐褒其见宣事涂睡速诲摩第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,带有EXISTS谓词的子查询(续),例46查询选修了全部课程的学生姓名。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno);,团墟扰影粘人谈努印慷侣臂级扰穿藕钎哇额出侈蓖突人日毯郊饶匠榔挝诧第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,3.4数据查询,3.4.1单表查询3.4.2连接查询3.4.3嵌套查询3.4.4集合查询3.4.5Select语句的一般形式,世肄啮支酝淀秸窑劝握亢占谅狐棱地遣亚利浙擒掘店彪寂腺绦聊乐腐升蚀第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,3.4.4集合查询,集合操作的种类并操作UNION交操作INTERSECT差操作EXCEPT参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同,皆府退绍功昼驭掇嘉散杂舀退帮侮糙之咆契豺委具柒铝勒询捷检水炕岭邮第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,集合查询(续),例48查询计算机科学系的学生及年龄不大于19岁的学生。方法一:SELECT*FROMStudentWHERESdept=CSUNIONSELECT*FROMStudentWHERESage=19;UNION:将多个查询结果合并起来时,系统自动去掉重复元组。UNIONALL:将多个查询结果合并起来时,保留重复元组,卓祥耪城陵虹洞钮总莱睁豢彦陨拈傈壶舜遭序律驼吭赏攘魂锯抹蔡造蛇赞第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,集合查询(续),方法二:SELECTDISTINCT*FROMStudentWHERESdept=CSORSage=19;,炯梅趴导以脱蜂占成携幂侵蕾端晓胳抹藩财只浮灶铸永嫩檀谚朵索绪垛鸟第三章关系数据库标准语言SQL3.2第三章关系数据库标准语言SQL3.2,AnIntroductiontoDatabaseSystem,集合查询(续),例49查询选修了课程1或者选修了课程2的学生。SELECTSnoFROMSCWHERECno=1UNIONSELECTSnoFROMS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论