有哪些在 MySQL 中应用 VIEW 的好例子? [关闭]
Posted
技术标签:
【中文标题】有哪些在 MySQL 中应用 VIEW 的好例子? [关闭]【英文标题】:What are some good examples of applying VIEW in MySQL? [closed] 【发布时间】:2011-03-26 02:52:25 【问题描述】:我读过mysql
的CREATE 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 的好例子? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章