阅读下列说明和E-R图,回答问题1至问题3,将解答填入对应栏内。 [说明] 设有下列关于学生成绩管理系统的E-R图(见图2-1)。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。假定已通过下列SQL语言建立了基本表:

admin2010-12-17  33

问题 阅读下列说明和E-R图,回答问题1至问题3,将解答填入对应栏内。
   [说明]
   设有下列关于学生成绩管理系统的E-R图(见图2-1)。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。假定已通过下列SQL语言建立了基本表:
   
   CREATE TABLE STUDENT(SNo CHAR(6)NOT NULL UNIQUE,
   SName CHAR(20),
   Sex CHAR(1),
   Dept CHAR(20),
   Age SMALLINT);
   CREATE TABLE COURSE(CNo CHAR(6)NOT NULL UNIQUE,
   CName CHAR(20),
   Hour SMALLINT,
   Credit SMALLINT);
   CREATE TABLE SC (SNo CHAR(6),
   CNo CHAR(6),
   GRADE SMALLINT,
   PRIMARY KEY (SNo,CNo));
   为了答题的方便,图中的实体和属性同时给出了中英文两种名字,回答问题时只须写出英文名即可。
   填充下列SQL程序5.1~5.4中的(1)~(6),使它们分别完成以下查询功能:
   程序5.1:检索选修所有课程的学生姓名。
   程序5.2:给出全体学生人数。
   程序5.3:按学号给出每个学生的平均成绩。
   程序5.4:按学号给出每个学生选修课程的门数。
   [程序5.1]
   SELECT SName FROM STUDENT WHERE  (1)   
   (SELECT FROM COURSE WHERE  (2)   
   (SELECT * FROM SC WHERE  (3)  ))
   [程序5.2]
   SELECT  (4)  FROM STUDENT
   [程序5.3]
   SELECT  (5)  FROM SC GROUP BY SNO
   [程序5.4]
   SELECT  (6)  FROM SC GROUP BY SNO
(6)

选项

答案SNO,COUNT(CNO)

解析 本题主要是考察SQL。SQL中数据查询是最常用的,其完整形式如下:
   SELECT [ALL | DISTINCT]<目标列表达式>[,<目标列表达式>]…
   FROM <表名或视图名>[,<表名或视图名>]
   [WHERE <条件表达式>]
   [GROUP BY<列名1>[HAVING<条件表达式>]]
   [ORDER BY<列名2>[ASC | DESC]…]
   子句顺序为SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY,但SELECT和FROM是必须的,HAVING子句只能与GROUP BY搭配起来使用。
   该成绩管理系统的关系模式有:STUDENT(SNo,SName,Sex,Dept,Age),主键为SNo,COURSE(CNo,CName,Hour,Credit),主键为CNo,SC(SNO,CNO,GRADE),主键为(Sno,CNo)。
   程序5.1是检索选修所有课程的学生姓名,亦即“不存在没有选修的课程”。空(1)是引出子查询的,该类连接词有:IN、NOT IN、EXISTS、NOT EXISTS,EXISTS引出的子查询一般是SELECT*型,故排除IN型;再据语意分析应填NOT EXISTS。空(2)同理得应填NOT EXISTS。空(3)是“真正”的查询条件,该查询涉及到三个表STUDENT、COURSE、CS,故应填STUDENT.SNO=SC.SNO ANDCOURSE.CNO=SC.CNO。
   程序5.2是给出全体学生人数,涉及集函数的应用。常用的集函数有:COUNT、SUM、AVG、MAX、MIN。在此用到COUNT,故空(4)应填COUNT(*)。
   程序5.3是按学号给出每个学生的平均成绩,同样是集函数,AVG的应用。要注意的是需要同时给出学号,故空(5)应填:SNO,AVG(GRADE)。
   程序5.4是按学号给出每个学生选修课程的门数,属COUNT的用法,并注意同时给出学号。故空(6)应填:SNO,COUNT(CNO)。
转载请注明原文地址:https://jikaoti.com/ti/u9i7FFFM
0

最新回复(0)