iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle 11g R2 视图
  • 900
分享到

Oracle 11g R2 视图

2024-04-02 19:04:59 900人浏览 八月长安
摘要

视图是一个虚表,不占用物理空间,因为视图本身的定义语句存储在数据字典里。视图中的数据是从一个或多个实际的表中获得。 物化视图:也成实体化视图,含有实际数据,占用存储空间,在数据仓库中经常应用物化视图 创建视

视图是一个虚表,不占用物理空间,因为视图本身的定义语句存储在数据字典里。视图中的数据是从一个或多个实际的表中获得。

物化视图:也成实体化视图,含有实际数据,占用存储空间,在数据仓库中经常应用物化视图

创建视图的语法

CREATE [OR REPLACE] [FORCE |NO FORCE] VIEWview_name [(alias [,alias]..)] as select_statement [WITH CHECK_OPTioN[CONSTRaiNT constraint]] [WITH READ ONLY];

在语法中

OR REPLACE:如果视图已经存在,此选项将重新创建该视图。

FORC:如果使用此关键字,则无论基表是否存在,都将创建视图

NO FORCE:这是默认值,如果使用此关键字,则仅当基表存在时才创建视图

VIEW_NAME:要创建的视图名

ALIAS:指定由视图的查询所选择的的表达式或列的别名。别名的数目必须与视图所选择的的表达式的数据相匹配。

select_statement:SELECT 语句

WITH CHECK_OPTION:此选项指定只能插入或更新视图可以访问的行,constraint标识CHECK OPTION约束指定的名称

WITH READ ONLY:此选项保证不能再视图上执行任何修改操作。

创建带有错误的视图

如果在CREATE VIEW语法中使用FORCE选项,即使存在以下情况,也会创建视图

视图定义的查询引用了一个不存在的表

视图定义的查询引用了现有表中无效的列。

视图的所有者没有所需的权限。

在这些情况下,oracle仅检查CREATE VIEW语句中语法错误,如果语法正确,将会创建视图,并将视图的定义存储在数据字典中,但是该视图却不能使用。这种视图被认为是带有错误创建的。可以用SHOW ERRORS VIEW视图名来查看错误

对单表的视图操作
sql> create table order_master (ordernonumber(5) CONSTRAINT p_ord PRIMARY KEY,

2 odate DATE,vencode number(5),

3 o_status char(1));
Oracle 11g R2 视图
插入数据

SQL> insert into order_master values (1,to_date('2010-01-01','yyyy-mm-dd'),1,'a');

SQL> insert into order_master values(2,to_date('2011-01-01','yyyy-mm-dd'),2,'p');
Oracle 11g R2 视图
创建订单状态为"p"的视图,提示没有创建视图的权限
Oracle 11g R2 视图
授予SCOTT用户创建视图的权限
Oracle 11g R2 视图
创建视图

SQL> create view pen_view as select *from order_master where o_status = 'p';
Oracle 11g R2 视图
查询视图
Oracle 11g R2 视图
通过视图修改数据,将状态为“p”的订单修改为“d”

SQL> update pen_view SET o_status='d'where o_status='p';

Oracle 11g R2 视图
如果修改成功,在查询视图将查询不出任何记录,因为修改了创建视图是作为条件的列
Oracle 11g R2 视图
为了避免修改视图后查询不到记录的现象,使用with check option语句创建检查约束以防止上述情况的发生,同时可以使用CONSTRAINT指定约束名称

SQL> create or replace view pen_view asselect * from order_master where o_status='p'

2 with check option constraintpenv;
Oracle 11g R2 视图
更新视图

SQL> update pen_view set o_status='d'where o_status='p';
Oracle 11g R2 视图
提示with check option违反where子句

创建只读视图
SQL> create or replace view pen_view asselect * from order_master with read only;
Oracle 11g R2 视图
查看视图
Oracle 11g R2 视图
为视图插入记录
Oracle 11g R2 视图
创建带有错误的视图

Oracle 11g R2 视图
因为不存在venmast表

创建表venmast

SQL> create table venmast (id int);

手动编译刚才创建的错误视图
Oracle 11g R2 视图
查看视图
Oracle 11g R2 视图
创建带ORDER BY子句的视图
SQL> create or replace view pen_view asselect * from order_master order by orderno;
Oracle 11g R2 视图
复杂视图
DML语句是指用于修改数据的INSERT,DELETE,UPDATE语句。因为视图是一个虚表,所以这些语句也可以与视图一同使用。一般情况下不通过视图修改数据,而是直接修改基本表,因为这样调理更清晰。在视图上使用DML语句有如下限制:(相对于表)

DML语句只能修改视图中的一个基表

如果对记录的修改违反了基表的约束条件,则将无法更新视图

如果创建的视图包含连接运算符,DISTINCT运算符,集合运算符,聚合函数和group BY子句,则将无法更新视图。

如果创建的视图包含伪列或表达式,则将无法更新视图。

