数据库第四章练习答案
8.请用SQL 的GRANT 和REVOKE 语句(加上视图机制) 完成以下授权定义或存取控制功能:
( a )用户王明对两个表有SELECT 权力。
GRANT SELECT ON table 职工, 部门
TO 王明
( b )用户李勇对两个表有INSERT 和DELETE 权力。
GRANT INSERT,DELETE ON table职工, 部门
TO 李勇
( c ) 每个职工只对自己的记录有SELECT 权力。
GRANT SELECT ON table职工
WHEN USER()=NAME
TO ALL;
或
Input 姓名
EXEC SQL
CREATE VIEW E_A
AS
SELECT * FROM 职工 WHERE 姓名=:姓名;
GRANT SELECT ON VIEW E_A TO :姓名;
**********************************************************
select * from sysusers
************************************************************
/*CREATE VIEW 个人信息
AS
SELECT * FROM 职工
WHERE USER_NAME()=姓名
GRANT SELECT ON view个人信息 TO PUBLIC*/
********************************************************
create proc p(@zg_Name nvarchar(50))
as
select * from 职工 where 姓名=@zg_Namego;
executive p (‘王明’)
*********************************************************
( d )用户刘星对职工表有SELECT 权力,对工资字段具有更新权力。
GRANT SELECT,UPDATE(工资) ON table职工
TO 刘星
( e )用户张新具有修改这两个表的结构的权力。
GRANT ALTER TABLE ON table职工, 部门
TO 张新;
( f )用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。
GRANT ALL PRIVILIGES ON table职工, 部门
TO 周平
WITH GRANT OPTION;
( g )用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
CREATE VIEW 部门工资 AS
SELECT 部门. 名称,MAX(工资),MIN(工资),A VG(工资)
FROM 职工, 部门
WHERE 职工. 部门号=部门. 部门号
GROUP BY 职工. 部门号
GRANT SELECT ON view部门工资
TO 杨兰;
9 .把习题8 中(1)---(7)的每一种情况,撤销各用户所授予的权力
(1) REVOKE SELECT ON table职工,部门 FROM 王明;
(2) REVOKE INSERT , DELETE ON table职工,部门 FROM 李勇;
(3) REOVKE SELECT ON table职工
WHEN USER ( ) =NAME
FROM ALL;
(4) REVOKE SELECT , UPDATE ON table职工
FROM 刘星;
(5) REVOKE ALTER TABLE ON table职工,部门
FROM 张新;
(6) REVOKE ALL PRIVILIGES ON table职工,部门
FROM 周平;
(7) REVOKE SELECT ON view部门工资
FROM 杨兰;
DROP VIEW 部门工资;