ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第四章例题

2021-04-18 16:01:23  阅读:346  来源: 互联网

标签:INSERT 例题 R1 GRANT Student SC 权限 第四章


SQL中使用GRANT 和 REVOKE语句向用户授予或收回对数据的操作权限。GRANT语句向用户授予权限,REVOKE语句收回已经授予用户的权限。
GRANT语句的一般格式为:

GRANT<权限>[,<权限>]…
ON<对象类型><对象名>[,<对象类型><对象名>]…TO<用户>[,<用户>]…
[WITH GRANT OPTION];

在这里插入图片描述
创建用户报错了, 这是因为应该先点击数据库再在数据库下创建用户而不是直接点安全性创建用户。

[例4.1]一把查询Student表的权限授给用户U1。

grant select
on table Student
to U1;

报错:
在这里插入图片描述
经查验, T-SQL与标准SQL不同, 正确代码为:

grant select
on Student
to U1;

成功了
在这里插入图片描述

[例4.2] 把对Student表和Course表的全部权限授予用户U2和U3

grant all privileges
on Student,Course
to U2,U3;

报错了, 这是因为T-SQL只能grant一张表,所以代码更改如下:

grant all privileges
on Student
to U2,U3;
grant all privileges
on Course
to U2,U3;

warning, 问题不大,仍然可以执行
在这里插入图片描述
在这里插入图片描述

[例4.3] 把对表SC的查询权限授予所有用户

grant select
on SC
to public;

[例4.4] 把查询Student表和修改学生学号的权限授给用户U4

grant update(Sno),select
on Student
to U4;

在这里插入图片描述

这里,实际上要授予U4用户的是对基本表Student的 SELECT 权限和对属性列 Sno的UPDATE权限。对属性列授权时必须明确指出相应的属性列名。

[例4.5]把对表SC 的INSERT权限授予U5用户,并允许将此权限再授予其他用户。

GRANT INSERT ON SC TO U5
WITH GRANT OPTION;

执行此SQL语句后,U5不仅拥有了对表SC的 INSERT 权限,还可以传播此权限,即由U5用户发上述 GRANT 命令给其他用户。
在这里插入图片描述

[例4.6]

GRANT INSERT
ON SC
TO U6
WITH GRANT OPTION;

在这里插入图片描述

[例4.7]

GRANT INSERT
ON SC
TO U7;

因为U6未给U7传播的权限,因此U7不能再传播此权限。

[例4.8] 把用户U4修改学生学号的权限收回。

REVOKE UPDATE(Sno)
ON Student
FROM U4;

[例4.9]收回所有用户对表SC的查询权限。

REVOKE SELECT
ON SC FROM PUBLIC;

[例4.10]把用户U5对 SC表的INSERT权限收回。

REVOKE INSERT
ON SC FROM U5 CASCADE;

将用户U5的 INSERT权限收回的同时,级联(CASCADE)收回了U6和U7的INSERT 权限,否则系统将拒绝执行该命令。因为在例4.6中,U5将对SC表的 INSERT权限授予了U6,而U6又将其授予了U7(例4.7)。

[例4.11]通过角色来实现将一组权限授予一个用户。

步骤如下:
①首先创建一个角色R1。

CREATE ROLE R1;

②然后使用 GRANT 语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限。

GRANT SELECT,UPDATE,INSERT ON Student
TO R1;

③将这个角色授予王平、张明、赵玲,使他们具有角色R1所包含的全部权限。

GRANT R1
TO 王平,张明,赵玲;

报错了。
在这里插入图片描述
修改为:

alter role R1
add member 王平;
alter role R1
add member 张明;
alter role R1
add member 赵玲;

④当然,也可以一次性地通过R1来收回王平的这三个权限。

REVOKE R1
FROM 王平;

又又又报错了
改为:

exec sp_droprolemember 'R1','王平';

[例4.12] 角色的权限修改。

GRANT DELETE
ON Student
TO R1

使角色R1在原来的基础上增加了 Student表的DELETE 权限。

[例4.13]

REVOKE SELECT 
ON Student FROM R1;

使R1减少了SELECT权限。
可以看出,数据库角色是一组权限的集合。使用角色来管理数据库权限可以简化授权的过程,使自主授权的执行更加灵活、方便。
作业太多了(绝望脸)

标签:INSERT,例题,R1,GRANT,Student,SC,权限,第四章
来源: https://blog.csdn.net/qq_45834992/article/details/115768137

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有