您的位置:首页 > 数据库

关系型数据库之视图与规则

2014-05-02 13:29 211 查看

1 视图

视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,与基本表不同的是,视图是一个虚表。

定义视图:



这样,你就可以像查询其他表一样查询视图,但是我们能直接更新视图。

2 规则

规则是对如何修改解析过的查询树的描述。数据库引擎每次运行一条sql,他将语句解析成查询树(一般称为抽象语法树)。

树的枝和叶是运算符和值,在执行前,树会被遍历/删减,并以其他方式修改。这棵树可以被规则重写,然后发送到查询规划器(它也以某种方式重写这棵树,以达到优化性能运行效果),最后会把最终的命令发送到执行器。




3 视图 VS 规则

3.1 视图的查询 VS 规则
视图也是一种规则,因为他也重写查询树,将对视图的查询转化为对视图中定义的sql的查询。

我们使用EXPLAIN命令来查看holidays视图的执行计划。




它与holidays视图定义的sql的执行计划是一样的。




3.2 更新视图 VS 视图
为了允许更新holidays视图,需要定义一条规则,告诉数据库引擎在UPDATE时做什么操作。规则将捕捉对holidays视图的更新,从NEW与OLD的伪关系取值,并在events上执行更新。NEW看作是包含即将更新的值的表,而OLD则是包含查询的值。

实际上,规则会将对holidays的更新转换为对events的更新。

创建规则:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: