数据库实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验内容与要求
请有选择地实践以下各题。
(1)基于“教学管理”数据库 jxgl,使用SQL的查询语句表达下列查询:
①检索年龄大于23岁的男学生的学号和姓名;
SELECT Sn o,S name
FROM Stude nt
WHERE Ssex=男’AND
Sage>23;
②检索至少选修一门课程的女生姓名;
SELECT Sn ame
FROM Stude nt
WHERE Ssex=女’AND Sno IN
( SELECT Sno
FROM SC
GROUP BY Sno
HAVING cou nt(*)>=1;
);
③检索王同学不学的课程的课程号;
SELECT Cno;
FROM Course
WHERE Cno NOT IN
( SELECT Cno
FROM Stude nt,SC
WHERE Sname like '王 % AND Student.Sno=SC.Sno );
④检索至少选修两门课程的学生学号;
SELECT DISTINCT Sno
FROM SC
GROUP BY Sno
HAVING cou nt(*)>=2;
⑤检索全部学生都选修的课程的课程号与课程名;
SELECT Cn o,C name
FROM Course
WHERE NOT EXISTS
( SELECT *
FROM Stude nt
WHERE NOT EXISTS
( SELECT *
FROM SC
WHERE SC.S no=Stude nt.S no AND SC.C no=Course.C no
)
);
⑥检索选修了所有 3学分课程的学生学号;
SELECT DISTINCT Sno
FROM SC X
WHERE NOT EXISTS
( SELECT *
FROM Course
WHERE Ccredit=3 AND NOT EXISTS
( SELECT *
FROM SC Y
WHERE X.S no=Y.S no AND Course.C no=Y.C no
)
);
(2)基于“教学管理”数据库 jxgl,使用SQL的查询语句表达下列查询:
①统计有学生选修的课程门数;
SELECT coun t(DISTINCT Cno)
FROM SC;
②求选修4号课程的学生的平均年龄;
SELECT AVG(Sage)
FROM Stude nt,SC
WHERE Cn o=4 AND Stude nt.S no=SC.S no;
③求学分为3的每门课程的学生平均成绩;
SELECT AVG(Grade)
FROM Course,SC
WHERE Ccredit=3 AND Course.C no=SC.C no
GROUP BY SC.C no;
④统计每门课程的学生选修人数,要求超过3人的课程才统计,要求输出课程号和选修人数查询结果按人数降序排列,若人数相同,按课程号升序排列;
SELECT Cn o,cou nt(S no)
FROM SC
GROUP BY Cno
HAVING cou nt(S no )>3
ORDER BY cou nt(S no) DESC,C no ASC;
⑤检索学号比“王菲”同学大而年龄比他小的学生姓名;
SELECT Sn ame
FROM Stude nt X
WHERE Sno>
( SELECT Sno
FROM Stude nt Y
WHERE Sn am6=王菲'AND Sage>
( SELECT Sage
FROM Stude nt Z
WHERE Sn amd=王菲'AND X.S no=Z.S no AND Y.S no=Z.S no ) );
⑥检索姓名以“王”打头的所有学生的姓名和年龄;
SELECT Sn ame,Sage
FROM Stude nt
WHERE Sname LIKE '王 % ;
⑦在SC中检索成绩为空置的学生学号和课程号;
SELECT Sn o,C no
FROM SC
WHERE Grade is NULL;
⑧求年龄大于女同学平均年龄的男学生姓名和年龄;
SELECT Sn ame,Sage
FROM Stude nt X
WHERE Ssex=男’AND Sage>
( SELECT AVG(Sage) FROM Stude nt
WHERE Ssex=女’AND X.S no=Y.S no
);
⑨求年龄大于所有女同学年龄的男同学姓名和年龄;
SELECT Sn ame,Sage
FROM Stude nt X
WHERE Ssex=男’AND Sage>
( SELECT MAX(Sage) FROM Stude nt Y
WHERE Ssex=女’AND X.S no=Y.S no
);
⑩检索所有比“王华”年龄大的学生姓名,年龄和性别;
SELECT Sn ame,Sage,Ssex
FROM Stude nt X
WHERE Sage>
( SELECT Sage
FROM Stude nt Y
WHERE Sn am6=王华'AND X.S no=Y.S no
);
①检索选修“ 2”课程的学生中成绩最高的学生和学号;
SELECT Sn ame,SC.S no