数据库的嵌套查询实验报告.docx
- 文档编号:23901649
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:16
- 大小:925.18KB
数据库的嵌套查询实验报告.docx
《数据库的嵌套查询实验报告.docx》由会员分享,可在线阅读,更多相关《数据库的嵌套查询实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
数据库的嵌套查询实验报告
实验三:
数据库的嵌套查询实验
实验目的:
加深对嵌套查询语句的理解。
实验内容:
使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。
实验步骤:
一.使用带IN谓词的子查询
1.查询与’刘晨’在同一个系学习的学生的信息:
比较select*fromstudentwheresdeptin
(selectsdeptfromstudentwheresname='刘晨')
与:
select*fromstudentwheresdept=
(selectsdeptfromstudentwheresname='刘晨')的异同
比较:
select*fromstudentwheresdept=
(selectsdeptfromstudentwheresname='刘晨')andsname<>‘刘晨’
与:
selectS1.*fromstudentS1,studentS2whereS1.sdept=S2.sdeptandS2.sname='刘晨'的异同
2.查询选修了课程名为’信息系统’的学生的学号和姓名:
比较selectsno,snamefromstudentwheresnoin
(selectsnofromscwherecnoin(selectcnofromcoursewherecname='信息系统'))
与:
selectsno,snamefromstudentwheresnoin
(selectsnofromsc,coursewhereo=oandcname='信息系统')
3.查询选修了课程’1’和课程’2’的学生的学号:
selectsnofromstudentwheresnoin(selectsnofromscwherecno='1')
andsnoin(selectsnofromscwherecno='2')
比较:
查询选修了课程’1’或课程’2’的学生的sno:
selectsnofromscwherecno='1'orcno='2'
比较连接查询:
selectA.snofromscA,scBwhereA.sno=B.snoandA.cno='1'andB.cno='2'
二.使用带比较运算的子查询
4.查询比’刘晨’年龄小的所有学生的信息:
select*fromstudentwheresage<
(selectsagefromstudentwheresname='刘晨')
三.使用带Any,All谓词的子查询
5.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;
selectsname,sagefromstudentwheresage (selectsagefromstudentwheresdept='IS')andsdept<>'IS' 6.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄: selectsname,sagefromstudentwheresage (selectsagefromstudentwheresdept='IS')andsdept<>'IS' 7.查询与计算机系(CS)系所有学生的年龄均不同的学生学号,姓名和年龄: selectsno,sname,sagefromstudentwheresage<>all (selectsagefromstudentwheresdept='CS') 四.使用带Exists谓词的子查询和相关子查询 8.查询与其他所有学生年龄均不同的学生学号,姓名和年龄: selectsno,sname,sagefromstudentAwherenotexists (select*fromstudentBwhereA.sage=B.sageandA.sno<>B.sno) 9.查询所有选修了1号课程的学生姓名: selectsnamefromstudentwhereexists (select*fromscwheresno=student.snoandcno='1') 10.查询没有选修了1号课程的学生姓名: selectsnamefromstudentwherenotexists (select*fromscwheresno=student.snoandcno='1') 11.查询选修了全部课程的学生姓名: SQLServer中: selectsnamefromstudentwherenotexists (select*fromcoursewherenotexists (select*fromscwheresno=student.snoandcno=o)) 11.查询至少选修了学生95002选修的全部课程的学生的学号: SQLServer中: selectdistinctsnofromscAwherenotexists (select*fromscBwheresno='95002'andnotexists (select*fromscCwheresno=A.snoandcno=B.cno)) 12.求没有人选修的课程号cno和cnamecname: selectcno,cnamefromcourseCwherenotexists (select*fromscwhereo=C.cno) 13*.查询满足条件的(sno,cno)对,其中该学号的学生没有选修该课程号cno的课程 SQLServer中: selectsno,cnofromstudent,coursewherenotexists (select*fromscwherecno=oandsno=student.sno) 14*.查询每个学生的课程成绩最高的成绩信息(sno,cno,grade): select*fromscAwheregrade= (selectmax(grade)fromscwheresno=A.sno) 思考: 如何查询所有学生都选修了的课程的课程号cno? selectcno fromsc groupbycno havingcount(*)=(selectcount(*)fromstudent)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 嵌套 查询 实验 报告