参考教材《数据库系统:原理、设计与编程(MOOC版)》,陆鑫 张凤荔 陈安龙
3.5 数据控制SQL语句
数据控制SQL语句(DCL)是一类可对用户数据访问权进行控制的操作语句,可以控制特定用户或角色对数据表、视图、存储过程、触发器等数据对象的访问权限。主要有GRANT、REVOKE、DENY
语句操作来实现。
这个文档中有SQL Server的一些相关操作:https://docs.microsoft.com/zh-cn/sql/t-sql/tutorial-writing-transact-sql-statements?view=sql-server-ver15
这几个文档都值得一看,其中第三课也包括删除权限等,只是题目取的不太清晰。上述文档中的权限部分主要是用户的权限控制,而参考书和我的笔记中主要是角色的权限控制,可以分别看一下。文档中还有用DROP
删除权限,参考书中没有。
3.5.1 GRANT语句
GRANT
语句是一种由数据库对象床架这或管理员执行的授权语句,可以把访问数据库对象权限授予其他用户或角色。
格式:
GRANT <权限列表(逗号分隔)> ON <数据库对象> TO <用户或角色> [WITH GRANT OPTION];
例3-43
假如学生的角色是RoleS,系统管理员希望将Register表的SELECT、INSERT、UPDATE、DELETE访问权限赋予学生角色RoleS:
GRANT SELECT, INSERT, UPDATE, DELETE ON Register TO RoleS;
如果上面的语句还带有WITH GRANT OPTION
(授权选项),则学生角色还可以将这些权限授予其他用户。
3.5.2 REVOKE语句
REVOKE
语句是一种由数据库对象创建者或管理员将赋予其他用户或角色的权限进行收回语句。
格式:
REVOKE <权限列表(逗号分隔)> ON <数据库对象> FROM <用户或角色>;
例3-44
系统管理员需要回收RoleS角色对Register表的DELETE访问权限:
REVOKE DELETE ON Register FROM RoleS;
3.5.3 DENY语句
DENY
语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。
格式:
DENY <权限列表(逗号分隔)> ON <数据库对象> TO <用户或角色>;
例3-45
系统管理员角色(RoleA)拒绝教师角色(RoleT)对Teacher表的DELETE访问权限:
DENY DELETE ON Teacher TO RoleT;