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 ...
随机推荐
- (转)深度分析Linux下双网卡绑定七种模式
现在一般的企业都会 使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在 网卡产商也会出一些针对window ...
- 一致性Hash算法
from wikipedia 一致哈希 历史 1997年由MIT的Karger等在一篇学术论文中提出如何将“一致性Hash”应用于用户易变的分布式Web服务中.也可用于实现健壮缓存来减少大型Web应用 ...
- 介绍一些chrome 好用的插件和快捷键
1.AdBlock ★★★ 最受欢迎的Google 浏览器扩充功能,拥有超过8 百万位使用者!阻挡网路上所有的广告. 2.印象笔记 -剪裁 无需多说! 3.豆藤 Bean vine ★★★★ 豆瓣有此 ...
- 《《我是一只IT小小鸟》》读后感
接触IT也已经半年了,在这半年我没有充足的时间去了解IT这个行业,在大学生职业规划课程上,老师推荐了<<我是一只IT小小鸟>>这本书,我才发现IT这个行业并不是想象的那么无趣, ...
- bzoj 3714
题意:n<=2000的盒子,有一些里面有球,再给你所有c[i][j](1<=i<=j<=n),即告诉你[i,j]里面球的总数的奇偶性需要花费c[i][j],现在求知道所有的盒子 ...
- 美帝的emal to message gateway
Provider Email to SMS Address Format AllTel number@text.wireless.alltel.com AT&T number@txt.att. ...
- 很少再用left join
作为开发,你是否经常碰到下面需要转换用户ID成用户名称的情况: 可惜你的这些业务表出于最少冗余设计要求,只有UserId,而没有UserName,这时你不得不破坏你一个类封装一个表的美好想法, 在你的 ...
- Javascript图片裁切
最近浏览了不少网站的图片裁切效果,大部分的做法如下图所示(借用一张脚本之家的图片),通过改变裁切框的大小来选取合适的位置. 但本文介绍的是另外一种裁切方式,裁切框由开发者决定,图片大小由用户决定,通过 ...
- [.net 面向对象编程基础] (20) LINQ使用
[.net 面向对象编程基础] (20) LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integr ...
- java提高篇(三十)-----Iterator
迭代对于我们搞Java的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator ...