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

admin2014-10-11  32

问题 阅读下列说明和E—R图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
设有下列关于学生成绩管理系统的E-R图(见图2—1)。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。假定已通过下列SQL语言建立了基本表:CREATE TABLE STUDENT  (SNo CHAR(6)  NOT NULL UN工QUE,
    SName CHAR(20),
    Sex CHAR(1),
    DeptCHAR(20),
    Age SMALLINT);
CREATE TABLE COURSE  (CN0 CHAR(6)  NOT NULL UN工QUE,
    CName CHAR(20),
    Hour SMALL工NT,
    Credi七SMALL工NT);
CREATE TABLE SC  (SN0 CHAR(6),
    CNo CHAR(6),
    GRADE SMALL工NT,
    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*  FROMSC WHERE    (3)  ))
【程序5.2】
SELECT    (4)    FROMSTuDENT
    【程序5.3】
    SELEcT    (5)    FROMSC GR0uP BYSN0
    【程序5.4】
    SELECT   (6)    FRoMSC GROup BYSNO

选项

答案(1)NOTEXISTS (2)NOTEXISTS (3)STUDENT.SNO=SCSNOANDCOURSE.CNO=SCCNO (4)COUNT(*) (5)SNO,AVG(GRADE) (6)SNO,COUNT(CNO)

解析 本题主要是考察SQL。SQL中数据查询是最常用的,其完整形式如下:
SELECT[ALL|DISTINCT][,<目标列表达式>1...
FROM<表名或视图名>[,<表名或视图名>]
[WHERE<条件表达式>]
[GROUPBY<列名1>[HAVING<条件表达式>]]
[ORDERBY<列名2>[ASC1DESC]...]
子句顺序为SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY,但SELECT和FROM是必须的,HAVING子句只能与GROUPBY搭配起来使用。该成绩管理系统的关系模式有:STUDENT(SNo,SName,Sex,Dept,Age),主键为SNo,COURSE(CNo,CName,Hour,Credit),主键为CNo,SC(SNO,CNO,GRADE),主键为(Sno,CNo)。程序5.1是检索选修所有课程的学生姓名,亦即“不存在没有选修的谋程”。空(1)是引出子查询的,该类连接浏有:IN、NOTIN、EXISTS、NOTEXISTS,EXISTS’JI出的子查询一般是SELECT*型,故排除IN型;再据语意分析应填NOTEXISTS。空(2)同理得应填NOTEXISTS。空(3)是“真正”的查询条件,该查询涉及剑三个表STUDENT、COURSE、CS,故应填STUDENT.SNO=SC SNOANDCOURSE.CNO=SCCNO。程序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://kaotiyun.com/show/maDZ777K
0

最新回复(0)