个人笔记:数据库——第三章 第四部分 DCL 数据控制语言

本文仅供参考学习使用,谢谢

SQL语言种类操作
DDL 数据定义语言create(创建) drop(删除) alte(修改)
DQL 数据查询语言select(查询)
DML 数据操纵语言insert(插入) update(更新) delete(删除)
DCL 数据控制语言grant(授予) revoke(吊销)

视图链接


在这里插入图片描述

DCL 数据控制语言

权限分文对于对象的权限和对语句的权限,区别体现在用不用加on

对对象的权限体现在:
针对某个(某类)对象,对于某些表可以在某些属性值上进行修改
比如某些对象只能在某张表上修改该表的某个属性值

对语句的权限体现在:
针对某个权限传授给某个对象,比如某些对象可以创建表,更新表,删除表

1.GRANT

GRANT语句的一般格式

GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]... 
TO <用户>[,<用户>]...
[WITH GRANT OPTION];//指定该子句:可以再转授权限
					//没有指定:不能传播权限

WITH GRANT OPTION语义:
将对指定操作对象的指定操作权限授予指定的用户

  • 发出GRANT
    • 数据库管理员
    • 数据库对象创建者(即属主Owner)
    • 拥有该权限的用户
  • 按受权限的用户
    • 一个或多个具体用户
    • PUBLIC(即全体用户)

eg:将一种权限授予一个用户。

//把查询Student表权限授给用户U1
GRANT SELECT
ON TABLE Student 
TO U1;

eg:一次向多个用户传播多种同类对象的权限。

//把对Student表和Course表的全部权限授予 用户U2和U3
GRANT ALL PRIVILEGES 
ON TABLE Student, Course 
TO U2, U3;
//把对表SC的查询权限授予所有用户
GRANT SELECT 
ON TABLE SC
TO PUBLIC;

eg:一次完成了对基本表和属性列这些不同对象的授权。

//把查询Student表和修改学生学号的权限授 给用户U4
GRANT UPDATE(Sno), SELECT 
ON TABLE Student
TO U4;
//对属性列的授权时必须明确指出相应属性列名
//把对表SC的INSERT权限授予U5用户, 并允许他再将此权限授予其他用户
GRANT INSERT 
ON TABLE SC
TO U5
WITH GRANT OPTION;

//执行后,U5不仅拥有 了对表SC的INSERT权限,还可以传播此权限
GRANT INSERT 
ON TABLE SC
TO U6
WITH GRANT OPTION;
//同样U6还可以将此权限授予U7
GRANT INSERT 
ON TABLE SC
TO U7; 
//但U7不能再传播此权限。

2.REVOKE

授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
REVOKE语句的一般格式为:

REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]... 
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
//CASCADE:级联回收
//RESTRICT:受限回收
//把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno) 
ON TABLE Student 
FROM U4;
//收回所有用户对表SC的查询权限
REVOKE SELECT 
ON TABLE SC 
FROM PUBLIC;
//把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE ;

//如果系统缺省值为RESTRICT,回收U5的INSERT权限时应该使用CASCADE短语,
//否则拒绝执行该语句

//如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,
//系统只收回直接或间接从U5处获得的权限

数据库角色

使用角色管理数据库权限,可以简化授权和回收的过程。

1.角色的创建

CREATE ROLE <角色名>

2.给角色授权

GRANT <权限>[,<权限>]... 
ON <对象类型>对象名
TO <角色>[,<角色>]...

3.将一个角色授予其他的角色或用户

一个角色的权限:直接授予这 个角色的全部权限加上其他角色授予这个角色的全部权限

GRANT <角色1>[,<角色2>]...
TO <角色3>[,<用户1>]... 
[WITH ADMIN OPTION]
//指定 WITH ADMIN OPTION, 则获得权限的角色或用户还可以把这种权限授予其他角色
//授予者是角色的创建者或拥有在这个角色上的 ADMIN OPTION

4.角色权限的收回

  • 用户可以回收角色的权限,从而修改角色拥有的权限

  • REVOKE执行者是:

    • 角色的创建者
    • 拥有在这个(些)角色上的 ADMIN OPTION
REVOKE <权限>[,<权限>]... 
ON <对象类型> <对象名> 
FROM <角色>[,<角色>]...

eg:通过角色来实现权限管理。 步骤如下:

//(1)首先创建一个角色 R1
CREATE ROLE R1;
//(2)然后使用GRANT语句,使角色R1拥有Student表的 SELECT、UPDATE、INSERT权限
GRANT SELECT, UPDATE, INSERT 
ON TABLE Student
TO R1;
//(3)将这个角色授予王平,张明,赵玲。使他们具有角 色R1所包含的全部权限
GRANT R1
TO 王平,张明,赵玲;
//(4)可以一次性通过R1来回收王平的这3个权限 
REVOKE R1
FROM 王平;

eg:增加角色的权限

//使角色 R1 在原来的基础上增加了 Student 表的 DELETE 权限
GRANT DELETE
ON TABLE Student 
TO R1;

eg:减少角色的权限

//使 R1 减少了 SELECT 权限
REVOKE SELECT 
ON TABLE Student 
FROM R1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值