问题 问答题

有下列关于运动会管理系统的ER图,如图10所示。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体之间的关系。假定已通过下列SQL语言建立了基本表。 CREATE TABLE ATHLETE
ANAME CHAR(20),
ASEX CHAR(1),
ATEAM CHAR(20));
CREATE TABLE |TEM
(INO CHAR(6)NOT NULL,
INAME CHAR(20),
ITIME CHAR(12),
IPLACE CHAR(20);
CREATE TABLE GAMES
(ANO CHAR(6)NOTNULL,
INO CHAR(6)NOT NULL,
SCORRE CHAR(10));
为了答题的方便,图中的实体和属性同时给出了中英文两种文字,回答问题时只需写出英文名即可。
【E-R图】


【问题】
填充下列SQL程序1~4中的(1)~(7),使它们分别完成相应的功能:
程序1:统计参加比赛时男运动员人数。
SELECT (1)
FROM ATHLETE
WHERE ASEX=’M’;
程序2:查100872号运动员参加的所有项目及其比赛时间和地点。
SELECT ITEM,INO,IN A ME,ITIME,IPLACE
FROM GAMES,ITEM
WHERE (2)
AND (3)
程序3:查参加100035项目的所有运动员名单。
SELECT ANO,ANAME,ATEAM
FROM ATHLETE
WHERE (4)
(SELECT (4) (5)
FROM GAMES
WHERE GAMES ANO=ATHLETE.ANO AND INO=’100035’);
程序4:建立运动员成绩视图。
(6) ATHLETE-SCORE
AS SELECT ATHLETE,ANO,ANAME,ATEAM,INAME,SCORE
FORM (7) WHERE ATHLETE.ANO=GAMES. ANO AND GAMES.INO=ITEM.INO;

答案

参考答案:(1)COUNT(*)(若答COUNT或COUNT,得2分)
(2)GAMES.INO=IFEM.INO
(3)GAMES.ANO=‘100872’(注:(2)、(3)可互换、无前缀得1分)
(4)EXISTS
(5)*或ANO或INO或SCORE或后3个列名的任意组合
(6)CREATEVIEW
(7)ATHLETE,ITEM,GAMES(3项可交换。)
注:(4)、(5)也可为
(4)ANOIN
(5)ANO

解析: 本题是关于系数据库标准语言——SQL(Structured Query Language)语言的题目,由题目中给出的ER图可知3个表中,ATH- LETE和ITEM是基本表,表ATHETE的主键是运动员编号ANO,表I-TEM的主键是项目编号INO,表GAMES是一个视图,以ANO、INO为外键。
程序1统计参加比赛的男运动员人数,也就是表ATHLETE中, AEX=’M’的记录的个数,所以要用到库函数COUNT(*)。这里要注意的是COUNT与COUNT(*)区别,COUNT的功能是对一列中的值计算个数,而COUNT(*)才是计算数据库中记录的个数。所以填空①的答案为“COUNT(*)”。
程序的2统计100872号运动员参加的所有项目及比赛时间和地点,所以SELECT后面的内容是项目编号ITEM.INO、项目名称INAME时间ITIME及地点IPLACE。统计涉及比赛表GAMES和项目表ITEM,所以FROM后面的内容为GAMES、ITEM。本题考的是连接查询,所谓连接查询指的是涉及两个以上的表的查询。由于是统计100872号运动员参加的所有项目及比赛时间和地点,所以查询条件中必然有 GAMES.INO=’100872’(程序中引用到字段时,若字段名在各个表中是惟一的,则可以把字段名前的表名去掉,否则,应当加上表名作为前缀,以免引起混淆)。由于GAMES表中只有比赛的成绩,那些关于项目的数据必须从项目表ITEM中取得,所以还应该有两个表之间的关联,即 GAMES.INO=TYEM.INO。所以填空②和③可交换,不影响查询结果。
程序3要求查参加100035项目的所有运动员名单。分析查询表达式,必首先查询GAMES表,找出参加100035项目的那些运动员的编号ANO,即GAMES.ANO=ATHLETE.ANO AND INO=’100035’,然后再根据查询到的运动员号ANO从ATHLETE表中抽取运动员的数据。所以填空④的答案为“EXISTS”或“ANOIN”,填空⑤的答案为“ANO”。
程序4要求建立运动员成绩视图。建立视图的命令为CREATE- VIEW,所以填空⑥的答案一定是“CREATEVIEW”。建立的是运动员成绩视图,那么一定涉及运动员情况、运动员参加的项情况和该项目的成绩,所以要用到ATHLETE、ITEM和GAMES这3个表,因此FROM子句后为ATHLETE、GAMES、ITEM,3个表可以是任意次序,不影响结果。

判断题
单项选择题