java 调用oracle视图,Oracle视图的使用

java 调用oracle视图,Oracle视图的使用1 视图的概念视图是基于一张表或多张表或另外一个视图的逻辑表 视图不同于表 视图本身不包含任何数据 表是实际独立存在的实体 是用于存储数据的基本结构 而视图只是一种定义 对应一个查询语句 视图的数据都来自于某些表 这些表被称为基表 通过视图来查看表 就像是从不同的角度来观察一个 或多个 表 视图可以在表能够使用的任何地方使用 但在对视图的操作上同表相比有些限制 特别是插入和修改操作 对视图的操作将

1.视图的概念

视图是基于一张表或多张表或另外一个视图的逻辑表。视图不同于表,视图本身不包含任何数据。表是实际独立存在的实体,是用于存储数据的基本结构。而视图只是一种定义,对应一个查询语句。视图的数据都来自于某些表,这些表被称为基表。通过视图来查看表,就像是从不同的角度来观察一个(或多个)表。视图可以在表能够使用的任何地方使用,但在对视图的操作上同表相比有些限制,特别是插入和修改操作。对视图的操作将传递到基表,所以在表上定义的约束条件和触发器在视图上同样起作用。

2.视图的优点:

*可以提高数据访问的安全性,通过视图往往只可以访问数据库中表的特定部分,限制了用户访问表的全部行和列。

*简化了对数据的查询,隐藏了查询的复杂性。视图的数据来自一个复杂的查询,用户对视图的检索却很简单。

*一个视图可以检索多张表的数据,因此用户通过访问一个视图,可完成对多个表的访问。

*视图是相同数据的不同表示,通过为不同的用户创建同一个表的不同视图,使用户可分别访问同一个表的不同部分。

3.创建视图

创建视图需要CREAE VIEW系统权限,视图的创建语法如下:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW视图名[(别名1[,别名2…])]

AS子查询

[WITH CHECK OPTION [CONSTRAINT约束名]]

[WITH READ ONLY]

其中:

OR REPLACE表示替代已经存在的视图。

FORCE表示不管基表是否存在,创建视图。

NOFORCE表示只有基表存在时,才创建视图,是默认值。

USER_VIEWS字典中包含了视图的定义。

e6c5c0beca426edf63fa17adece16afd.png

4.物化视图

物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。

物化视图的类型ON DEMAND、ON COMMIT。二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。

物化视图可以分为以下三种类型:包含聚集的物化视图;只包含连接的物化视图;嵌套物化视图。三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。

创建物化视图时可以指定多种选项

*创建方式(Build Methods):包括BUILD IMMEDIATE和BUILD DEFERRED两种。BUILD IMMEDIATE是在创建物化视图的时候就生成数据,而BUILD DEFERRED则在创建时不生成数据,以后根据需要在生成数据。默认为BUILD IMMEDIATE。

*查询重写(Query Rewrite):包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的物化视图是否支持查询重写。查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。默认为DISABLE QUERY REWRITE。

*在建立物化视图的时候可以指定ORDER BY语句,使生成的数据按照一定的顺序进行保存。不过这个语句不会写入物化视图的定义中,而且对以后的刷新也无效。

*创建自动更新的物化视图

CREATE MATERIALIZED VIEW T_TEST_MV

REFRESH FAST ON DEMAND WITH ROWID

START WITH SYSDATE NEXT SYSDATE + 30/86400

AS

SELECT * FROM t_test;

这样,T_TEST_MV会有一个job自动更新,时间间隔为30秒。

刷新的方法有四种:FAST、COMPLETE、FORCE和NEVER。FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。COMPLETE刷新对整个物化视图进行完全的刷新。如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。NEVER指物化视图不进行任何刷新。默认值是FORCE ON DEMAND。

物化视图和普通视图的区别

*普通视图不存放数据,物化视图存放数据

*在使用视图进行查询时,是通过View中的SQL查询原表的数据,不能提高查询性能。在通过物化视图进行查询时,直接读取物化视图的数据,提高查询性能。

* 对普通视图应用更新、删除操作会影响原表的数据。只读物化视图不能进行DML操作。可更新物化视图可进行DML操作,并且在刷新时操作会被推送回原表。可写物化视图可进行DML操作,但刷新后所有修改操作在刷新后全部丢失

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217401.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午9:39
下一篇 2026年3月18日 上午9:39


相关推荐

  • 织梦5.7DEDECMS标签大全

    织梦5.7DEDECMS标签大全

    2021年9月19日
    44
  • Claude Code 接入 Github Copilot 模型

    Claude Code 接入 Github Copilot 模型

    2026年3月15日
    2
  • matlab验证确认和测试,验证和确认快速入门[通俗易懂]

    matlab验证确认和测试,验证和确认快速入门[通俗易懂]请选择其一AlabamaAlaska美属萨摩亚APO/FPOAAAPO/FPOAEAPO/FPOAPArizonaArkansasCaliforniaCarolineIslandsColoradoConnecticutDelawareDistrictofColumbiaFlorida格鲁吉亚关岛HawaiiIdahoIllinoisIndianaIowaKansasKentuckyLo…

    2022年5月5日
    48
  • 有监督学习、无监督学习以及半监督学习详解

    有监督学习、无监督学习以及半监督学习详解相信大家在开始学习机器学习的入门时,首先接触的概念就是监督学习、无监督学习以及半监督学习。在我们开始讲解之前,我们先回顾一下什么是机器学习(ML)?百度百科给出的定义是,机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。从定义中,我们可以发现:(1)机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法…

    2022年5月28日
    51
  • linux查看负载均衡命令_linux系统负载如何计算

    linux查看负载均衡命令_linux系统负载如何计算文章主要介绍了通过Linux命令查看系统平均负载的方法,对于服务器管理员来说非常有用接下来是小编为大家收集的Linux命令查看系统平均负载的方法,欢迎大家阅读:Linux命令查看系统平均负载的方法1、Linux系统的平均负载的概念有时候我们会觉得系统响应很慢,但是又找不到原因,这时就要查看平均负载了,看它是否有大量的进程在排队等待。特定时间间隔内运行队列中的平均进程数可以反映系统的繁忙程度,所以我…

    2025年11月8日
    8
  • php替换中文字符串,php如何替换字符串里的字符「建议收藏」

    php替换中文字符串,php如何替换字符串里的字符「建议收藏」php替换字符串里字符的方法:1、通过substr_replace函数把字符串的一部分替换为另一个字符串;2、使用str_replace函数将一个字符串替换字符串中的另一些字符。PHP字符串替换用于从字符串中替换指定字符串。相关函数如下:substr_replace():把字符串的一部分替换为另一个字符串str_replace():使用一个字符串替换字符串中的另一些字符substr_replac…

    2022年5月10日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号