在MySQL中应用VIEW的一些好例子是什么?

时间:2011-03-26 02:52:26

标签: mysql sql view

我已阅读CREATE VIEW的{​​{1}}语法,但从未在实践中使用过它。

请给我看一些其应用的例子。

2 个答案:

答案 0 :(得分:4)

非物化视图实际上是一个宏 - 引用视图意味着它包含的查询在视图引用位置使用。 IE:

CREATE VIEW your_vw AS
   SELECT *
     FROM EMPLOYEES

此:

SELECT * FROM your_vw

...将返回与您使用的结果集匹配的结果集:

SELECT x.*
  FROM (SELECT *
          FROM EMPLOYEES) x

我提到了非物化,但MySQL不支持物化视图。其他数据库(Oracle,SQL Server称之为“索引视图”,DB2)支持物化视图,但这不是问题。从现在开始,我只会在撰写关于观点的内容时谈论非实体化的观点。

视图用于封装/抽象 - 除非用户具有访问权限,否则他们无法看到视图的基础查询是什么。这取决于具体情况的好/坏 - 如果您担心提供数据模型信息,那就太好了;在大多数其他情况下不好。在视图中使用ORDER BY是不好的,因为它需要资源来应用订单,由于封装/抽象,其他人可能会应用订单 - 这是浪费资源。分层视图(基于视图构建的视图)也是另一种不好的做法 - 在视图运行之前不会出现错误。

用于提供对数据的访问而不需要授予对表的访问权限的视图,但它们已经发展为支持更新基础表。我更愿意为这种情况授予对表格的访问权限。

答案 1 :(得分:2)

无论RDBMS如何,View都用于简化或限制对基础表的访问。

一个例子是更改列的名称,以便最终用户更容易理解和使用它们,并且对连接进行非规范化处理。

另一种方法是阻止访问敏感信息(例如工资单):从表中删除所有权限,并通过视图提供受控访问权。