• Oracle视图 create View


    视图是一种虚表,使用CREATE VIEW语句来定义视图,该视图是基于一个或多个表或视图的逻辑表。一个视图本身不包含任何数据, 视图所基于的表称为基表。

    视图就相当于一条select 语句,定义了一个视图就是定义了一个sql语句, 视图不占空间,使用视图不会提高性能,但是能简化sql语句 。

    创建视图:
    create view 视图名;

    如:

    create or replace view  v_test  as select * from test where age=10;
    create or replace: 如果view存在就覆盖,不存在才创建。

    删除视图: 

    drop view 视图名; 

    权限控制:

    要在您自己的模式中创建视图,您必须具有CREATE VIEW系统特权。
    要在其他用户的模式中创建视图,您必须具有CREATE ANY VIEW系统特权。
    包含该视图的模式的所有者必须具有从视图所基于的所有表或视图中选择,插入,更新或删除行所必需的权限。

    详细语句解析:

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

    其中:

    with read only视图只读约束 

    with check option 不允许插入与where条件不符的记录,类似于check约束的功能. 

    通过视图修改数据:

    CREATE VIEW clerk AS SELECT employee_id, last_name, department_id, job_id FROM employees   

       WHERE job_id = 'PU_CLERK' or job_id = 'SH_CLERK' or job_id = 'ST_CLERK';

    使用视图修改基表的数据,只有员工的ID,姓氏,部门号码和职位在该视图中可见,并且这些列只能在雇员是职员的行中更新:

    UPDATE clerk SET job_id = 'PU_MAN' WHERE employee_id = 118;

    有限制的修改:

    连接视图是其视图子查询包含连接的视图。如果联接中至少有一列具有唯一索引,则可以在联接视图中修改一个基表。

    CREATE VIEW locations_view AS

    SELECT d.department_id, d.department_name, l.location_id, l.city 

    FROM departments d, locations l WHERE d.location_id = l.location_id;

    新增记录  INSERT INTO locations_view VALUES(999, 'Entertainment', 87, 'Roma'); 

    系统返回:ERROR at line 1:

    ORA-01776: cannot modify more than one base table through a join view

    可以查询系统表USER_UPDATABLE_COLUMNS,查看连接视图中的列是否可更新。

    SELECT column_name, updatable  FROM user_updatable_columns

    WHERE table_name = 'LOCATIONS_VIEW'    ORDER BY column_name, updatable;

    改成如下语句,操作成功

    INSERT INTO locations_view (department_id, department_name) VALUES (999, 'Entertainment');

    1 row created.

    参考文献

         oracle官网的Oracle11G-en-US.pdf

  • 相关阅读:
    关于对defer的理解.
    JAVA文件操作类和文件夹的操作
    跟我学XSL(一)
    .NET Remoting程序开发入门篇(一)
    jboss配置入门(一)
    SQL2000 关于 Java JDBC 驱动的安装和设定
    XSL基础教程(三)
    利用WSCF进行契约先行的Web Services开发
    Log4Net使用指南
    java存储过程调用(sqlsever数据库)
  • 原文地址:https://www.cnblogs.com/walkwithmonth/p/8017427.html
Copyright © 2020-2023  润新知