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

admin2019-03-11  29

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

选项 A、WHERE M. 职工号=E. 职工号
B、WHEREW 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://jikaoti.com/ti/S9f7FFFM
0

最新回复(0)