视图

视图:也称虚表。对应于一条SELECT语句,结果集被赋予了一个名字,即视图名字。

视图本身并不包含任何数据,它只包含映射到基表的一个查询语句。

当修改视图的数据时,基表的数据也会被修改。

视图的作用为:1.限制数据访问权限;2.简化操作


视图的分类:

简单视图:SELECT语句基于单表,且不包含函数、表达式、分组函数,是单表的子集

复杂视图:SELECT语句基于单表,包含函数、表达式、分组函数或GROUP BY子句,必须对其中的表达式或函数定义别名。

连接视图:SELECT语句是基于多个表的


授权创建视图:GRANT  CREATE  VIEW  TO  user

其中user为被授权者


创建视图:CREATE [OR REPCLACE]  VIEW  view_name

                   AS   SELECT语句

其中OR  REPLACE用于修改已创建的视图


查看视图结构 :DSE  view_name  


删除视图:DROP  VIEW  view_name

视图虽然是存放在数据字典中独立存在的对象,但视图仅仅是基于表的一个查询定义,所以对视图的删除不会导致基表中数据丢失,不会影响基表数据。


查询视图与查询表的操作相同,但查询的列名必须和视图中的列名相同,不一定是原表的列名


应当尽量避免对视图进行DML操作,因为几乎不会成功。

简单视图可以执行DML操作,复杂视图不允许执行DML操作。

对视图执行DML操作时,实际上是对基表进行DML操作。必须遵循如下原则:

(1)在基表中定义了非空列,但简单视图对应的SELECT语句并未包含该非空列,则无法执行INSERT操作。

(2)如果视图中包含了函数、表达式、分组语句、DISTINCT或ROWNUM,则不允许执行DML操作。

(3)DML操作不能违反基表约束。


视图约束:

WITH  CHECK  OPTION表示通过视图所做的修改必须在视图可见的范围内

WTIH  READ  ONLY声明视图为只读模式,保证视图所对应的基表数据不会被非法修改


和视图相关的数据字典

(1)USER_OBJECTS

在数据字典USER_OBJECTS中查询所有视图的名称

SELECT  object_name  FROM  user_objects

WHERE  object_type  =  'VIEW'


(2)USER_VIEWS

在数据字典USER_VIEWS中查询指定视图

SELECT  text  FROM  user_views

WHERE  view_name  = ’v_emp_yuan‘

其中v_emp_yuan为指定要查询的视图名


(3)USER_UPDATE_COLUMNS

在数据字典USER_UPDATE_COLUMNS中查询视图中被修改的列

SELECT  column_name,insertable,updatable,deletable

FROM  user_updatable_columns

WHERE table_name = 'v_emp_yuan'

其中v_emp_yuan为指定要查询的视图名


你可能感兴趣的:(JAVA,Oracle)