阅读下列说明,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。
【说明】某工程项目公司的信息管理系统的部分关系模式如下:
职工(职工编号,姓名,性别,居住城市)
项目(项目编号,项目名称,状态,城市,负责人编号)
职工项目(职工编号,项目编号)
其中:
(1)一个职工可以同时参与多个项目,一个项目需要多个职工参与
(2)职工的居住城市与项目所在城市来自同一个域
(3)每个项目必须有负责人,且负责人为职工关系中的成员
(4)项目状态有两个:0 表示未完成,1 表示已完成
【问题1】
下面是创建职工关系的 SQL 语句,职工编号唯一识别一个职工,职工姓名不能为空。
请将空缺部分补充完整。
CREATE TABLE 职工(
职工编号 CHAR(6),
姓名 CHAR(8) (a) ,
性别 CHAR(2),
城市 VARCHAR(20),
PRIMARY KEY (b) );
【问题2】
下面是创建项目关系的 SQL 语句。请实现相关的完整性约束。
CREATE TABLE 项目(
项目编号 CHAR(6),
项目名称 VARCHAR(20),
状态 CHAR(1) CHECK (c) ,
城市 VARCHAR(20),
负责人编号 CHAR(6) (d) ,
FOREIGN KEY (e) REFERENCES (f) );
【问题3】
请完成下列查询的 SQL 语句。
(1)查询至少参加两个项目的职工编号和参与的项目数。
SELECT 职工编号, (g)
FROM 职工项目
GROUP BY (h)
HAVING (i) ;
(2)查询参与居住城市正在进行的工程项目的职工工号和姓名。
SELECT 职工.职工编号, 姓名
FROM 职工, 职工项目, 项目
WHERE 职工.职工编号 = 职工项目.职工编号 AND 项目.项目编号 = 职工
项目.项目编号 AND (j) AND (k) ;
【问题4】
假设项目编号为“P001”的项目负责人李强(其用户名为 U1)有对参与该项目的职工进行查询的权限。下面是建立视图 emp 和进行授权的 SQL 语句,请将空缺部分补充完整。
(1)CREATE VIEW (l)
AS SELECT 职工编号, 姓名, 性别, 城市
FROM 职工
WHERE 职工编号 IN ( SELECT (m)
FROM 职工项目
WHERE (n) )
WITH CHECK OPTION;
(2)GRANT (o) ON emp TO U1;