某企业职工和部门的关系模式如下所示,其中部门负责人也是一个职工。职工和部门关系的外键分别是(1)。 职工(职工号,姓名,年龄,月工资,部门号,电话,办公室) 部门(部门号,部门名,负责人代码,任职时间) 查询每个部门中月工资最高的“

admin2019-03-12  34

问题 某企业职工和部门的关系模式如下所示,其中部门负责人也是一个职工。职工和部门关系的外键分别是(1)。
   职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)
   部门(部门号,部门名,负责人代码,任职时间)
   查询每个部门中月工资最高的“职工号”的SQL查询语句如下:
   Select职工号from职工as E
   whetre月工资=(Select Max(月工资)  from职工as M  (2))。  

选项 A、where M.职工号=E.职工号
B、where M.职工号=E.负责人代码
C、where M.部门号=部门号
D、where M.部门号=E.部门号

答案D

解析 题目第1个空格要求找出职工和部门关系的外键,首先可以将这两个关系的主键求出。职工的主键为职工号,部门的主键为部门号。在职工关系中,部门号不是主键,但它在部门关系中是主键,所以部门号对于职工关系是外键。再看部门关系,在部门关系中未发现其他关系中的主键。但是题目中有“其中部门负责人也是一个职工”,这意味着部门中的“负责人代码”和职工关系中的“职工号”有着对应关系,所以负责人代码是部门关系的外键。所以答案为B。
   接下来看第2个空格,这里考查的是SQL语言。题目要求查询每个部门中月工资最高的“职工号”,这里面最重要的一个条件就是“每个部门”,如何实现查询每个部门的最高工资?我们带着这个疑问来看SQL语句,此SQL语句的结构很简单,先看括号内的SQL语句,从此句中的“Select Max(月工资)”可以看出这个SQL的作用是找出最高月工资,而这个最高月工资应是有条件限制的,题目要求的是每个部门的最高月工资,所以查询条件一定是与部门有关的。而括号外的语句用于把拥有此月工资的职工号查询出来。整个SQL语句唯有外层SQL的部门号字段能作为内层SQL的查询参数,又因为两层SQL当中,有相同属性部门号,所以要用外层职工关系的引用名E和内层职工关系的M对两个属性进行区分,故此处应加条件判断“where M.部门号=E.部门号”。加了条件判断以后的SQL语句可以这样来理解,对于职工关系中的每一条数据,根据其部门号,找到此部门的最高工资与当前记录的月工资进行对比,若相等,则输出当前记录的职工号。
转载请注明原文地址:https://kaotiyun.com/show/eBWZ777K
0

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