视图是数据库中特有的对象,视图用于存储查询,但不会存储数据(物化视图除外)。这是视图和数据表的重要区别。Oracle中有4种视图:关系视图、内嵌视图、对象视图和物化视图。

  1、关系视图

  1>、创建视图

CREATE VIEW VW_EMPLOYEE
AS
SELECT EMP_ID,EMP_NAME FROM EMPLOYEES

  2>、查看视图定义

SELECT TEXT FROM USER_VIEWS WHERE VIEW_NAME = 'VW_EMPLOYEE'

  3>、查看视图内容

SELECT * FROM VW_EMPLOYEE

  4>、修改视图

CREATE OR REPLACE VIEW VW_EMPLOYEE
AS
SELECT EMP_ID,EMP_NAME FROM EMPLOYEES

  5>、删除视图

DROP VIEW VW_EMPLOYEE

  6>、编译视图

ALTER VIEW VW_EMPLOYEE COMPILE

  2、内嵌视图

  内嵌视图也是视图,只是不会使用CREATE VIEW进行显示创建。一般情况下,被嵌套在查询语句中使用,因此称为内嵌视图。其功能类似于子查询。

SELECT * FROM ( SELECT EMP_ID,EMP_NAME FROM EMPLOYEES ) WHERE ROWNUM <= 3

  3、对象视图

  对象视图以对象的方式进行数据存储,是对对象的查询。对象视图是基于对象类型来创建的,因此,创建对象视图之前需要先创建对象类型。

  1>、创建对象类型

CREATE TYPE EMPLOYEE IS OBJECT
(
EMP_ID NUMBER,
EMP_NAME VARCHAR2(20),
SALARY NUMVER
)

  CREATE TYPE用于创建新的类型,EMPLOYEE指定了新类型的名称,IS OBJECT表示类型为一个对象,( EMP_ID NUMBER, EMP_NAME VARCHAR2(20),SALARY NUMVER )为对象类型中各属性的具体定义。

  2>、创建对象视图

CREATE OR REPLACE VIEW OV_EMPLOYEES
OF EMPLOYEE
WITH OBJECT OID(EMP_ID)
AS
SELECT EMPLOYEE_ID,EMPLOYEE_NAME SALARY FROM EMPLOYEES

  CREATE OR REPLACE VIEW用于创建或者替换一个视图;OV_EMPLOYEES标识了新视图的名称,OV前缀表示该视图是一个对象视图;OF EMPLOYEE表示新视图是基于对象类型EMPLOYEE;WITH OBJECT OID用于标识对象中的主键,该主键是EMP_ID属性。

  3>、查看对象视图

DESC OV_EMPLOYEES
SELECT VIEW_NAME,VIEW_TYPE,OID_TEXT
FROM USER_VIEWS
WHERE VIEW_NAME = 'OV_EMPLOYEES'

  4>、查询对象视图

SELECT * FROM OV_EMPLOYEES

  4、物化视图

  前面三种视图:关系视图、内嵌视图和对象视图,实际都是通过定制查询并利用查询定义来获取数据。三种视图都不会直接存储数据,每次操作时,都会进行编译。物化视图存储实际数据,会占用一定的数据库空间。其更接近于临时表,但不像临时表那样在某个特定的时机会删除数据。物化视图中的数据是可重用的,经常应用于读取频繁的场合。

  物化视图对于大数据表的处理显得尤为重要。为了统计一个拥有百万级记录的数据表的总和及平均值问题,将耗费大量数据库资源和时间。可以通过物化视图进行改善,对表进行一次统计,并将统计结果存储在物化视图中,以后每次直接查询该视图即可。但是物化视图并不适合统计更新频繁的数据,因为每次的更新都连带更新物化视图,所付出的代价很大。

  1>、创建物化视图

CREATE MATERIALIZED VIEW MV_MONTHLY_SALES
BUILD IMMEDIATE
REFRESH ON COMMIT
ENABLE QUERY REWRITE
AS
SELECT SALE_MONTH,SUM(PRICE * QUANTITY)
FROM SALES_ORDERS
GROUP BY SALE_MONTH

  CREATE MATERIALIZED VIEW用于创建物化视图,物化视图没有REPLACE选项;BUILD IMMEDIATE要求Oracle立即编译视图;REFRESH ON COMMIT要求Oracle数据库一旦基础表的修改被提交,应自动更新视图,以便保持视图的数据和基础表一致;ENABLE QUERY REWRITE表示启用查询重新功能。

  2>、查询物化视图

SELECT * FROM MV_MONTHLY_SALES

  3>、查看物化视图

SELECT MVIEW_NAME,QUERY FROM USER_VIEWS WHERE MVIEW_NAME = 'MV_MONTHLY_SALES'

  4>、删除物化视图

