`

oracle中的视图详解及实例

    博客分类:
  • DB
阅读更多
1.创建用户并授权:
create user hzdl identified by hzdl default tablespace bole;

grant connect,resource to hzdl;
grant create view to hzdl;

2.授予bole用户表的查询权限:
以bole用户登陆,grant select any table to hzdl;

3.视图创建:

以hzdl用户登陆,然后执行以下语句:
CREATE OR REPLACE VIEW view_DriverInfo
AS
   SELECT eno,
          ename,
          identitycard,
          (SELECT dict.displayName
             FROM bole.propertyDicts dict, bole.propertyDomains domain
            WHERE     dict.propertyDomainId = domain.id
                  AND domain.domainName = '实体名'
                  AND dict.id = drivetype)
             drivetype,
          (SELECT name
             FROM bole.ORGANIZATIONS
            WHERE id = cargroupId)
             carGroupName,
          rfid,
          gender,
          imageUrl
     FROM bole.drivers;


下面引自:http://www.jb51.net/article/21527.htm
1.视图的概述

视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器。(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束)

2.视图的存储

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

3.视图的作用

用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。视图常见的用途如下:

通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制

隐藏数据复杂性

视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。此视图就对用户隐藏了数据来源于多个表的事实。
 
简化用户的SQL 语句

用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。
 
以不同的角度来显示基表中的数据

视图的列名可以被任意改变,而不会影响此视图的基表
 
使应用程序不会受基表定义改变的影响

在一个视图的定义中查询了一个包含4 个数据列的基表中的3 列。当基表中添加了新的列后,由于视图的定义并没有被影响,因此使用此视图的应用程序也不会被影响。
 
保存复杂查询

一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。
逻辑数据独立性

视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
4.视图的工作机制

视图的定义就是其使用的查询语句,Oracle 将这个定义以文本形式存储在数据字典中。当用户在 SQL 语句中引用了视图时,Oracle 将进行以下工作:

将引用了视图的语句与视图的定义语句整合为一个语句
在共享SQL 区解析整合后的语句
执行此语句
当现有的共享SQL 区中没有与整合后的语句一致时,Oracle 才会为此语句创建新的共享SQL 区。因此,引用了视图的SQL 语句也能够利用已有的共享 SQL 区以达到节约内存和提高性能的目的。

5.视图的依赖性

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

6.可更新的连接视图

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

集合操作符
DISTINCT 操作符
聚合函数或分析型函数
GROUP BY,ORDER BY,CONNECT BY,或 START WITH 字句
在 SELECT 之后的列表中使用集合表达式
在 SELECT 之后的列表中使用子查询
连接(join)(但是有例外情况)
对于不可更新的视图,可以利用 INSTEAD OF 触发器对其数据进行修改。
分享到:
评论

相关推荐

    oracle 物化视图详解(内含例子)

    ### Oracle 物化视图详解 #### 一、物化视图的概念与作用 物化视图是Oracle数据库中一种特殊的数据对象,它保存的是基于一个或多个表(称为基表)的查询结果集,并且这些结果集是物理上存在的。与普通的视图不同,...

    ORACLE 动态性能视图详解

    在OPS(Oracle Parallel Server)环境中,`GV$`视图可以用来查询OPS_ADMIN_GROUP参数定义的实例组信息,但需要满足`PARALLEL_MAX_SERVERS`参数大于零,并且OPS_ADMIN_GROUP参数至少有一个成员。 访问动态性能视图...

    Oracle常用对象大全及实例详解.pdf

    Oracle数据库是世界上最流行的数据库管理系统之一,它包含了众多的对象类型,如表、索引、视图、同义词、函数、存储过程、触发器和包等。这些对象在数据库设计和管理中扮演着至关重要的角色。 1. **表**:表是...

    oracle 视图,函数,过程,触发器自动编译脚本

    ### Oracle视图、函数、过程、触发器自动编译脚本知识点详解 #### 一、背景与需求 在日常管理维护Oracle数据库服务器的过程中,我们经常会遇到需要修改视图(View)、表(Table)结构的情况。由于Oracle中的视图、...

    Oracle性能视图学习大全

    ### Oracle性能视图学习大全详解 #### 一、引言 在Oracle数据库管理与优化领域,深入了解和利用Oracle性能视图(V$视图)至关重要。随着Oracle版本的不断升级,V$视图的数量也在不断增加,从Oracle 6时代的23个到...

    oracle 启动过程详解

    在这个过程中,Oracle 将创建一个名为“oracle”的可执行文件,这个文件将被加载到内存中,并且 Oracle 将根据参数文件中的设置初始化实例的各种参数。这个过程可以通过 strings 命令查看 oracle 可执行文件中的字符...

    常用的oracle表和视图

    ### 常用的Oracle表和视图知识点详解 #### 一、查询某个表在哪些存储过程中被使用 为了高效地了解某个特定表在哪些存储过程中被引用,可以通过以下SQL查询来实现: ```sql SELECT A.NAME AS 过程名称, MIN(A.LINE...

    Oracle动态性能视图

    ### Oracle动态性能视图知识点详解 #### 一、Oracle动态性能视图概述 **Oracle动态性能视图**是一组预定义的视图,用于显示Oracle数据库的内部状态和活动信息。这些视图对于DBA(数据库管理员)来说非常重要,可以...

    oracle 创建视图

    ### Oracle 创建视图知识点详解 在Oracle数据库管理中,创建视图是一项重要的操作,它能够帮助用户更加方便地管理和查询数据。本篇文章将基于提供的标题、描述、标签以及部分内容,详细解析Oracle创建视图的相关...

    用其它oracle数据库表内容创建本地视图

    在Oracle数据库环境中,有时候我们需要访问位于不同数据库实例中的数据。为了实现这一目标,Oracle提供了数据库链接(Database Link)的功能,通过该功能可以轻松地从一个数据库访问另一个数据库的数据。本文将详细...

    Oracle10g视图的神图

    ### Oracle 10g 视图详解 #### 引言 在Oracle 10g数据库中,视图作为数据字典的重要组成部分,为系统管理员、开发者以及用户提供了丰富的信息资源。这些视图不仅可以帮助理解数据库的运行状态,还能够提供性能调优...

    常用oracle动态性能视图

    V$SESSION 视图是 Oracle 提供的核心性能监视视图之一,它记录了所有与数据库实例建立连接的会话(session)信息,包括用户会话和后台进程,如 DBWR(数据库写进程)、LGWR(日志写进程)和归档进程等。通过 V$...

    oracle 临时表详解及实例

    Oracle8i及更高版本支持临时表的创建和使用,提供了两种类型:会话特有的临时表和事务特有的临时表。 会话特有的临时表通过`ON COMMIT PRESERVE ROWS`语句创建。这种类型的临时表在会话期间保持其数据,即使事务...

    ORACLE动态性能视图

    ### ORACLE动态性能视图详解 #### 一、概述 Oracle数据库系统中包含了大量用于监控和管理系统性能的工具,其中动态性能视图是一类非常重要的工具。这些视图由Oracle服务器自动维护,并且只能被系统管理员用户SYS...

    ORACLE 动态性能视图

    ### ORACLE 动态性能视图详解 #### 引言 在Oracle数据库系统中,动态性能视图(Dynamic Performance Views)扮演着至关重要的角色。这些视图提供了关于数据库内部操作和性能的关键信息,使得数据库管理员(DBA)...

    Oracle_BIEE实例详解

    ### Oracle_BIEE实例详解 #### 一、Oracle BIEE概述 Oracle BIEE(Business Intelligence Enterprise Edition)是Oracle公司推出的一款强大的商业智能平台,主要用于数据仓库的建模和数据分析展示。它提供了完整的...

    Oracle内存架构详解

    ### Oracle内存架构详解 #### 一、Oracle内存架构概述 Oracle数据库的性能很大程度上依赖于其内存配置。本文档深入探讨Oracle内存架构的核心组件及其如何影响数据库的整体性能。Oracle实例由一系列内存结构(如SGA...

    Oracle_sqlplus详解.

    Oracle SQL*Plus 是一个强大的命令行工具,用于与Oracle数据库进行交互。它是Oracle数据库管理员和开发人员的标准工具,提供了一种直接与数据库交互的方式,执行SQL查询、脚本和数据库管理任务。本文将深入探讨...

Global site tag (gtag.js) - Google Analytics