- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
同济数据库实验四
列出不及格成绩的学生名单。
SELECT s.snum, sname FROM student s JOIN Sc ON s.snum=Sc.snum WHERE score 60
运行结果:
列出选修了计算机系课程的学生姓名和年龄。
SELECT DISTINCT sname as 姓名, year(getdate())-year(birthday) as 年龄
FROM student s JOIN Sc JOIN Sections JOIN Course
ON Course.cnum=Sections.cnum
ON Sections.secnum=Sc.secnum
ON Sc.snum=s.snum
WHERE Course.dept=计算机系
运行结果:
检索选修了数据库技术课程的学生姓名和系别。
SELECT DISTINCT sname as 姓名, s.dept as 系别
FROM student s JOIN Sc JOIN Sections JOIN Course
ON Course.cnum=Sections.cnum
ON Sections.secnum=Sc.secnum
ON Sc.snum=s.snum
WHERE Course.cname=数据库技术
运行结果:
列出选修了所有课程的学生名单。
SELECT s.snum as 学号, sname as 姓名
FROM student s JOIN Sc JOIN Sections JOIN Course
ON Course.cnum=Sections.cnum
ON Sections.secnum=Sc.secnum
ON Sc.snum=s.snum
GROUP BY s.snum,sname
HAVING COUNT(Sc.secnum)=(SELECT COUNT(*) FROM Course)
或
--列出选修了所有课程的学生名单。
SELECT snum AS 学号,sname AS 姓名
FROM student s
WHERE NOT EXISTS(
SELECT cnum FROM course
WHERE cnum NOT IN (SELECT sections.cnum FROM sc JOIN sections JOIN course
ON course.cnum=sections.cnum
ON sc.secnum=sections.secnum WHERE sc.snum=s.snum))
运行结果:
补充题:列出选修了’s007’学生所有课程的学生名单。
SELECT distinct snum
FROM sc s
WHERE NOT EXISTS(
select cnum
from sc join sections on sc.secnum=sections.secnum
where snum=s007and cnum NOT IN (SELECT sections.cnum FROM sc JOIN sections JOIN course
ON course.cnum=sections.cnum
ON sc.secnum=sections.secnum WHERE sc.snum=s.snum))
或
select snum
from sc join sections on sc.secnum=sections.secnum
where cnum in( select cnum from sc join sections on sc.secnum=sections.secnum
where snum=s007)
group by snum
Having count(cnum)=(select count(cnum) from sc join sections on sc.secnum=sections.secnum
where snum=s007)
检索每门课程成绩都在80分以上的学生名单。
SELECT s.snum as 学号,sname as 姓名
FROM student s
WHERE NOT EXISTS(SELECT * FROM Sc JOIN Student a ON Sc.snum=a.snum WHERE score80 and s.snum=a.snum)
或
SELECT student.snum as 学号,sname as 姓名
FROM student
WHERE snum not in (select snum from sc where
文档评论(0)