oracle中的视图

一、相关概念理解

    表:基本的数据存储集合,由列和行组成

    视图:从表中抽出逻辑上相关的数据集合

    序列:提供有规律的数值

    索引:建立索引查询效率更高

1.为什么使用视图:控制数据的访问,简化查询,数据的独立性,避免重复访问相同的数据

2.视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。

3.视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。

二、视图的作用

用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。

视图常见的用途如下:

  通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制

  隐藏数据复杂性

  视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。此视图就对用户隐藏了数据来源于多个表的事实。 

三、简化用户的SQL 语句

  用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。
 
  以不同的角度来显示基表中的数据

  视图的列名可以被任意改变,而不会影响此视图的基表
 
  使应用程序不会受基表定义改变的影响

  在一个视图的定义中查询了一个包含4 个数据列的基表中的3 列。当基表中添加了新的列后,由于视图的定义并没有被影响,因此使用此视图的应用程序也不会被影响。

四、保存复杂查询

  一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。
  逻辑数据独立性

  视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

五、视图的依赖性

  由于视图的定义是一个引用了其他对象(表,视图)的查询,因此视图依赖于其所引用的对象。Oracle 会自动地处理视图的依赖性。例如,当用户移除了一个视图的基表后再重建此表,Oracle 将检查新的基表是否符合视图的定义并判断视图的有效性。  

6.可更新的连接视图

  连接视图是指在一个视图的定义查询的from字句中引用了多个表或视图。而可更新的连接视图是指能够执行 UPDATE,INSERT,和 DELETE 操作的连接视图。为了保证视图是可更新的,其定义中不能包含以下语法结构:

  集合操作符
  DISTINCT 操作符
  聚合函数或分析型函数
  GROUP BY,ORDER BY,CONNECT BY,或 START WITH 字句
  在 SELECT 之后的列表中使用集合表达式
  在 SELECT 之后的列表中使用子查询
  连接(join)(但是有例外情况)
  对于不可更新的视图,可以利用 INSTEAD OF 触发器对其数据进行修改。

视图相关的语法:

      

    

原文地址:https://www.cnblogs.com/mauan/p/7232178.html