Oracle 11g系列:视图
视图是数据库中特有的对象,视图用于存储查询,但不会存储数据(物化视图除外)。这是视图和数据表的重要区别。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系列:视图的更多相关文章
- Oracle 11g系列:数据表对象
Oracle数据库的下一层逻辑结构并非数据表,而是表空间.每个数据表都属于唯一的表空间. 1.Oracle表空间 与数据表相同,Oracle表空间是一个逻辑对象,而非物理对象,是数据库的组成部分.当使 ...
- Oracle 11g系列:SQL Plus与PL/SQL
SQL Plus是Oracle提供的一种用户接口,是数据库与用户之间进行交互的工具. PL/SQL是Oracle的过程化编程语言. 1.登录SQL Plus 利用Windows的[开始]|[运行]命令 ...
- Oracle 11g系列:函数与存储过程
1.函数 Oracle中的函数分为两类:系统函数和自定义行数.对于自定义函数,函数的传入参数可以没有,如果有,一定要明确其数据类型.函数传入参数不能在函数内部进行修改.函数必须有返回值,并且返回值必须 ...
- Oracle 11g系列:约束
约束是每个数据库必不可少的一部分,约束的目的在于保存数据的完整性.数据完整性是指数据的精确性和可靠性.数据库约束主要包括:主键约束.外键约束.唯一性约束.检查约束和默认值约束. 1.主键约束 主键约束 ...
- Oracle 11g系列:数据库
1.创建Oracle数据库 创建Oracle数据库的最常用工具为Database Configuration Assistant(数据库配置助手),依次选择[开始]|[所有程序]|[Oracle-Or ...
- [统计信息系列7] Oracle 11g的自动统计信息收集
(一)统计信息收集概述 在Oracle 11g中,默认有3个自动任务,分别是:自动统计信息收集.SQL调优顾问.段空间调整顾问,查看方法如下: SQL> SELECT CLIENT_NAME,T ...
- 【锁】Oracle锁系列
[锁]Oracle锁系列 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ...
- Rman Enhancements(增强) In Oracle 11g. (Doc ID 1115423.1)
Rman Enhancements In Oracle 11g. (Doc ID 1115423.1) APPLIES TO: Oracle Database - Enterprise Edition ...
- SQL SERVER 2008向ORACLE 11G迁移示例
来源于:http://www.cnblogs.com/hiizsk/ 由SQL SERVER 2008向ORACLE 11G迁移过程记录之一-表 使用Oracle Sql Developer将SQL ...
随机推荐
- 『TCP/IP详解——卷一:协议』读书笔记——18
2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...
- 关于Xcode7中添加不了libresolv.dylib等类似库的问题
Xcode7中,由于某些机制,使得我们在添加类似于 libresolv.dylib.libz.dylib等库的时候,直接在Build Phases中点击加号添加,似乎已经无法找到相应的库.此时,我们可 ...
- 剑指offer算法_位运算求和
不用+,-,*,/运算求和,可以分成三步: 1.计算两个数字的异或值,相当于只计算每一位的和,不计算进位,得出结果sum: 2.计算两个数字的与值,相当于求出两个数字的进位,然后左移一位,相当于进位, ...
- fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”? 解决方法
错误描述: fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "StdAfx.h"”? 错误分析: 此错误发 ...
- HDOJ 4749 Parade Show
说实在的在比赛时看错了题意,一直对最后一段的描述不是很清楚.闲话少说: 题意:给一个主串,再一个副串,问主串中有多少个子串和副串的的规律相同,即相邻的相等大于小于,用过的就不能再用了. #includ ...
- python安装MySQLdb模块
以Ubuntu下安装为例: 下载地址:https://pypi.python.org/pypi/MySQL-python/ 解压后直接进入解压目录运行安装命令. python setup.py ins ...
- UILabel实现自适应高宽
UILabel是iOS开发常用的控件.UILabel的属性需要了解,UILabel的特殊显示效果也需要我们掌握.UILabel自适应高宽度是很多初学者遇到的技术性难题.比如段文字,要让他完全地分行显示 ...
- C# - JSON详解
最近在做微信开发时用到了一些json的问题,就是把微信返回回来的一些json数据做一些处理,但是之前json掌握的不好,浪费了好多时间在查找一些json有关的转换问题,我所知道的方法只有把json序列 ...
- 分享一个异步任务在遇到IO异常时支持递归回调的辅助方法
public void TryAsyncActionRecursively<TAsyncResult>( string asyncActionName, Func<Task<T ...
- Java虚拟机7:内存分配原则
前言 对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数 ...