题目
4.设某工厂数据库中有两个基本表: 车间基本表: DEPT(DNO,DNAME ,MGR_ENO ),其属性分别表示车间编 号、车间名和车间主任的职工号。职工基本表: ERP( ENO ,ENAME,AGE,SEX,SALARY ,DNO ),其属性 分别表示职工号、姓名、年龄、性别、工资和所在车间的编号。 建立一个有关女车间主任的职工号和姓名的视图,其结构如下:VIEW6 (ENO, ENAME )。试写出创建该视图 VIEW6 的SQL 语句。
4.设某工厂数据库中有两个基本表: 车间基本表:
DEPT(DNO,DNAME ,MGR_ENO ),其属性分别表示车间
编 号、车间名和车间主任的职工号。
职工基本表: ERP( ENO ,ENAME
,AGE,SEX,SALARY ,DNO ),其属性 分别表示职工号、
姓名、年龄、性别、工资和所在车间的编号。 建立一个有关女车
间主任的职工号和姓名的视图,其结构如下:
VIEW6 (ENO, ENAME )。试写出创建该视图 VIEW6 的
SQL 语句。
题目解答
答案
4、参考答案:
参考答案 1:
CREATE VIEW VIEW6
AS
SELECT ENO, ENAME FROM EMP
WHERE SEX=' 女' AND ENO IN
(SELECT MGR_ENO FROM DEPT)
参考答案 2:
CREATE VIEW VIEW6
AS
SELECT ENO, ENAME FROM DEPT, EMP
WHERE MGR_ENO=ENO AND SEX=' 女'(4 分)
评分标准:
参考答案 1 中, CREATE VIEW VIEW6 ( 1 分),少
VIEW 或将 VIEW6 写 成其它名称不给分; SELECT ENO,
ENAME FROM EMP ( 1 分); WHERE SEX=' 女' AND ENO
IN (SELECT MGR_ENO FROM DEPT)( 2 分),两个条件
各 1 分。
参考答案 2 中,CREATE VIEW VIEW6 (1 分),少 VIEW
或将 VIEW6 写成 其它名称不给分; SELECT ENO, ENAME
FROM DEPT, EMP ( 1 分); WHERE MGR_ENO=ENO
AND SEX=' 女' (2 分) ,两个条件各 1 分。
解析
考查要点:本题主要考查SQL视图的创建,涉及子查询和连接查询的应用,以及如何通过两个表的关联筛选特定数据。
解题核心思路:
- 明确目标:需要从
EMP表中筛选出性别为“女”且是车间主任的职工信息。 - 关联条件:车间主任的职工号(
MGR_ENO)存储在DEPT表中,需与EMP表的ENO关联。 - 两种实现方式:
- 子查询:先从
DEPT表中获取所有车间主任的ENO,再筛选EMP表中符合条件的记录。 - 连接查询:通过
MGR_ENO与ENO直接关联两个表,再添加性别条件。
- 子查询:先从
破题关键点:
- 正确关联
DEPT和EMP表中的字段。 - 确保筛选条件同时满足“性别为女”和“是车间主任”。
方法一:子查询
- 子查询获取车间主任的ENO:
SELECT MGR_ENO FROM DEPT会返回所有车间主任的职工号。 - 筛选条件:
在EMP表中,筛选SEX='女'且ENO存在于上述子查询结果中的记录。
方法二:连接查询
- 关联两个表:
通过DEPT.MGR_ENO = EMP.ENO将DEPT和EMP表关联。 - 添加性别条件:
直接在WHERE中添加SEX='女',确保只保留女性车间主任的信息。