您的位置:首页 > 数据库

sql 视图

2016-05-12 00:00 260 查看
view
直接对某张表的操作,就是在对数据库系统的逻辑模型层的操作。但让所有用户都看到整个逻辑模型是不合适的。出于安全的考虑,如会隐藏某个属性。这时就需要这种‘虚表’,它向用户透露一部分的数据,它不属于逻辑模型层的。我们称它为视图。视图并不是预先计算并存储的,而是在使用的时候才通过执行查询被计算出来

定义一个视图:

create view V as <查询语句>

[code=plain]create view stuent_view as
select a.*,b.name as gradeName  from
student a  join
grade b on a.gradeId = b.id
where a.age>20;

存在的视图也可以用来定义另一个视图

视图维护
为保证视图中数据的一致性,必需有一些的策略对其进行维护

第一种,数据库系统仅仅只是存储视图的查询表达式。当真正的用到该视图时才去执行这个查询。这种方式保证了数据的一致,但是如果频繁使用该视图,这种方式就不如直接存储视图内容来的划算。

第二种,数据库系统直接存储视图的内容。为保证数据的一致性,就要求在逻辑视图更新后,相应的视图也要即时的更新。同时暴露的问题就是,如果逻辑层更新频繁,那么视图也会跟着更新。最差的情况是,你还不怎么用这个视图。

第三种,存储内容后定期的更新视图。这种似乎综合上面两种方案。但有个致命的点是,你没法保证视图中的数据是最新的。

使用哪种方式,不仅要根据情况来定。而且最重要的是,数据库系统是否支持你使用以上三种的维护方式

视图更新
视图是一张”虚表“,想要这张表支持增删改,却是一个重大的问题。至少目前不能做到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: