SQL嵌套ppt课件_第1页
SQL嵌套ppt课件_第2页
SQL嵌套ppt课件_第3页
SQL嵌套ppt课件_第4页
SQL嵌套ppt课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

Student表,1,SC表,2,Course表,3,嵌套查询,问题的引入试查询与”刘晨“同学在同一个系的学生学号、姓名。分步完成:1)确定”刘晨“所在的系selectsdeptfromstudentwheresname=“刘晨”查询结果为:计算机2)查询转换为查询计算机系学生的学号、姓名,4,2)selectsno,snamefromstudentwheresdept=计算机可以用一次SQL查询完成吗?selectsno,snamefromstudentwheresdeptin(selectsdeptfromstudentwheresname=刘晨),5,一、带in谓词的嵌套查询谓词in是连接父子查询最常用的谓词。某些情况下,in可以用=代替。selectsno,snamefromstudentwheresdeptin(selectsdeptfromstudentwheresname=刘晨)定义:一个select-from-where语句称为一个查询块。将一个查询块嵌套在另一个查询块的where或having子句中的查询称为嵌套查询。,内查询块、子查询,外层查询块、父查询,谓词in进行父、子查询间的连接,6,思考:系统对嵌套语句执行先后顺序是怎样的?由里向外进行处理,将子查询的查询结果作为父查询的查询条件。selectsno,snameselectsno,snamefromstudentfromstudentwheresdeptinwheresdeptin(计算机)(selectsdeptfromstudentwheresname=刘晨),7,例1、查询选修了课程名为”信息系统“的学生学号。第一步:找到”信息系统“的课程号selectcnofromcoursewherecname=信息系统结果为:cno3第二步:找到选修了cno=3的学生学号selectsnofromscwherecno=3,8,构建嵌套查询:selectsnofromscwherecnoin(selectcnofromcoursewherecname=信息系统)注意:该查询只有一层嵌套。SQL嵌套查询允许多层嵌套格式。,找到”信息系统“的课程号,结果为cno=3,1,2,找到选修了cno=3的学生学号,9,例2、查询选修了课程名为”信息系统“的学生姓名。1)找到”信息系统“的cnoselectcnofromcoursewherecname=信息系统结果cno=32)找到选修了cno=3的学生学号selectsnofromscwherecno=3结果为:sno:200215121200215122。,10,3)找到学号为200215122、200215121的姓名。selectsnamefromstudentwheresno=200215122orsno=200215121思考:该查询会构建成几层嵌套?,11,selectsnamefromstudentwheresnoin(selectsnofromscwherecnoin(selectcnofromcoursewherecname=信息系统),1,2,3,12,二、带比较运算符的嵌套查询当子查询返回的是单值时,父查询和子查询之间需要进行值的比较时,用比较运算符进行连接。=(selectsagefromstudentwheresname=张立),子查询的范返回值是一个确定的值,13,例2、查询成绩小于2号课程的平均成绩的课程号。selectdistinctcnofromscwheregrade5),24,7、课程平均成绩大于80分的任课教师名。-selecttname-fromteacher-wheretnoin-(selecttno-fromcourse-wherecnoin-(selectcno-fromscore-groupbycno-havingavg(grade)80)8、查询95031班同学所选各门课程的任课教师名。selecttnamefromteacherwheretnoin(selecttnofromcoursewherecnoin(selectdistinctcnofromstudent,scorewherestudent.sno=score.snoandclass=95031),25,三、带有any或all谓词的子查询当子查询返回多值时,需用any或all谓词修饰比较运算符=any仅大于子查询结果集中的某一个值min=any仅大于等于子查询结果集中的某一个值any仅小于子查询结果集中的某一个值max=all大于等于子查询结果集中的所有值all小于子查询结果集中的所有值min=any小于等于子查询结果集中的所有值!=any不等于子查询结果中的某个值!=all不等于子查询结果集中的任何值,27,例1:查询其他系中仅比计算机某一学生年龄小的学生姓名和年龄。仅比计算机某一学生年龄小anymaxselectsname,sagefromstudentwheresageany(selectsagefromstudentwheresdept=计算机)andsdept!=计算机,先找到计算机专业中的年龄集合(22,20,17),28,以上嵌套查询可以转换为:selectsname,sagefromstudentwheresage(selectmax(sage)fromstudentwheresdept=计算机)andsdept!=计算机,29,例2:查询其他系中比计算机系所有学生年龄都小的学生姓名和年龄。selectsname,sagefromstudentwheresage(selectmin(grade)fromscorewherecno=3245)orderbygradedesc,33,10、selectstudent.sno,student.sname,gradefromscore,studentwherescore.sno=student.snoandcno=3105andgradeall(selectgradefromscorewherecno=3245)orderbygradedesc或者selectstudent.sno,stude

温馨提示

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

评论

0/150

提交评论