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