单选题 在关系代数运算中,关系S,SP和R如表7-11~表7-13所示。若先 (29) ,则可以从 S和SP获得R。其对应的关系表达式为 (30) 。如下的SQL语句可以查询销售总量大于 1000的部门号。Select部门名From S
Where部门号in(Select部门号From SP Group by (31) )关系表S关系表SP关系表R
                                表7-11 关系表S
部门号
部门名
010
家电部
021
百货部
030
食品部
035
五金部

                                 表7-12关系表SP
部门号
商品号
销售量
010
01020210
500
010
01020211
780
010
01020212
990
021
02110200
580
025
02520100
1290
035
03530311
4680

                                   表7-13 关系表R
部门号
商品号
销售量
家电部
01020210
500
家电部
01020211
780
家电部
01020212
990


单选题 A.对S进行选择运算,再与S进行自然连接运算
B.对S进行选择运算,再与SP进行自然连接运算,最后进行投影运算
C.对S和SP进行笛卡儿积运算,再对运算结果进行投影运算
D.分别对S和SP进行投影运算,再对运算结果进行笛卡儿积运算
【正确答案】 B
【答案解析】
单选题
【正确答案】 B
【答案解析】
单选题 A.部门号where sum(销售量)>1000
B.部门号having sum(销售量)>1000
C.商品号where sum(销售量)>1000
D.商品号having sum(销售量)>1000
【正确答案】 B
【答案解析】[解析] 表S是部门名与部门号对应关系,表SP是各部门号各种商品销售量,表R是部门名为“家电部”的各种商品销售量,且不含部门号一列。显然必须进行连接、选择以及投影。故(29)只有B选项满足,亦不难验证,确实可得表R。(30)只不过将(29)符号化,自然答案也是B。
SQL的查询语句SELECT的完整句法如下:SELECT目标表的列名或列表达式FROM基本表式(和)视图序列[WHERE行条件表达式)[GROUP BY列名序列[HAVING组条件表达式]][ORDER BY列名[序]…)。[]表示可选。其语意为:从FROM子句列出的表中,选取满足WHERE子句给出的条件表达式的元组,然后按GROUP子句中指定列的值分组,再提取满足HAVING子句组条件表达式的那些组,按SELECT子句中给出的列名或列表达式求值输出。 ORDER子句是对输出的目标表进行排序,可附加说明ASC(升序)或DESC(降序)。本题中,应该按部门号分组,组条件表达式用HAVING。所以空(31)的答案选B。