数据库第三章习题参考答案_数据库第三章习题答案

其他范文 时间:2020-02-27 10:52:56 收藏本文下载本文
【www.daodoc.com - 其他范文】

数据库第三章习题参考答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据库第三章习题答案”。

3-2 对于教务管理数据库的三个基本表 S(SNO,SNAME, SEX, AGE,SDEPT)SC(SNO,CNO,GRADE)

C(CNO,CNAME,CDEPT,TNAME)试用SQL的查询语句表达下列查询:

⑴ 检索LIU老师所授课程的课程号和课程名。⑵ 检索年龄大于23岁的男学生的学号和姓名。

⑶ 检索学号为200915146的学生所学课程的课程名和任课教师名。⑷ 检索至少选修LIU老师所授课程中一门课程的女学生姓名。⑸ 检索WANG同学不学的课程的课程号。⑹ 检索至少选修两门课程的学生学号。

⑺ 检索全部学生都选修的课程的课程号与课程名。

⑻ 检索选修课程包含LIU老师所授课程的学生学号。解:

⑴ SELECT C#,CNAME FROM C WHERE TEACHER=’LIU’;⑵ SELECT S#,SNAME FROM S WHERE AGE>23 AND SEX=’M’;⑶ SELECT CNAME,TEACHER FROM SC,C WHERE SC.C#=C.C# AND S#=’200915146’ ⑷ SELECT SNAME(连接查询方式)FROM S,SC,C WHERE S.S#=SC.S# AND SC.C#=C.C# AND TEACHER=’LIU’;

或:

SELECT SNAME(嵌套查询方式)FROM S WHERE SEX=’F’AND S# IN(SELECT S# FROM SC WHERE C# IN(SELECT C# FROM C WHERE TEACHER=’LIU’))或:

SELECT SNAME(存在量词方式)

SEX=’F’ AND FROM S WHERE SEX=’F’ AND EXISTS(SELECT* FROM SC WHERE SC.S#=S.S# AND EXISTS(SELECT * FROM C WHERE C.C#=SC.C# AND TEACHER=’LIU’))⑸ SELECT C# FROM C WHERE NOT EXISTS(SELECT * FROM S,SC WHERE S.S#=SC.S# AND SC.C#=C.C# AND SNAME=’WANG));⑹ SELECT DISTINCT X.S# FROM SC AS X,SC AS Y WHERE X.S#=Y.S# AND X.C#!=Y.C#;⑺ SELECT C#.CNAME FROM C WHERE NOT EXISTS(SELECT * FROM S WHERE NOT EXISTS(SELECT * FROM SC WHERE S#=S.S# AND C#=C.C#));⑻ SELECT DISTINCT S# FROM SC AS X WHERE NOT EXISTIS(SELECT * FROM C WHERE TEACHER=’LIU’ AND NOT EXISTS(SELECT * FROM SC AS Y WHERE Y.S#=X.S# AND Y.C#=C.C#));3-3 试用SQL查询语句表达下列对3.2题中教务管理数据库的三个基本表S、SC、C查询:

⑴ 统计有学生选修的课程门数。

⑵ 求选修4号课程的学生的平均年龄。

⑶ 求LIU老师所授课程的每门课程的学生平均成绩。

⑷ 统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

⑸ 检索学号比WANG同学大,而年龄比他小的学生姓名。⑹ 检索姓名以WANG打头的所有学生的姓名和年龄。⑺ 在SC中检索成绩为空值的学生学号和课程号。⑻ 求年龄大于女同学平均年龄的男学生姓名和年龄。⑼ 求年龄大于所有女同学年龄的男学生姓名和年龄。

解:

⑴ SELECT COUNT(DISTINCT C#)FROM SC;⑵ SELECT AVG(AGE)FROM S,SC WHERE S.S#=SC.S# AND C#=’4’AND SEX=’F’;⑶ SELECT C.C#,AVG(GRADE)FROM SC,C WHERE SC.C#=C.C# AND TEACHER=’LIU’;⑷ SELECT C#,COUNT(S#)FROM SC GROUP BY C# HAVING COUNT(*)>10 ORDER BY 2 DESC,1;⑸ SELECT SNAME FROM S WHERE S#>ALL(SELECT S# FROM S WHERE SNAME=’WANG’

AND AGE(SELECT AVG(AGE)FROM S WHERE SEX=’F’);⑼ SELECT SNAME,AGE FROM S WHERE SEX=’M’AND AGE>ALL(SELECT AGE FROM S WHERE SEX=’F’);

3-4 试用SQL更新语句表达对3.2给出的教务管理数据库中三个基本表S、SC、C进行如下更新操作:

⑴ 往基本表S中插入一个学生元组(‘200912143’,‘张晶’,21)。

⑵ 在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT(SNO,SNAME,SEX)。⑶ 在基本表SC中删除尚无成绩的选课元组。⑷ 把张成民同学在SC中的选课记录全部删去。

⑸ 把选修高等数学课程中不及格的成绩全部改为空值。⑹ 把低于总平均成绩的女同学成绩提高5%。

⑺ 在基本表SC中修改4号课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。

解:

⑴INSERT INTO S(S#,SNAME,AGE)VALUES(‘200912143’,’张晶’,21);

⑵INSERT INTO STUDENT(SNO,SNAME,SEX)SELECT S#,SNAME,SEX FROM S WHERE S# IN(SELECT S# FROM SC WHERE 80

AND GRADE

WHERE C#=’4’AND GRADE>75;UPDATE SC SET GRADE=GRADE*1.05 WHERE C#=’4’AND GRADE

注意:这两个UPDATE语句的顺序不能颠倒。

下载数据库第三章习题参考答案word格式文档
下载数据库第三章习题参考答案.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文