简单视图基于单个基表,不包括函数和分组函数,那么可以在此视图中进行INSERT,UPDATE,DELETE操作。这些操作实际上是在基表中插入、更新和删除行。

复杂视图从多个提取数据,包括函数和分组函数,复杂视图不一定能进行DML操作。

删除视图可以使用
Oracle 11g R2 视图
物化视图
物化视图是和普通视图相对应的,在oracle使用普通视图时,它会重复执行创建视图的所有sql语句,如果这样的SQL语句含有多张表的连接或者ORDER BY子句,而且表的数据量很大,则会非常耗时,效率非常低下。为了解决这个问题,oracle提出了物化视图的概念

物化视图就是具有物理存储的特殊视图,占用物理空间,就象表一样,物化视图是基于表,物化视图等创建的。它需要和源表进行同步,不断的刷新物化视图中的数据。物化视图有两个重要概念:查询重写和物化视图的同步

查询重写:

对SQL语句进行重写。当用户使用SQL语句对基表进行查询时,如果已经建立了基于这些基表的物化视图,oracle将自动计算和使用物化视图来完成查询,在某些情况下可以节约查询时间,减少系统I/O。这种查询优化技术成为查询重写。参数QUERY_REWRITE_ENABLED决定是否使用重写查询。在创建物化视图时需要使用ENABLE QUERY REWRITE来启动查询重写功能

可通过SHOW命令查看该参数的值
Oracle 11g R2 视图
物化视图的同步:

物化视图是基于表创建的,所以当基表发生变化时,需要同步数据以更新物化视图中的数据,这样保持无话视图中的数据和基表的数据的一致性。oracle提供了两种物化视图刷新方式

ON COMMIT:指物化视图在对基表的DML操作事物提交的通行进行刷新

ON DEMAND:指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_IVIEW.refresh等方法来进行刷新,也可以通过JOB定时刷新

选择刷新方式后,还需要选择一种刷新类型,刷新类型值刷新时基表与物化视图如何实现数据同步,oracle提供了一下4种刷新类型:

COMPLETE:对整个物化视图进行完全刷新。

FAST:采用增量刷新,只刷新自上次刷新以后进行的修改

FORCE:oracle在刷新会判断是否可以进行快速刷新,如果可以则采用FAST刷新方式,否则使用COMPLETE方式。

NEVER:物化视图不进行任何刷新

创建物化视图
创建物化视图的前提条件:

具备创建物化视图的权限,QUERY REWRITE的权限,以及对创建物化视图所涉及的表的访问权限和创建表的权限

使用SCOTT用户来举例说明

1.授予相应的权限

SQL> show user;

USER is "SYS"

SQL> grant create materialized view toscott;

SQL> grant query rewrite to scott;

SQL> grant create any table to scott;

SQL> grant select any table to scott;

2.创建物化视图日志

物化视图日志是用户选择了FAST刷新类型时需要使用的,以增量同步基表的变化。

对SCOTT用户的EMP表和DEPT表创建物化视图,所以对这两个基表创建物化视图日志

SQL> create materialized view log ondept with rowid;
Oracle 11g R2 视图
SQL> create materialized view log on empwith rowid;
Oracle 11g R2 视图
创建物化视图

通过CREATE MATERIALIEZED VIEW语句来创建物化视图,

SQL> create materialized viewmtrlview_test

2 build immediate

3 refresh fast

4 on commit

5 enable query rewrite as

6 selectd.dname,d.loc,e.ename,e.job,e.mgr,e.hiredate,e.sal,d.rowid d_rowid,e.rowide_rowid

7 from dept d,emp e whered.deptno=e.deptno;
Oracle 11g R2 视图
其中:

BUILD IMMEDIATE:该参数的意思是立即创建物化视图;也可以选择BUILD DEFFERED,该参数说明在物化视图定义以后不会立即执行,而是延迟执行,在使用该视图在创建。

REFRESH FAST:刷新数据的类型选择FAST类型

ON COMMIT:在基表有更新时提交后立即更新物化视图

ENABLE QUERY REWRITE :启动查询重写功能,在创建物化视图是明确说明启用查询重写功能。

AS:定义后面的查询语句

查询体:物化视图的查询内容。该SQL语句的查询结果集输出到物化视图中,保存在由oracle自动创建的表中。

删除物化视图
Oracle 11g R2 视图
如果对此有兴趣,请扫下面二维码免费获取更多详情
Oracle 11g R2 视图

您可能感兴趣的文档:

--结束END--

本文标题: Oracle 11g R2 视图

