zoukankan      html  css  js  c++  java
  • oracle之视图

    视图

    13.1 为什么使用视图

    1)限制数据的存取:用户只能看到基表的部分信息。方法:赋予用户访问视图对象的权限,而不是表的对象权限。
    2)使得复杂的查询变得容易(内联视图):
    3)提供数据的独立性

    13.2 简单视图和复杂视图

    特性        简单视图        复杂视图
    --------------------------------------------
    表的个数        一个        一个或多个
    含函数        无        有
    含组函数        无        有
    含DISTINCT          无                  有
    DML操作             可以        不一定

    13.2 语法
    CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
      [(alias[, alias]...)]
    AS subquery
    [WITH CHECK OPTION [CONSTRAINT constraint]]
    [WITH READ ONLY];

    13.2.1 FORCE作用:可以先建视图,后建基表

    create force view view1 as select * from test1;

    13.2.2 WITH CHECK OPTION作用:对视图where子句进行约束,使视图结果集保持稳定。

    SQL>create view view2 as select * from emp where deptno=10 with check option;

    insert 不许插入非10号部门的记录
    update 不许将10号部门修改为其他部门

    13.2.3 WITH READ ONLY作用:禁止对视图执行DML操作

    SQL>create view view3 as select * from emp where deptno=10 with read only;

    13.2.4 关于视图注意事项(考点)

    1)只要视图中的数据不是来自基表的原始数据,就尽量不要对该视图做DML操作。
    2)视图的DML操作
    含有如下情况,则不能删除视图中的数据:
    含有聚合函数
    含有GROUP BY 子句
    含有 DISTINCT 关键字
    含有ROWNUM 这个伪列

    含有如下情况,不能修改该视图中的数据:
    上面提到的任何一种情况。
    列是由表达式来进行定义的

    含有如下情况,不能增加该视图中的数据:
    上面提到的任何一种情况。
    在基表中包含有 NOT NULL约束的列,然而该列并没有在视图中出现

    13.3 复杂视图的更新,键保留表概念。

    select * from user_views
    -----------------------------------------------------------------------------

    如果建立了视图 想查看其中的定义,可以访问如下视图dba_views中的text字段(long型);

    自建一pl/sql过程,参照一下。

    declare
    v_text  dba_views.text%type;
    v_name  dba_views.view_name%type;
    begin
    select text, view_name into v_text,v_name FROM dba_views WHERE view_name='V1';
    dbms_output.put_line(v_name||' define is :'||v_text);
    end;
    /

  • 相关阅读:
    java实现同步的两种方式
    JAVA线程概念
    XML基础总结
    JAVA使用和操作properties文件
    JAVA序列化基础知识
    easyui 在编辑状态下,动态修改其他列值。
    Activiti初学问题,求解
    java web--DOM
    java web(1)
    Java WEB
  • 原文地址:https://www.cnblogs.com/jinxf/p/9166155.html
Copyright © 2011-2022 走看看