- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验 复杂查询
一、实验目的
掌握两个表以上的连接查询的应用,包括嵌套查询。
二、实验内容
(1)查询比“林红”年纪大的男学生信息。
select * from Student
where Sex = 男 and
YEAR(Birth)-(select YEAR(Birth)
from Student where Sname =林红)0
(2)检索所有学生的选课信息,包括学号、姓名、课号、课程名、成绩。
select SC.Sno,Sname,Sex,Classno,Cname,Grade
from Student s,SC,Course c
where s.Sno=SC.Sno and SC.cno=c.cno
(3)查询已选课学生的学号、姓名、课程名、成绩。
select SC.Sno,Sname,Cname,Grade
from Student s,course c,SC
where s.sno=SC.sno and c.cno=SC.cno
(4)查询选修了“C语言程序设计”的学生的学号和姓名。
select sc.Sno,Sname
from Student s,course c,sc
where c.Cname=C语言程序设计 and s.Sno=sc.Sno and sc.Cno=c.Cno
(5)查询与“张虹”在同一个班级的学生学号、姓名、家庭住址。
a.用子查询
select Sno,Sname,Home_addr
from Student
where Classno=051 and Sname!=张虹
b.用连接查询
select Sno,Sname,Home_addr
from Student
where Classno=(select Classno from Student where Sname=张虹)
and Sname!=张虹
(6)查询其他班级中比“051”班所有学生年龄大的学生的学号、姓名。
select Sno,Sname
from Student
where Classno 051
and Birth all(select Birth from Student
where Classno = 051)
(7)(选作)查询选修了全部课程的学生姓名。
本题使用除运算的方法。
由题意可得另一种语言,没有一个选了课的学生没有选course表里的课程。那么,我们需要两个NOT EXISTS表示双重否定
select Sname from Student
where not exists(
select * from Course
where not exists(
select * from SC
where Sno=Student.sno
and cno=Course.cno))
(8)(选作)查询至少选修了学生选修的全部课程的学生的学号,姓名。
select Sno,Sname from Student
where Sno in(
select distinct Sno
from SC as SC1
where not exists(
select * from SC as SC2
where SC2.Sno and not exists(
select * from SC as SC3
where SC3.Sno=SC1.Sno and
SC3.cno=SC2.cno))
)
(9)检索学生的学号、姓名、学习课程名及课程成绩。
select s.Sno,Sname,Cname,Grade
from Student s,Course c,SC
where s.Sno=sc.Sno and sc.Cno=c.Cno
(10)检索选修了“高数”课且成绩至少高于选修课程号为“002”课程的学生的学号、课程号、成绩,并按成绩从高到低次序排列。
由题意得,选修了高数课的学生的成绩要高于选修002课号课程的学生的成绩
select distinct Sno,Cno,Grade
from SC
where Cno in(
select Cno from Course
where Cname=高数)
and Grade(select MAX(Grade)
from SC where cno=002)
order by Grade desc
(11)检索选修3门以上课程的学生的学号、总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。
select Sno,sum(grade) as
文档评论(0)