本文链接: https://www.lsjlt.com/news/36219.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle 11g R2 视图
    视图是一个虚表,不占用物理空间,因为视图本身的定义语句存储在数据字典里。视图中的数据是从一个或多个实际的表中获得。 物化视图:也成实体化视图,含有实际数据,占用存储空间,在数据仓库中经常应用物化视图 创建视...
    99+
    2022-10-18
  • Oracle 11g R2 进程
    用户进程 ps –elf | grep oracleorcl|grep –v grep数据库进程 ps –elf |grep oracleorcl守护进程 Ps –elf |grep oha大池:在SGA中...
    99+
    2022-10-18
  • oracle 11g-R2安装
    f 附件:http://down.51cto.com/data/2367194...
    99+
    2022-10-18
  • Oracle 11g R2 Snapshot Standby
    Oracle 11g引入Snapshot Standby,允许standby database以read-write模式打开。当切换回standby模式,所有在read-write模式的修改都丢失。它是通过...
    99+
    2022-10-18
  • Oracle 11g R2 索引
    索引是oracle提供的一个对象,提供了一种快速访问数据的途径,提高了数据库的检索性能。索引使数据库程序无需对整个表进行全表扫描,就可以在其中找到所需要的数据,就想书的目录,可以通过他快速查找所需信息,无需...
    99+
    2022-10-18
  • Oracle 11g R2 ADG 运维
    --================ Oracle ADG 运维 ================--========测试日志传输========1.在primary上,查看最后归档的日志,强制日志切换AL...
    99+
    2022-10-18
  • Oracle 11g R2 ADG 搭建
    --============Oracle ADG搭建==============--==========准备阶段=========1.检查primary为archivelog模式。select l...
    99+
    2022-10-18
  • RHEL7安装Oracle 11G R2
    Oracle 11G R2 安装 实验环境:RHEL7.4 x64 最简安装数据库版本: Oracle 11G R2IP 地址:192.168.10.133Linux连接工具: xmanager 5 /...
    99+
    2022-10-18
  • Oracle 11g R2 ADG 监控
    --===============在standby监控DG的恢复过程==================v$managed_standbyv$archived_standbyv$archive_desc_s...
    99+
    2022-10-18
  • oracle 11g r2 em 乱码
    我的系统是redhat 5.5 64位,oracle为11G R2oracle 11g使用的是jdk1.5,jdk1.5以后有了一个简便方法来解决这个问题,只需在$JAVA_HOME/jre/lib/fon...
    99+
    2022-10-18
  • Oracle 11g R2 数据字典
    数据字典是oracle存储关键信息的表和视图的集合。oracle进程会在sys模式中维护这些表和视图,也就是说数据字典的所有者为sys用户,数据存放在system表空间中,数据字典描述了实际数据是如何组织的...
    99+
    2022-10-18
  • Oracle 11g R2 体系结构
    安装oracle软件----创建数据库----在数据库中创建表----表里存储信息---这些表文件需要存储在物理硬盘上面。 假如有一个用户(这个用户可以是远程用户,也可以是本地的,也可以是一个应用程序)连接...
    99+
    2022-10-18
  • Oracle 11g R2 存储结构
    数据文件相关知识 想查看系统中有多少个数据文件我们可以通过动态数据字典或静态数据字典来查看:通过静态数据字典查看数据文件通过动态数据字典来查看数据文件直接查看数据文件的内容是看不到的,必须通过一个逻辑的结构...
    99+
    2022-10-18
  • Oracle 11g R2 事物的控制
    控制事务 银行转账 李四给张三汇款 ACID A:原子性:整个事务中所有的步骤是不可分割的,原子性原则规定一个事务的各个步骤都必须完成,否则整个事务都不会完成。即保证一个事务中所有的操作都能完成或者都不能完...
    99+
    2022-10-18
  • Oracle 11g R2 安装和配置
    --=========== 0: XServer准备安装XServer,配置XShell--Xming,Xmanager,Vcxsrv--=========== 1: 磁盘分区和挂载cd /etc/yum....
    99+
    2022-10-18
  • Oracle 11g R2 用户与模式(schema)
    创建用户的语法: Create user用户名identified by 密码 default tablespace表空间 quota 大小 on 表空间; 注意:在创建用户的时候虽然用户名写的时小写的,但...
    99+
    2022-10-18
  • Oracle 11g R2 管理控制文件
    oracle数据库控制文件是非常重要的文件,它是数据库创建的时候自动生成的二进制文件,其中记录了数据库的状态信息,主要包括以下内容 Ø 数据库的名称,一个控制文件只能属于一个数据库 Ø 数据库创建时间 ...
    99+
    2022-10-18
  • Oracle 11g R2 日志结构总结
    Oracle从11g开始,对日志结构做了比较大的调整,日志存放目录和存储格式有都有了变化。下面总结了Oracle Database、Oracle监听、ASM和Oracle GI各日志的存放目录和目录结构。1...
    99+
    2022-10-18
  • OEL5.5如何安装Oracle 11g R2 RAC
    小编给大家分享一下OEL5.5如何安装Oracle 11g R2 RAC,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 1.安装前的准备: 操作系统:oracl...
    99+
    2022-10-19
  • Oracle 11g R2 常见问题处理
    --======================查询Oracle错误日志和警告日志通过命令查看错误日志目录SQL> show parameter background_dump_dest;根据错误提示...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作