文档介绍:数据库系统概论
视图、事务
主讲:刘志鹏
Hello View!
select * from my_contacts natural join job_current;
create view mc as (select * from my_contacts natural join job_current);
select * from mc;
视图(View)
数据库中的视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
,一个视图是从一个特定的角度来查看数据库中的数据。
,一个视图是由SELECT语句组成的查询定义的虚拟表,是由一张或多张表中的数据组成的。
,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等。
视图的作用
看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上。
视图可帮助用户屏蔽真实表结构变化带来的影响。
事务
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)特性。
时间
账户A
账户B
从账户A转账100元到账户B
1
1000
查询账户A余额 1000元
Select sum from A
2
900
从账户A中减去100元
Update A set sum=900
3
100
查询账户B余额100元
Select sum from B
4
200
汇入B账户100元
Update B set sum=200
5
900
200
转账完成!
时间
账户A
账户B
从账户A转账100元到账户B
1
1000
查询账户A余额 1000元
Select sum from A
2
900
从账户A中减去100元
Update A set sum=900
3
100
查询账户B余额100元
Select sum from B
4
意外发生(如停电、网络中断等),后面的更新账户B的操作无法完成
5
系统恢复后
6
100
查询账户B余额100元
Select sum from B
7
900
查询账户A余额 900元
Select sum from A
8
账户A的100元人间蒸发
Hello Transaction!
Set mit = 0;
Start trasaction;
Insert into …..
Insert into …..
Rollback;(Commit;)