对下列两个关系模式[1]:学生(学号,姓名,年龄,性别,家庭住址,班级号)班级(班级号,班级名,班主任,班长)使用GRANT语句完成下列授权功能:(1)授予用户U1对两个表的所有权限,并可给其他用户授权。(2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限(3)将对班级表查看权限授予所有用户(4)将对学生表的查询、更新权限授予角色R1。(5)将角色R1授予用户U1,并且U1可继续授权给其他角色
对下列两个关系模式[1]:
学生(学号,姓名,年龄,性别,家庭住址,班级号)
班级(班级号,班级名,班主任,班长)
使用GRANT语句完成下列授权功能:
(1)授予用户U1对两个表的所有权限,并可给其他用户授权。
(2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限
(3)将对班级表查看权限授予所有用户
(4)将对学生表的查询、更新权限授予角色R1。
(5)将角色R1授予用户U1,并且U1可继续授权给其他角色
题目解答
答案
1.授予用户 U1 对两个表的所有权限,并可给其他用户授权:
GRANT ALL PRIVILEGES ON 学生, 班级 TO U1 WITH GRANT OPTION;
2.授予用户 U2 对学生表具有查看权限,对家庭住址具有更新权限:
GRANT SELECT ON 学生 TO U2;
GRANT UPDATE (家庭住址) ON 学生 TO U2;
3.将对班级表查看权限授予所有用户:
GRANT SELECT ON 班级 TO PUBLIC;
4.将对学生表的查询、更新权限授予角色 R1:
GRANT SELECT, UPDATE ON 学生 TO R1;
5.将角色 R1 授予用户 U1,并且 U1 可继续授权给其他角色:
GRANT R1 TO U1 WITH ADMIN OPTION;
解析
本题考查SQL中的GRANT语句的使用,重点在于理解不同授权场景下的语法结构和关键字。需要掌握以下核心点:
- 权限类型:包括
ALL PRIVILEGES
(所有权限)、SELECT
(查询)、UPDATE
(更新)等; - 授权对象:可以是用户(如
U1
)、角色(如R1
)或公共用户(PUBLIC
); - 权限传递:通过
WITH GRANT OPTION
允许用户将权限授予他人,通过WITH ADMIN OPTION
允许角色管理; - 作用范围:对单个表或特定列授权,以及对角色的批量授权。
第(1)题
目标:授予用户U1
对两个表的所有权限,并允许其转授权限。
关键点:
- 使用
ALL PRIVILEGES
授予所有权限; WITH GRANT OPTION
允许转授;ON 学生, 班级
指定作用范围。
第(2)题
目标:授予用户U2
对学生表的SELECT
权限和家庭住址
列的UPDATE
权限。
关键点:
SELECT
默认作用于整个表;UPDATE(家庭住址)
仅授予对特定列的更新权限。
第(3)题
目标:将班级表的SELECT
权限授予所有用户。
关键点:
- 使用
PUBLIC
表示所有用户; - 权限仅限
SELECT
。
第(4)题
目标:将学生表的SELECT
和UPDATE
权限授予角色R1
。
关键点:
- 直接对角色
R1
授予权限; - 权限类型需明确列出。
第(5)题
目标:将角色R1
授予用户U1
,并允许U1
管理该角色。
关键点:
- 使用
WITH ADMIN OPTION
允许角色转授。