天津市某银行信息系统的数据库部分关系模式如下所示: 客户 (客户号,姓名,性别,地址,邮编,电话) 账户 (账户号,客户号,开户支行号,余额) 支行(支行号,支行名称,城市,资产总额) 交易 (交易号,账户号,业务金额

admin2011-01-29  31

问题 天津市某银行信息系统的数据库部分关系模式如下所示:
   客户  (客户号,姓名,性别,地址,邮编,电话)
   账户  (账户号,客户号,开户支行号,余额)
   支行(支行号,支行名称,城市,资产总额)
   交易  (交易号,账户号,业务金额,交易日期)
   其中,业务金额为正值表示客户向账户存款;为负值表示取款。
现银行决策者希望查看在天津市各支行开户且2009年9月使用了银行存取服务的所有客户的详细信息,请补充完整相应的查询语句。
   (交易日期形式为’2000-01-01’)
   SELECT DISTINCT客户.*
   FROM客户,账户,支行,交易
   WHERE客户.客户号=账户.客户号 AND
   账户.开户支行号=支行.支行号AND
     (d)   AND
   交易.账户号=账户.账户号 AND
     (e)  ;
   上述查询优化后的语句如下,请补充完整。
   SELECT DISTINCT客户.*
   FROM 客户,账户,  (f)  AS新支行,  (g)  AS新交易
   WHERE客户.客户号=账户.客户号AND
   账户.开户支行号=新支行.支行号AND
   新交易.账户号=账户.账户号;

选项

答案(d)支行.城市=’天津市’ (e)交易.交易日期 LIKE’2009-09-%’或等价表示 (f)(SELECT*FROM 支行 WHERE城市=’天津市’) (g)(SELECT*FROM 交易 WHERE交易日期LIKE’2009-09%’)或等价表示

解析 根据问题2要求应在表连接条件的基础上,需要添加两个条件:①支行关系的城市属性值为“天津市”,即支行城市=’天津市’;②在2009年9月存在交易记录,由于交易日期形式为’2000-01-01’,所以需要通过模糊匹配来实现,用LIKE关键词和通配符表示,即交易.交易日期LIKE’2009-09-%’。
   WHERE子句中条件的先后顺序会对执行效率产生影响。假如解析器是按照先后顺序依次解析并列条件,优化的原则是:表之间的连接必须出现在其他WHERE条件之后,那些可以过滤掉最多条记录的条件尽可能出现在WHERE子句中其他条件的前面。要实现上述优化过程,可以重新组织WHERE条件的顺序或者通过嵌套查询以缩小连接记录数目的规模来实现。
   根据问题2要求,考生需要添加两个子查询以缩小参与连接的记录的数目,即筛选出天津市的所有支行(SELECT+FROM支行WHERE城市=’天津市’),而且找到2009年9月发生的交易记录(SELECT+FROM交易WHERE交易日期LIKE’2009-09-%’),然后再做连接查询。
转载请注明原文地址:https://jikaoti.com/ti/tPN7FFFM
0

相关试题推荐
最新回复(0)