oracle中的视图有什么用?

时间:2014-11-21 09:19:29

标签: sql oracle plsql views

为什么我只需要编写一个选择查询就可以创建一个视图? 例如

/
 CREATE OR REPLACE VIEW testview AS SELECT empno,ename,sal FROM emp;
/

而不是这个为什么我不能写一个简单的选择查询,如

/
SELECT empno,ename,sal FROM emp;
/

视图的实际用途是什么。在哪种情况下使用视图?

2 个答案:

答案 0 :(得分:2)

Oracle视图提供了一些令人信服的好处。其中包括:

  • 正在使用的代码的通用性。由于视图基于一组常见的SQL,这意味着当它被调用时,它不太可能需要解析。这是因为调用的基本底层SQL始终是相同的。但是,由于您可以在调用视图时添加其他where子句,因此仍需要使用绑定变量。其他where没有绑定变量的子句仍然可以导致硬分析!

  • 安全。长期以来,视图一直用于隐藏实际包含您要查询的数据的表。此外,视图可用于限制给定用户有权访问的列。在不太复杂的数据库上使用视图来保证安全性可能并不是件坏事。随着数据库变得越来越复杂,这种解决方案变得越来越难以扩展,并且需要其他解决方案。

  • 谓词推动。 Oracle支持将谓词推送到给定视图中。

  • 性能。应该使用它们而不是表格来加快执行速度。

答案 1 :(得分:0)

视图的另一个用途是您可以在其后面存储复杂查询。例如,如果您需要查询来自多个表的数据,则可以更轻松地创建一次视图,以便下次需要该数据时,您不必编写查询来加入那些桌子又来了。相反,您可以只查询视图。

视图不是Oracle的东西,它们在许多(如果不是全部)RDBM系统中都可用。