【利用SQL语言实现数据库自主安全性,安全型控制的其他简介,嵌入式SQL语言概述】

一、利用SQL语言实现数据库自主安全性

1.SQL语言的用户与权利

1.超级用户(DBA)→账户级别(程序员用户)→关系级别(普通用户)

  • (级别一)Select :读(读DB,Table,Record,Attribute,…)
  • (级别二)Modify :更新
    Insert:插入(插入新元组,…)
    Update:更新(更新元组中的某些值,…)
    Delete:删除(删除元组,…)
  • (级别三) Create:创建(创建空间,模式,表,索引,视图等)
    Create:创建
    Alter:更新
    Drop:删除
    2.级别高的权利自动包含级别低的权利。

2.SQL-DCL的命令及其应用

授权命令
Grant {all previleges}
ON [TABLE] tablename
TO {user-id}
[WITH GRANT OPTION];

  • user-id,某一个用户账户,由DBA创建的合法账户。
  • public,允许所有有效用户使用授予的权利。
  • privilege是以下权利:SELECT|INSERT|UPDATE|DELETE|ALL PRIVILEGES.
  • WITH GRANT OPTION选项是允许被授权者传播这些权利。
    示例:在这里插入图片描述

SQL-DCL的控制安全性示例

收回授权命令
REVOKE{all privilege}
ON tablename|viewname
FROM{user};
示例:在这里插入图片描述

二、安全型控制的其他简介

1.自主安全性的授权过程及其问题

授权过程
第一步:DBM创建DB,并为每一个用户创建一个账户。
在这里插入图片描述

第二步:DBA授予某用户账户级别的权利。
在这里插入图片描述

第三步:具有账户级别用户可以创建基本表或视图,他也自动成为该表或视图的属主账户,拥有该表或该视图的访问权利。
在这里插入图片描述

第四步:拥有属主账户的用户可以将其中一部分权利授予另外的用户,该用户也可将2权利进一步授权给其他用户。
在这里插入图片描述
注意授权范的传播范围:
在这里插入图片描述

传播范围包括两个方面:

  • 水平传播数量是授权者的再授权者用户数目(树的广度)
  • 垂直传播数量是授权者传播给被授权者,再被传播另一个被授权者(树的深度)
    有些系统提供了传播范围控制,有些系统并没有提供,SQL标准中并没有限制。

三、嵌入式SQL语言概述

1.交互式SQL语言的局限

从SQL本身角度
特别复杂的检索结果难以用一条交互式SQL语句完成,此时需要结合高级语言经常出现的顺序,分支和循环结构来帮助处理。

2.嵌入式SQL语言与交互式SQL语言的对比

示例:交互式SQL语言
select Sname,Sage form Student where Sname=‘张三’;
示例:嵌入式交互语言
以宿主语言C语言为例”
exec sql select Sname,Sage into:vSname,:vSage from
Student where Sname=‘张三’;
典型特点

  • exec sql 引导SQL语句:提供给C编译器,以便对SQL语句预编译成C编译器可识别的样子。
  • into语句用来指出接收SQL语句检索结果的程序变量。
  • 有冒号引导的程序变量:‘:vSname’,‘:vSage’。在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值