DROP MATERIALIZED VIEW MV_MONTHLY_SALES

Oracle 11g系列:视图的更多相关文章

  1. Oracle 11g系列:数据表对象

    Oracle数据库的下一层逻辑结构并非数据表,而是表空间.每个数据表都属于唯一的表空间. 1.Oracle表空间 与数据表相同,Oracle表空间是一个逻辑对象,而非物理对象,是数据库的组成部分.当使 ...

  2. Oracle 11g系列:SQL Plus与PL/SQL

    SQL Plus是Oracle提供的一种用户接口,是数据库与用户之间进行交互的工具. PL/SQL是Oracle的过程化编程语言. 1.登录SQL Plus 利用Windows的[开始]|[运行]命令 ...

  3. Oracle 11g系列:函数与存储过程

    1.函数 Oracle中的函数分为两类:系统函数和自定义行数.对于自定义函数,函数的传入参数可以没有,如果有,一定要明确其数据类型.函数传入参数不能在函数内部进行修改.函数必须有返回值,并且返回值必须 ...

  4. Oracle 11g系列:约束

    约束是每个数据库必不可少的一部分,约束的目的在于保存数据的完整性.数据完整性是指数据的精确性和可靠性.数据库约束主要包括:主键约束.外键约束.唯一性约束.检查约束和默认值约束. 1.主键约束 主键约束 ...

  5. Oracle 11g系列:数据库

    1.创建Oracle数据库 创建Oracle数据库的最常用工具为Database Configuration Assistant(数据库配置助手),依次选择[开始]|[所有程序]|[Oracle-Or ...

  6. [统计信息系列7] Oracle 11g的自动统计信息收集

    (一)统计信息收集概述 在Oracle 11g中,默认有3个自动任务,分别是:自动统计信息收集.SQL调优顾问.段空间调整顾问,查看方法如下: SQL> SELECT CLIENT_NAME,T ...

  7. 【锁】Oracle锁系列

    [锁]Oracle锁系列 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ...

  8. Rman Enhancements(增强) In Oracle 11g. (Doc ID 1115423.1)

    Rman Enhancements In Oracle 11g. (Doc ID 1115423.1) APPLIES TO: Oracle Database - Enterprise Edition ...

  9. SQL SERVER 2008向ORACLE 11G迁移示例

    来源于:http://www.cnblogs.com/hiizsk/ 由SQL SERVER 2008向ORACLE 11G迁移过程记录之一-表 使用Oracle Sql Developer将SQL ...

随机推荐

  1. Postman-CI集成Jenkins

    Postman-简单使用 Postman-进阶使用 Postman-CI集成Jenkins Newman 官方说明:Postman's command-line companion lets you ...

  2. CDATA为何物?

    CDATA的解释 1. 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data),XHTML也是如此. CDATA 部分中的所有内容都会被解析 ...

  3. 浅谈BFC

    Box 是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很多个 Box 组成的.元素的类型和 display属性,决定了这个 Box 的类型. 不同类型的 Box, 会参与不同的 Fo ...

  4. PHP内核探索:数组与链表

    在C语言中,我们可以自定义各种各样的数据结构,用来把很多数据保存在一个变量里面,但是每种数据结构都有自己的优缺点,PHP内核规模如此庞大,是否已经找到了一些非常棒的解决方法呢? 我们在选择各种数据结构 ...

  5. python socket server源码学习

    原文请见:http://www.cnblogs.com/wupeiqi/articles/5040823.html 这里就是自己简单整理一下: #!/usr/bin/env python # -*- ...

  6. 解决ie8(及其以下)不支持getElementsByClassName的问题

    这篇技术笔记与大家分享的是:解决IE8(及以下)不支持getElementsByClassName的方法.如果有说错的地方,麻烦留言告诉我,我及时更正,一来是更新一下我的认知,二来也是不要误导的他人, ...

  7. php+redis window

    http://download.csdn.net/detail/qwfy326/6572443 wampserver2.2e-php5.3.13-httpd2.2.22-mysql5.5.24-x64

  8. SQL Saturday活动再起

    SQL Saturday活动再起 时间:2015年05月09日(星期六) 地点:上海徐汇区港汇2座10楼(10.073) 我们相约港汇2座10楼(10.073),SQL PASS上海分会的SQLSat ...

  9. tcp/udp高并发和高吐吞性能测试工具

    在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间. ...

  10. Restful.Data,现招募有为骚年,群号 338570336

    光阴似箭,日月如梭,套用小学作文惯用的一句开场白来开始重新开始我的博客园生涯吧. 8年的风霜雪雨,不断的击打着我内心的哀伤,可我依旧坚挺的屹立在这里,是因为技术是我一直坚持的梦想. 追寻着先辈和高人的 ...