问题 问答题

某工程项目公司的信息管理系统的部分关系模式如下:
职工(职工编号,姓名,性别,居住城市);
项目(项目编号,项目名称,状态,城市,负责人编号);
职工项目(职工编号,项目编号)。
其中:
1)一个职工可以同时参与多个项目,一个项目需要多个职工参与。
2)职工的居住城市与项目所在城市来自同一个域。
3)每个项目必须有负责人,且负责人为职工关系中的成员。
4)项目状态有两个:0表示未完成,1表示已完成。
写出下列SQL语句。
1)写出创建项目关系的SQL语句,请实现相关的完整性约束。查询至少参加两个项目的职工编号和参与的项目数。
2)假设项目编号为“PO01”的项目负责人李强(其用户名为U1)有对参与该项目的职工进行查询的权限。写出建立视图emp和进行授权的SQL语句。

答案

参考答案:1)CREATE TABLE项目(项目编号CHAR(6),项目名称VARCHAR(20),状态CHAR (1)CHF CK(状态=‘1’OR状态=‘0’),城市VAR-CHAR(20),负责人编号CHAR(6)NOT NUIJL,FOR-EIGN KEY(项目编号)REFERENCES职工项目(项目编号));
SELECT职工编号,COUNT(项目编号)FROM职工项目 GROUP BY 职工 HAVING COUNT(项目编号)>=2;
2)CREATE VIEW emp AS SELECT职工编号,姓名,性别,城市 FROM职工 WHERE职工编号IN(SELECT 职工编号 FROM职工项目 WHERE项目编号=‘PO01’)WITH CHECK OPTION;
GRANT SELECT ON emp TO U1;

解析: 主要考查了SQL的数据查询功能、数据定义功能和数据操纵功能。这类问题主要是考查对SE-LECT FROM WHERE语句的掌握。

填空题
单项选择题