在上一节存取控制部分
我们学习了存取控制
包括自主存取控制和强制存取控制
这一节我们
来学习4.2.3自主存取控制的方法
大型数据库管理系统
都支持自主存取控制
SQL标准也对自主存取控制提供了支持
主要是通过
SQL语言的GRANT语句
和REWOKE语句来实现
GRANT是表示授权
REVOKE是收回授权
用户权限
是由两个要素组成
包括数据库对象和操作类型
定义一个用户的存取权限
就是要定义这个用户可以在哪些数据对象上
进行哪些类型的操作
包括两种要素
数据对象和操作类型
在数据库系统中定义存取权限
称为授权
Authorization
授权
在非关系系统中
用户只能对数据进行操作
存取控制的数据库对象也仅限于数据本身
在关系数据库系统中
存取控制的对象
不仅有数据本身
还包括数据库模式
表4.2.3中
列出了关系数据库中
主要的存取控制对象
数据主要是
基本表中的数据
还有属性列上的数据
包括基本表和视图
存取控制的操作
就是表格后面给的这些
查询
插入
更新
删除
引用
还有
全部的权限的给予
这些我们后面会详细的讲
属性列上的操作
也类似
还有就是支持对数据库模式的存取控制
包括
对这些存取控制操作的权限的控制
有创建模式
创建基本表
CREATE TABLE
还有更新表
ALTER TABLE
视图
CREATE VIEW
还有创建索引
CREATE INDEX
这些
也可以控制相应的存取权限
关于列的存取控制
UPDATE和INSERT
我们已经在第三章中通过例子都详细的学习过
需要说明的是
对列的UPDATE权限
只对于表中存在的某一列的值可以进行修改
有了这个权限之后
在修改的过程中还是要遵守
表在创建时定义的完整性约束条件
包括主码
及其他的约束条件
不是说有了权限之后
其他的限制就不用遵守了
列上的INSERT权限
指用户可以插入一个元组
对于插入的元组
授权用户可以插入指定的值
其他的猎呢或者为空或者为默认值
在给用户授予列INSERT权限时
一定要包含主码的INSERT权限
否则
用户的插入操作会因为主码为空
而被拒绝
也就是如果
对主码没有操作权限
就会与主码
实体完整性约束条件
相违背
这里是需要强调