5.3 数据控制语句

数据控制语句(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、REVOKE、COMMIT、ROLLBACK等。在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语句。

5.3.1 用户授予权限——GRANT语句

利用SQL的GRANT语句可向用户授予操作权限,当用该语句向用户授予操作权限时,若允许用户将获得的权限再授予其他用户,应在该语句中使用WITH GRANT OPTION短语。

授予语句权限的语法格式为:

授予对象权限的语法格式为:

例如,对名称为guest的用户进行授权,允许其对fruit数据表执行更新和删除的操作权限,SQL语句如下:

在上述代码中,UPDATE和DELETE为允许被授予的操作权限,fruit为权限执行对象,guest为被授予权限的用户名称,WITH GRANT OPTION表示该用户还可以向其他用户授予其自身所拥有的权限。这里只是对GRANT语句有一个大概的了解,在后面章节中会详细介绍该语句的用法。

5.3.2 收回权限操作——REVOKE语句

REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

收回语句权限的语法格式为:

收回对象权限的语法格式为:

例如,收回guest用户对fruit表的删除权限,SQL语句如下:

5.3.3 拒绝权限操作——DENY语句

出于某些安全性的考虑,可能不太希望让一些人来查看特定的表,此时可以使用DENY语句来禁止对指定表的查询操作,DENY可以被管理员用来禁止某个用户对一个对象的所有访问权限。

禁止语句权限的语法格式为:

禁止对象权限的语法格式为:

例如,禁止guest用户对fruit表的操作更新权限,SQL语句如下: