视图

概念:视图是逻辑上来自一个或多个表的数据集合。
为什么使用视图:

  1. 限制其它用户对数据库表的访问,因为视图可以 有选择性的显示数据库表的一部分;

  2. 容易实现复杂的查询;

  3. 对于相同的数据可以产生不同的视图;

    简单视图和复杂视图的的区别

    创建视图

    CREATE [OR REPLACE] [FORCE|NOFORCE]
    VIEW viewname
    [(column[,column]…)]
    AS subquery
    [WITH CHECK OPTION [CONSTRAINT constraintname]]
    [WITH READ ONLY]

注:
·OR REPLACE:如果所创建的视图已经存在,该选项表示修改原视图的定义;
·FORCE:不管视图所基于的基表是否存在,都会创建该视图;
·NOFORCE:只有视图所基于的基表都存在,才会创建该视图;
·viewname:视图的名称;
·column:列名,列名的数量必须和视图所对应查询语句的列数量相等;
·subquery:一条完整的SELECT语句;
·WITH CHECK OPTION:一个约束条件,通过视图所插入或修改的数据行必须满足视图所定义的查询;constraintname:约束名;
·WITH READ ONLY:确保在该视图上不能进行任何DML操作;

在SQL PLUS中,可以使用DESC命令显示视图的结构。

DESC 视图名;

修改视图

关键词:CREATE OR REPLACE VIEW(创建或替换视图)
注意:CREATE VIEW子句中别名的顺序必须和内部查询中的列的顺序一一对应。

DML操作

可以通过视图进行DML操作,但是有很多前提:

  1. 视图中不出现GROUP函数、GROUP BY子句,DISTINCT关键字

  2. 使用表达式定义的列

  3. ROWNUM伪列

  4. 单表

  5. 基表中未在视图中选择的其它列定义为非空并且没有默认值;

    拒绝DML操作

    在视图定义时使用WITH READ ONLY后,就不能对视图执行DML操作。

    删除视图

    DROP VIEW viewname;