当前位置:

sql 视图_Mysql_数据库

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

定义一个视图:

    create view V as <查询语句> 

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;

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

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

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

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

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

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

视图更新
    视图是一张”虚表“,想要这张表支持增删改,却是一个重大的问题。至少目前不能做到

 

 

 

 

评论:

登录后发表评论




2023.01.28 群组聊天