Oracle 中的视图理解

Oracle 中的视图理解

Oracle 中的视图理解

1.视图的概述

视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,视图本身就是一个查询结果所以对视图的修改我个人认为没有任何意义,而且视图不能更新视图创建时候有两个选项分别是

(1)             选择项WITH CHECK OPTION表示对视图进行UPDATE INSERT DELETE操作时,要保证操作的数据满足视图定义的谓词条件,也就是视图子查询中的WHERE子句的条件

(2)             选项WITH READ ONLY 只读视图,不允许通过本视图更新本表

视图创建语句: Create [or  Replace] VIEW VIEW_NAME AS 子查询【WITH CHECK OPTION】【WITH READ ONLY

视图的删除:DROP  VIEW  VIEW_NAME

2.视图的存储

与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。

3.视图的作用

用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。也就是说根据不同的需求创建不同的视图,

通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制隐藏数据复杂性 视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。此视图就对用户隐藏了数据来源于多个表的事实。

31简化用户的SQL 语句

用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。以不同的角度来显示基表中的数据 视图的列名可以被任意改变,而不会影响此视图的基表 使应用程序不会受基表定义改变的影响 ,实际上就是SQL语句操作的结果作为视图的基表来使用。

3.2保存复杂查询

一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。 逻辑数据独立性 视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。原始数据安全

4.视图的工作机制

视图的定义就是其使用的查询语句,Oracle将这个定义以文本形式存储在数据字典中。当用户在 SQL 语句中引用了视图时,Oracle 将进行以下工作: 将引用了视图的语句与视图的定义语句整合为一个语句 在共享SQL 区解析整合后的语句 执行此语句 当现有的共享SQL 区中没有与整合后的语句一致时,Oracle 才会为此语句创建新的共享SQL 区。因此,引用了视图的SQL 语句也能够利用已有的共享 SQL 区以达到节约内存和提高性能的目的。

5.视图的依赖性

 

由于视图的定义是一个引用了其他对象(表,视图)的查询,因此视图依赖于其所引用的对象。Oracle 会自动地处理视图的依赖性。例如,当用户移除了一个视图的基表后再重建此表,Oracle 将检查新的基表是否符合视图的定义并判断视图的有效性。

6.可更新的连接视图

连接视图是指在一个视图的定义查询的from字句中引用了多个表或视图。而可更新的连接视图是指能够执行 UPDATEINSERT,和 DELETE 操作的连接视图。为了保证视图是可更新的,其定义中不能包含以下语法结构:

集合操作符

DISTINCT 操作符

聚合函数或分析型函数

GROUP BYORDER BYCONNECT BY,或 START WITH 字句

SELECT 之后的列表中使用集合表达式

SELECT 之后的列表中使用子查询

连接(join)(但是有例外情况

对于不可更新的视图,可以利用 INSTEAD OF 触发器对其数据进行修改。

转载于:https://my.oschina.net/u/267492/blog/74447

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110339.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Node.js excel转json

    Node.js excel转json这个是8月初做的,之前公司项目需要国际化,在项目本地会有两份json数据,一个中文的一个英文的,但是公司产品经理提供的数据是excel格式,需要我们自己转一次。最初几次数据量不大,一次50条左右,我都是手动的添加了几次,后来发现不行,每次这么搞容易出错且比较耗时,就写了这么一个工具,使用起来效率倍增,启动运行一下这个项目,然后粘贴复制即可。其实使用Node.js把excel转成json很简单…

  • hostapd.conf详细

    hostapd.conf详细#####hostapdconfigurationfile###############################################Emptylinesandlinesstartingwith#areignored#APnetdevicename(without’ap’postfix,i.e.,wlan0useswlan0a…

  • Autoconf编译配置

    Autoconf编译配置1、大型项目编译过程./configuremakemakeinstallLinux中的configure/make/makeinstall到底在做些什么1)./configure:configure是一个脚本,一般由Autoconf工具生成,它会检验当前的系统环境,看是否满足安装软件所必需的条件:比如当前系统是否支持待安装软件,是否已经安装软件依赖等。configure脚本最后会生成一个Makefile文件。2)makemake是一个命令,它使用第1步得到的Makefile文件,如果

  • pychram2021.11.3激活【2021免费激活】

    (pychram2021.11.3激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~9ZHR…

  • MATLAB新手教程

    MATLAB新手教程

    2021年12月14日
  • allure测试报告+Jenkins集成

    allure测试报告+Jenkins集成前提:得装了jdk1.8allure测试报告的样子是这样的,它能显示你运行了几次,然后每次运行有多少次成功多少次失败,之前的和现在的下载地址:链接:https://pan.baidu.com/s/1bG0a0DYxBoUpHtWM3M4n_g提取码:qtv8将文件减压,然后把bin文件目录下的allure.bat放到配置环境变量里然后cmd运行allure命令,显示这样算成功…

发表回复

您的电子邮箱地址不会被公开。

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