数据库作业11:第四章课后题
6.对下列两个关系模式:
学生(学号,姓名,年龄,性别,家庭住址,班级号)
班级(班级号,班级名,班主任,班长)
使用GRANT语句完成以下授权功能:
先建立学生和班级关系模式
DROP TABLE IF EXISTS STUDENT1;
DROP TABLE IF EXISTS CLASS;
CREATE TABLE STUDENT1(--创建STUDENT表
ID CHAR(20),--学号
SNAME CHAR(20),--姓名
SAGE SMALLINT,--年龄
SSEX CHAR(9),--性别
SADD CHAR(20),--住址
SCID CHAR(20)--班级号
);
CREATE TABLE CLASS(--创建CLASS班级表
CID CHAR(20),--班级号
CNAME CHAR(20),--班级名
CHEAD CHAR(20),--班主任
CMON CHAR(20)--班长
);
GRANT ALL PRIVILEGES
ON STUDENT1
TO U1
WITH GRANT OPTION;
GRANT ALL PRIVILEGES
ON CLASS
TO U1
WITH GRANT OPTION;
(2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。
GRANT SELECT,UPDATE(SADD)
ON STUDENT1
TO U2;
GRANT SELECT
ON CLASS
TO PUBLIC;
GRANT SELECT,UPDATE
ON STUDENT1
TO R1;
(5)将角色R1授予用户U1,并且U1可继续授权给其他角色;
GRANT R1
TO U1
WITH GRANT OPTION;
7.今有以下两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
请用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
建立题中两种关系
DROP TABLE IF EXISTS Workers;
DROP TABLE IF EXISTS Dep;
CREATE TABLE Workers(--创建职工表
WID CHAR(20),--职工号
WNAME CHAR(20),--姓名
WAGE SMALLINT,--年龄
WPOST CHAR(20),--职务
WMON SMALLINT,--工资
WPID CHAR(20)--部门号
);
CREATE TABLE Dep(--创建部门班级表
DID CHAR(20),--部门号
DNAME CHAR(20),--部门名
DBOSS CHAR(20),--经理名
DADD CHAR(20),--地址
DTEL CHAR(20)--电话号
);
GRANT SELECT
ON Workers
TO 王明;
GRANT SELECT
ON Dep
TO 王明;
GRANT INSERT,DELETE
ON Workers
TO 李勇;
GRANT INSERT,DELETE
ON Dep
TO 李勇;
GRANT SELECT
ON Dep
WHEN USER()=WNAME
TO ALL;
GRANT SELECT
ON Workers
WHEN USER()=WNAME
TO ALL;
(4)用户刘星对职工表有SELECT权限,对工资字段具有更新权限。
GRANT SELECT,UPDATE(WMON)
ON Workers
TO 刘星;
GRANT ALTER
ON Workers
TO 张新;
(6)用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限。
GRANT ALL PRIVILEGES
ON Workers
TO 周平;
GRANT ALL PRIVILEGES
ON Dep
TO 周平;
WITH GRANT OPTION;
(7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。
CREATE VIEW SWMON
AS
(SELECT DANME,MAX,MIN,AVG
FROM Dep
WHERE Dep.DID=Workers.WPID
GROUP BY Dep.DID
GRANT SELECT
ON SWMON
TO 杨兰
8.针对习题7中(1)~(7)的每一种情况,撤销各用户所授予的权限。
(1)
REVOKE SELECT
ON Workers
FROM 王明;
REVOKE SELECT
ON Dep
FROM 王明;
REVOKE INSERT,DELETE
ON Dep
TO 李勇;
REVOKE INSERT,DELETE
ON Workers
TO 李勇;
REVOKE SELECT
ON Workers
WHEN (USER)=NAME
FROM ALL;
(4)
REVOKE SELECT,UPDATE
ON Workers
FROM 刘星;
REVOKE ALTER
ON Workers
FROM 张新;
REVOKE ALTER
ON Dep
FROM 张新;
REVOKE ALL PRIVILIEGES
ON Dep
FROM 周平
REVOKE ALL PRIVILIEGES
ON Workers
FROM 周平
(7)
REVOKE SELECT
ON WMON
FROM 杨兰;
DROP VIEW WMON;
至此,第四章课后题已完成~
感谢阅读~