数据库的嵌套查询实验报告.docx

上传人:b****2 文档编号:24494406 上传时间:2023-05-28 格式:DOCX 页数:16 大小:925.18KB
下载 相关 举报
数据库的嵌套查询实验报告.docx_第1页
第1页 / 共16页
数据库的嵌套查询实验报告.docx_第2页
第2页 / 共16页
数据库的嵌套查询实验报告.docx_第3页
第3页 / 共16页
数据库的嵌套查询实验报告.docx_第4页
第4页 / 共16页
数据库的嵌套查询实验报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数据库的嵌套查询实验报告.docx

《数据库的嵌套查询实验报告.docx》由会员分享,可在线阅读,更多相关《数据库的嵌套查询实验报告.docx(16页珍藏版)》请在冰豆网上搜索。

数据库的嵌套查询实验报告.docx

数据库的嵌套查询实验报告

实验三:

数据库的嵌套查询实验

实验目的:

加深对嵌套查询语句的理解。

实验内容:

使用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)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1