SQL九大核心动词分成四种语言,数据定义语言DDL包括动词Create、Drop、Alter;数据操纵语言DML包括动词Insert、Update、Delete;数据控制语言DCL包括动词Grant、Revoke;数据查询语言DQL包括动词select
SQL中使用Grant和Revoke语句向用户授予或收回对数据的操作权限,Grant语句向用户授予权限,Revoke语句收回已经授予用户的权限。
Grant
Grant语句的一般格式:
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION;有这个则用户还可以授权给别人];
其语义为:将对指定操作对象的指定操作权限授予指定的用户;
发出该Grant语句的可以是数据库管理员,也可以是该数据库对象创建者,还可以是已经拥有该权限的用户。接受权限的用户可以是一个或多个具体用户,也可以是PUBLIC,即全体用户;
如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他的用户。如果没有指定WITH GRANT OPTION子句,则获得某种权限的用户只能使用该权限,不能传播该权限;
其中不能循环授权,即被授权者不能把权限再授回给授权者或其祖先。

eg1:把查询Student表的权限授给用户U1
Grant select
on table student
to U1;
eg2:把对Student表,sc表所有权限授给所有用户
grant all privileges
on table student,sc
to public;
eg3:把修改学生学号的权限给用户U2
Grant update
on table student
to U2
WITH GRANT OPTION
执行此SQL语句后,U2不仅拥有了对表Student修改学生学号的权限,还可以传播此权限,即由U2用户发上述GRANT命令给其他用户。
Revoke
Revoke语句的一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
授予用户的权限可以由数据库管理员或其他授权者用REVOKE语句收回;CASCADE表示级联收回,否则系统拒绝此操作
eg1:把用户U1查询Student表的权限收回
revoke select
on table student
from U1 CASCADE;
U1若将select授予出去,那么CASCADE将U1授予的权限收回。
eg2:收回所有用户对sc表的update操作
revoke update
on table sc
from public;
参考书籍:《数据库系统概论 第五版》王珊等著
希望对你学习有帮助!

本文介绍了SQL中的数据控制语言DCL,重点讲解了Grant和Revoke语句的使用。Grant用于向用户授予特定操作权限,如查询、修改表的权限,并可以设置是否允许用户再次转授权限。Revoke则用于回收已授予用户的权限,可选择级联收回。通过实例展示了Grant和Revoke的基本语法和应用。

559

被折叠的 条评论
为什么被折叠?



