6.对下列两个关系模式:
学生(学号、班级、年龄、性别、家庭住址、班级号)
班级(班级号,班级名,班主任,班长)
使用GRANT语句完成下列授权操作:
首先建立题目中使用的表格:
CREATE TABLE STUDENT1
(SNO CHAR(12) ,
SNAME CHAR(10) ,
SAGE CHAR(2),
SSEX CHAR(2),
SADD CHAR(30),
SCNO CHAR(10));
CREATE TABLE CLASS
(SCNO CHAR(10),
CNAME CHAR(10),
BOSS CHAR(10),
CMO CHAR(10));
(1)授予用户U1对两个表的所有权限,并可给其他用户授权。
GRANT ALL
ON STUDENT1
TO U1
WITH GRANT OPTION;
GRANT ALL
ON CALSS
TO U1
WITH GRANT OPTION;
(2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。
GRANT SELECT,UPDATE(SADD)
ON STUDENT1
TO U2;
(3)将对班级表查看权限授子所有用户。
GRANT SELECT
ON CLASS
TO PUBLIC;
(4)将对学生表的查询、更新权限授予角色R1。
GRANT SELECT,UPDATE
ON STUDENT1
TO R1;
(5)将角色RI授予用户UI,并且U1可继续授权给其他角色。
ALTER ROLE R1
ADD MEMBER U1;
7.今有以下两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
首先建立题目要求的表格:
CREATE TABLE WORK
(WNO CHAR(10),
WNAME CHAR(10),
WAGE CHAR(10),
POS CHAR(10),
MON SMALLINT,
DNO CHAR(10));
CREATE TABLE DEP
(DNO CHAR(10),
DNAME CHAR(10),
BNAME CHAR(10),
ADR CHAR(20),
PHON CHAR(11));
还需要进行下面的用户建立
(1)用户王明对两个表有SELECT权限。
GRANT SELECT
ON WORK
TO 王明;
GRANT SELECT
ON DEP
TO 王明;
(2)用户杨勇对两个表有INSERT和DELETE权限。
GRANT INSERT,DELETE
ON WORK
TO 杨勇;
GRANT INSERT,DELETE
ON DEP
TO 杨勇;
(3)每个职工只对自己的记录有SELECT权限。
对于每个人能查看自己的视图,说明知识看表的允许部分,并不对表进行修改,所以使用视图知识
CREATE VIEW USERS
AS
SELECT *
FROM WORK
WHERE WNO=USER;
然后对每个人开放查看权限
GRANT SELECT
ON USERS
TO PUBLIC;
(4)用户刘星对职工表有SELECT权限,对工资字段具有更新权限。
GRANT SELECT,UPDATE(MON)
ON WORK
TO 刘星;
(5)用户张新具有修改这两个表的结构的权限。
GRANT UPDATE
ON WORK
TO 张新;
GRANT UPDATE
ON DEP
TO 张新;
(6)用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限。
GRANT SELECT,INSERT,UPDATE,DELETE
ON WORK
TO 周平
WITH GRANT OPTION;
GRANT SELECT,INSERT,UPDATE,DELETE
ON DEP
TO 周平
WITH GRANT OPTION;
(7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。
CREATE VIEW YANG
AS
SELECT MAX(MON) MAXM,MIN(MON) MINM,AVG(MON) AVGM
FROM WORK;
GRANT SELECT
ON YANG
TO 杨兰;
撤销7.授予的权限
(1)
REVOKE SELECT
ON WORK
FROM 王明;
REVOKE SELECT
ON DEP
FROM 王明;
(2)
REVOKE INSERT,DELETE
ON WORK
FROM 杨勇;
REVOKE INSERT,DELETE
ON DEP
FROM 杨勇;
(3)
REVOKE select
ON USERS
FROM PUBLIC;
DROP VIEW USERS
(4)
REVOKE SELECT,UPDATE(MON)
ON WORK
FROM 刘星;
(5)
REVOKE UPDATE
ON DEP
FROM 张新;
REVOKE UPDATE
ON WORK
FROM 张新;
(6)
REVOKE SELECT,INSERT,UPDATE,DELETE
ON WORK
FROM 周平 CASCADE;
REVOKE SELECT,INSERT,UPDATE,DELETE
ON DEP
FROM 周平 CASCADE;
(7)
REVOKE SELECT
ON YANG
FROM 杨兰;
DROP VIEW YANG;
总结:蛮累的,收回权限要比放出权限简单,对于标准SQL 和T-SQL来说,掌握规则就ok