`
xkorey
  • 浏览: 153499 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

oracle view

阅读更多
本人初学Oracle,冒昧的把自己归为Oracle一族,没别的意思,只是想激励自己好好的学习Oracle这个博大精深的数据库。

前面的先不说了,从视图开始吧!

Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。

    视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。

    视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。

视图的优点:

      1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。

      2.用户通过简单的查询可以从复杂查询中得到结果。

      3.维护数据的独立性,试图可从多个表检索数据。

      4.对于相同的数据可产生不同的视图。

视图分为简单视图和复杂视图:

      简单视图只从单表里获取数据
      复杂视图从多表

      简单视图不包含函数和数据组
      复杂视图包含

     简单视图可以实现DML操作
     复杂视图不可以.

视图的创建:

    CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name

  [(alias[, alias]...)]

  AS subquery
  [WITH CHECK OPTION [CONSTRAINT constraint]]
  [WITH READ ONLY]
其中:
OR REPLACE    :若所创建的试图已经存在,ORACLE自动重建该视图;
FORCE              :不管基表是否存在ORACLE都会自动创建该视图;
NOFORCE         :只有基表都存在ORACLE才会创建该视图:
alias                   :为视图产生的列定义的别名;
subquery           :一条完整的SELECT语句,可以在该语句中定义别名;
WITH CHECK  OPTION :
                            插入或修改的数据行必须满足视图定义的约束;
WITH READ ONLY :
                           该视图上不能进行任何DML操作。
例如:
       CREATE  OR  REPLACE  VIEW  dept_sum_vw
               (name,minsal,maxsal,avgsal)
       AS  SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
       FROM    emp e,dept d
       WHERE  e.deptno=d.deptno
       GROUP  BY  d.dname;

视图的定义原则:
       1.视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询;
       2.在没有WITH CHECK OPTION和 READ ONLY 的情况下,查询中不能使用
          ORDER BY 子句;
       3.如果没有为CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn;
       4.OR REPLACE选项可以不删除原视图便可更改其定义并重建,或重新授予对象
          权限。

视图的查询:
          视图创建成功后,可以从视图中检索数据,这点和从表中检索数据一样。
          还可以查询视图的全部信息和指定的数据行和列。
   如:

         检索数据:
          SQL>SELECT * FROM  dept_sum_vw;

         查询视图定义:
         SELECT view_name,text  from user_views;
            其中text显示的内容为视图定义的SELECT语句,可通过DESC USER_VIEWS
            得到相关信息。

修改视图:
        通过OR REPLACE 重新创建同名视图即可。

视图上的DML 操作:
        DML操作应遵循的原则:
        1.简单视图可以执行DML操作;
        2.在视图包含GROUP 函数,GROUP BY子句,DISTINCT关键字时不能
           删除数据行;
        3.在视图不出现下列情况时可通过视图修改基表数据或插入数据:
            a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字;
            b.使用表达式定义的列;
            c.ROWNUM伪列。
            d.基表中未在视图中选择的其他列定义为非空且无默认值。


视图可用于保持数据库的完整性,但作用有限。
通过视图执行引用完整性约束可在数据库级执行约束。

WITH CHECK OPTION 子句限定:
         通过视图执行的INSERTS和UPDATES操作不能创建该视图检索不到的数据行,
         因为它会对插入或修改的数据行执行完整性约束和数据有效性检查。
  例如:
           CREATE OR REPLACE VIEW  vw_emp20
           AS  SELECT *  FROM  emp
           WHERE  deptno=20
           WITH CHECK OPTION constraint  vw_emp20_ck;
          视图 已建立。

            查询结果:
           SELECT empno,ename,job FROM vw_emp20;
          
          EMPNO                ENAME                JOB
---------------------           --------------          -------------
              7369                 SMITH                CLERK
              7566                 JONES               MANAGER
              7902                 FORD                ANALYST

          修改:
                UPDATE vw_emp20
                SET        deptno=20
                WHERE   empno=7902;
           将产生错误:
               UPDATE vw_emp20
                              *
               ERROR 位于第一行:
               ORA-01402:视图WITH CHECK OPTION 违反WHERE 子句

视图的删除:
            DROP VIEW  VIEW_NAME语句删除视图。
            删除视图的定义不影响基表中的数据。
            只有视图所有者和具备DROP VIEW权限的用户可以删除视图。
            视图被删除后,基于被删除视图的其他视图或应用将无效。
分享到:
评论

相关推荐

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    一、课程用到的软件:oracle 11g 二、课程目标: ...第十五讲:oracle view管理 第十六讲:oracle sequences管理 第十七讲:oracle 触发器管理 第十八讲:oracle 用户管理 第十九讲:oracle 安装部署管理

    ORACLE_视图的_with_check_option.doc

    Oracle中的`WITH CHECK OPTION`是视图创建时的一个重要特性,用于限制对视图的数据修改操作,确保修改后的数据仍然符合视图的定义条件。这个选项使得视图不仅仅是查询的工具,也成为了一种数据安全控制手段,防止...

    oracle的一些相关网页介绍

    在"oracle view - - ITeye技术网站.mht"中,可能包含了视图的创建、查询和管理,以及视图在数据抽象、权限控制和简化复杂查询方面的应用。 4. **序列(Sequence)**: Oracle序列是一种自动增长的数字序列生成器,...

    Oracle_View视图创建

    ### Oracle视图创建详解 #### 一、前提条件与背景介绍 在Oracle数据库环境中,我们已经建立了两张表:`rt_issuesect` 和 `roadstate`。为了更好地管理和查询这两张表的数据,本教程将详细介绍如何利用Oracle的视图...

    SmartView最新版

    Oracle Smart View for Office是一款专为Microsoft Office设计的插件,旨在提供与Oracle Hyperion分析工具的无缝集成。这款最新的23.100版本是Oracle持续优化和增强用户体验的成果,发布日期为2023年6月16日。在本文...

    list_view打包存储oracle数据库

    本篇将详细探讨如何将`list_view`中的字段快速打包并存储到Oracle数据库,以及如何利用公用方法进行调用。 首先,`list_view`通常指的是在用户界面中展示数据的一种视图组件,它允许用户以列表形式查看和操作数据。...

    Oracle Smart View for Office-crx插件

    显示Oracle Smart View内容。 支持Smart View 11.1.2.5.720或更高版本 如果从包含Oracle Smart View数据的MS Office文档中在浏览器中打开Oracle EPM应用程序,反之亦然,则需要此扩展名。 它用作在Oracle Smart View...

    oracle materialized view

    Oracle物化视图是一种在数据库中预先计算并存储查询结果的数据库对象,它提供了一种高效的数据汇总和数据复制机制。物化视图是远程数据的本地副本,用于提高查询性能,尤其是在数据仓库环境中,通过预计算汇总数据,...

    oracle 视图,函数,过程,触发器自动编译脚本

    在日常管理维护Oracle数据库服务器的过程中,我们经常会遇到需要修改视图(View)、表(Table)结构的情况。由于Oracle中的视图、函数(Function)、存储过程(Procedure)等对象之间存在着复杂的依赖关系,因此当...

    oracle essbase and oracle olap

    5. **用户友好**:提供了多种用户界面工具,如 Hyperion Interactive Reporting 和 SmartView,让用户能够轻松创建报告和仪表板。 Oracle OLAP,即 Oracle Database OLAP Option,是嵌入在 Oracle 数据库中的在线...

    Oracle创建视图(View)

    视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。 视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。 视图的优点: 1.对数据库的...

    oracle中文乱码的解决方法

    在Oracle数据库环境中遇到中文乱码问题,通常是由于字符集不匹配导致的。Oracle数据库的字符集设置、操作系统环境变量以及应用程序的配置之间需要保持一致,才能正确地处理和显示中文字符。以下是一些关于如何解决...

    如何在Oracle或SQLServer中对视图(view)加密以保护视图中的SQL代码?

    因Oracle暂不支持对视图(View)的加密,在实际工作中有时需提供给第三方只读账户,为保护知识产权,可用文中所述方法防止第三方账户查看视图(View)中的SQL代码。

    Oracle JDeveloper与Oracle数据库

    - **View**:视图是基于一个或多个表的虚拟表,可以用来简化复杂的查询语句。 - **Procedure**:存储过程是一种预先定义并编译好的SQL程序,可以接受参数并返回结果。 ##### 2. 查看表数据 通过展开表组件,可以...

    Oracle2Oracle数据同步

    4. **Materialized View**:物化视图是一种预先计算好的查询结果,存储在本地数据库中,可以定期或实时从源数据库刷新。适合定期同步且不需要实时更新的场景。 5. **Database Replication**:Oracle的内置复制功能...

    oracle基础教程

    1.3.4 视图(View) 18 1.3.5 索引(Index) 18 1.3.6 同义词(Synonym) 19 1.3.7 序列(Sequence) 19 1.3.8 数据库链(Database Link) 20 第2章 管理ORACLE数据库 21 2.1 基本概念 21 2.1.1 数据字典 21 2.1.2 ...

    oracle10g数据导入到oracle9i解决方案

    CREATE OR REPLACE VIEW exu9tne (tsno, fileno, blockno, length) AS SELECT ts#, segfile#, segblock#, length FROM sys.uet$ WHERE ext# = 1 UNION ALL SELECT * FROM SYS.EXU9TNEB; ``` - **确保视图...

    通过MSQL通过视图访问ORACLE中的表

    在IT行业中,数据库管理系统(DBMS)如MySQL和Oracle在数据存储和管理方面扮演着重要角色。当企业或组织需要整合来自不同DBMS的数据时,跨数据库查询技术就显得尤为重要。本篇主要介绍如何通过MySQL数据库创建视图来...

Global site tag (gtag.js) - Google Analytics