mySQL基础知识(三)—— 视图

 

1、概念:SQL通过查询定义虚关系,在概念上包含查询的结果。虚关系并不预先计算并存储,而是在使用虚关系的时候才通过执行查询计算出来。不是逻辑模型的一部分,但作为虚关系对用户可见的关系称为视图。视图关系在概念上包含查询结果的元组,但并不进行预计算和存储。当视图关系被访问时,其中的元组是通过计算查询结果被创建出来的。视图关系是在需要的时候才被创建。

2、意义:在任何给定时刻,视图关系中的元组集是该时刻视图定义中的查询表达式的计算结果。如果一个视图关系被计算并存储,一旦用于定义一个视图的关系被修改,视图就会过期。为了避免这一点,当我们定义一个视图时,数据库系统存储视图的定义本身,二部存储定义该视图的查询表达式的执行结果。一旦视图关系出现在查询中,它就被已存储的查询表达式代替。因此,无论我们何时执行这个查询,视图关系都被重新计算。

3、一个视图可以被用到定义另一个视图的表达式中。

物化视图(materialized view):特定数据库系统允许存储视图关系,但它们保证:如果用于定义视图的实际关系改变,视图也跟着修改。

保持物化视图一直在最新状态的过程叫物化视图维护(materialized view maintenance),或视图维修。

4、视图更新:用视图表达的数据库修改必须被翻译为对数据库逻辑模型中实际关系的修改。

处理插入的方法:拒绝插入,并向用户返回一个错误消息;向实际关系中插入完整元组,缺失值用null。若缺失为主键,则无用,除了一些有限的情况之外,一般不允许对视图关系进行修改。

一般来说,如果定义视图的查询对下列条件都能满足,则SQL视图时可更新的(updatable)(视图上可以执行插入、更新或删除) with check option:

i:from子句中只有一个数据库关系

ii:select子句中只包含关系的属性名,不包含任何表达式、聚集或distinct声明

iii:任何没有出现在select子句中的属性可以取空值,这些属性没有not null的约束,也不构成主码的一部分

iiii:查询中不含有group by或having子句

5、事务(transaction):由查询和更新语句的序列组成。SQL标准规定当一条SQL语句被执行,就隐式地开始了一个事务。结束事务:

commit work:提交当前事务,将该事务所做的更新在数据库中持久保存。在事务被提交后,一个新的事务自动开始

rollback work:回滚当前事务,撤销事务中所有SQL语句对数据库的更新。数据库恢复到执行该事务第一条语句之前的状态。

一个事务或者完成所有步骤后提交其行为,或者在不能完成其所有动作的情况下回滚其所有动作,这种方式数据库提供了对事物具有原子性的抽象,原子性也就是不可分割性。要么事务的所有影响将被反映到数据库中,要么任何影响都没有(在回滚后)。

6、完整性约束:保证授权用户对数据库所做的修改不会破坏数据的一致性。防止的是对数据的意外破坏。

not null

unique

check

7、参照完整性(referential integrity):一个关系中给定属性集上的取值也在另一关系的特定属性集的取值中出现。

当违反参照完整性约束时,通常的处理时拒绝执行导致完整性破坏的操作(进行更新事务被回滚),但是,在foreign key 中可指明:如果被参照关系上的删除或更新动作违反了约束,那么系统必须采取一些步骤通过修改参照关系中的元组来恢复完整性约束,而不是拒绝这样的动作。

8、事务中对完整性约束的违反

约束延迟:事务完成后检查完整性约束  set constraints XXX deferred

断言:就是一个谓词,数据库总能满足一个条件。(域约束,参照完整性约束)

9、用户定义数据类型:

独特类型(distinct type):

结构化数据类型:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值