有哪些在 MySQL 中应用 VIEW 的好例子? [关闭]

Posted

技术标签:

【中文标题】有哪些在 MySQL 中应用 VIEW 的好例子? [关闭]【英文标题】:What are some good examples of applying VIEW in MySQL? [closed] 【发布时间】:2011-03-26 02:52:25 【问题描述】:

我读过mysqlCREATE VIEW 语法,但从未在实践中使用过。

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

【问题讨论】:

除了给定的答案之外,我还想展示一篇文章:oraclesolved.com/general/Q_25482999-Reasons-for-using-views.jsp PS:当我阅读那篇文章并将其添加到我的书签时,无需任何注册即可阅读:-S 【参考方案1】:

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

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 是不好的,因为它需要资源来应用订单,由于封装/抽象,其他人可能会将订单应用到 - 这是资源的浪费。分层视图(基于视图构建的视图)也是另一种不好的做法 - 在视图运行之前不会出现错误。

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

【讨论】:

【参考方案2】:

不管 RDBMS 是什么,视图都用于简化或限制对基础表的访问。

一个示例是更改列的名称以使最终用户更容易理解和使用它们,以及非规范化连接。

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

【讨论】:

视图可以更新 - MySQL,Oracle 和 SQL Server 支持该功能。 @OMG 小马:当然。我希望没有给人留下他们不可能的印象。我提供了一个可能不存在的示例。

以上是关于有哪些在 MySQL 中应用 VIEW 的好例子? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

有哪些学习人工神经网络的好资源? [关闭]

我在哪里可以找到一些 DDD 的好例子? [关闭]

在这个例子中避免使用 iterrows 的好方法是啥?

有人知道功能测试 Python Tkinter 应用程序的好例子吗?

人工智能技术能够解决商业问题的例子都有哪些?

有哪些好的数据库入门书籍推荐