案例分析题 阅读下列说明,回答问题1至问题4,将解答填入对应栏内。

【说明】

某学校学生成绩管理系统数据库有三张基本表:学生表S(Sid ,Sname,Age,Sex),

其属性分别表示学生学号、姓名、年龄和性别;课程表C(Cid ,Cname,Teacher),其属性分别表示课程号、课程名称、上课教师名;选课表SC(Sid ,Cid ,Grade),其属性分别表示学号、课程号、成绩。

【问题1】

请说明学生和选课之间的关系。

【问题2】

请分别写出上述三张表的主键。

【问题3】

请解释SQL语句: select Cname from C where Cid not in (select Cid from S, SC where S.Sid=SC.Sid and Sname='张三')的含义。

【问题4】

使用SQL语句按平均成绩从高到低的顺序打印出每门课程号及其对应所有选修同学的平均成绩,请将下面(1)~(3)处的答案填写在对应栏内。

select Cid,(1) from SC (2) Cid (3) avg(Grade)desc

【正确答案】问题1:多对多

问题2:

学生表S的主键:Sid

课程表C的主键:Cid

选课表SC的主键: Sid和Cid

问题3:查询张三没有选课的所有课程名

问题4: 

1、avg(Grade)

2、Group By

3、Order By

【答案解析】问题一:一个学生可以选多门课程,一个课程可以让多个学生选择,所以是多对多。

问题二:主键是可以唯一标识一条记录的属性,学生表中是学号,课程表中是课程号,而选课表单一的属性无法唯—标识,所以需要课程号和学生号——对应才行。

问题三:简单查询语句的应用

问题四:补齐语句,第一个空是要填函数求平均成绩,所以为avg (grade),第二空要分组是GROUP BY,第三空是根据平均成绩排序Order by。desc为从高到低, asc为从低到高。