因为我总是可以使用原始表中的Select语句而不是创建视图并使用select来自它,我想知道在数据库中使用视图有什么好处?
答案 0 :(得分:13)
它简化了调用并提供了一个间接层。
因此,如果您有一个包含大量连接的复杂选择,则可以在视图中实现它,只需调用视图而无需考虑所有这些连接。然后,您可以重复使用此视图。
此外,如果您以这种方式使用视图而不是表格,将来如果您需要迁移列,则可以轻松地执行此操作,并且只需要更改视图。
答案 1 :(得分:3)
除了Oded提到的明显好处之外,您有时可以使用materialized views大幅提高速度。来自维基百科:
在遵循关系模型的数据库管理系统中,视图是表示数据库查询结果的虚拟表。每当查询或更新普通视图的表时,DBMS都会将这些表转换为针对底层基表的查询或更新。物化视图采用不同的方法,其中查询结果被缓存为可以不时从原始基表更新的具体表。
答案 2 :(得分:2)
有几种,但我认为主要的好处是视图是逻辑数据独立性的SQL实现。
构建可更新的视图,使用该视图的应用程序相对不受基础表中的更改的影响。更改基础表的结构,更新视图定义,并且所有应用程序都像没有发生任何事情一样工作。 (在旧数据库中,可能有数百种应用程序用数十种语言编写。这就是大获胜。)
其他好处(释义Chris Date)
隐藏数据的“自动”安全性。限制对视图的访问权限,并且您可以对谁看到什么进行细致的控制。
应用程序的“DRY”功能。视图可以为复杂的SELECT语句提供简单的公共接口,因此应用程序可以只SELECT column-list FROM my-easy-view
。
不同的用户可以通过不同的方式查看相同的数据。