`
234390216
  • 浏览: 10194303 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:460839
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1771893
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1395510
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:393922
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:678261
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:529327
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1178789
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:462038
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:150173
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:66899
社区版块
存档分类
最新评论

Oracle——07视图

阅读更多

 

视图是从一个表或视图导出的表,也可以是从多个表或视图导出的表。视图是一个虚表,数据库不对视图所对应的数据进行实际存储,只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基表。

视图一旦被定义以后就可以像表一样被查询、修改、删除和更新。

使用视图有如下优点:

(1)为用户集中数据,简化用户的数据查询和处理。有时我们所需要的数据可能分散在几个不同的表中,定义视图可以将它们集中在一起,从而方便我们对数据的查询和处理。

(2)屏蔽数据库的复杂性。在使用数据时,使用户不必了解复杂的数据库表结构。

(3)简化用户的权限管理。我们有时候可能会授予某一用户只能查看对应表的某些列,这是相当麻烦的,有了视图后,我们就可以把能够查看的列抽出来建立对应的视图,然后赋予用户使用视图的权限。

(4)便于数据共享。各不同的用户不必都保存自己的数据,同样的数据只需保存一次。

1、使用create view语句创建视图:

语法格式:

 

		create [or replace] [force | noforce] view [schema.]viewName[(columnName[,...n])]
			as selectStatement [with check option[constraint constraintName]]
				[with read only]
	--or replace表示如果对应名称的视图已经存在,则重建该视图,即把原来的视图销毁,再重建对应的视图。
	--force表示强制创建一个视图,无论视图的基表是否存在或拥有者是否有权限。
	--columnName是视图中包含的列,可以有多个列名。若使用与源表或视图相同的列名,则不必给出columnName,但以下情况则必须指出列名:
	--(1)由算术表达式、系统内置函数或者常量得到的列
	--(2)共享同一个表名得到的列
	--(3)希望视图中的列名与基表的列名不同的时候
	--selectStatement表示用于创建视图的select语句,可在select语句中查询多个表或视图。
	--with check option指出在视图上所进行的修改都要符合selectStatement所指定的限制条件,这样可以保证数据修改后,仍可通过视图查看修改的数据。
	--with read only指定视图中不能进行删除、更新和插入操作,只能进行检索操作。
 

示例代码:

 

		create or replace view personView as select name,sex from person with read only; --对person表的name和sex列建立只读视图。
		create or replace view personView(sex,平均年龄) as select sex, avg(age) from person group by sex with check option;
		--对person表中的性别进行分组,得出男女的平均年龄,并建立视图,视图的列名改为sex和平均年龄。
	
 

2、查询视图

视图定义后,就可以对视图进行查询了,视图的查询跟对基表的查询是一样的。

示例代码:

 

		select * from personView; --该语句就会查出视图personView里面的所有字段
 

使用视图查询时,如果基表中增加了新的字段,那么只有在重建视图后才能在新的视图中查询到新增加的字段。例如:假设有一个表person(id,name,sex),对该表建立了视图personView(create or replace view personView as select * from person),如果之后我给person新增加了一个age字段,那么在这个时候我调用查询(select * from personView)的结果集中是不包含age字段的,如果想显示age字段,则需要重建该视图。这个原因就是之前说过的视图只是一个虚表,建立视图的时候在数据字典里面只保存了视图的定义,在对视图进行操作的时候,系统会根据视图的定义去操作对应的基表,所以在基表里面新增了字段之后,对应的视图中是没有新字段的定义的,也就不能显示新字段了。

如果与视图相关联的表或者视图被删除,则该视图将不能再使用。

3、更新视图

通过更新视图,可以修改基表中的数据。但并不是所有的视图都是可以进行更新的,一个视图能够更新需要满足以下条件:

a.没有使用连接函数、集合运算函数和组函数

b.创建视图的select语句中没有聚合函数且没有group by、start with子句和distinct关键字

c.创建视图没有包含只读属性

(1)插入数据

可以使用insert语句通过视图向基表插入数据

示例代码:

 

		--假设有这样一个视图:create or replace view personView as select name, sex from person;
			insert into personView values('张三', '男'); --personView是对应的视图名。
 

(2)修改数据

可以使用update语句通过视图修改基表中的数据,操作和修改表数据差不多。

示例代码:

 

			update personView set sex='女' where name='张三';
 

(3)删除数据

可以使用delete语句通过视图删除基表中的数据。

示例代码:

 

			delete from personView where name='张三';
 

4、修改视图的定义 ---需要补充

Oracle中提供了alter view语句,但是该语句不是用于修改视图的定义的,而是用于重新编译或者验证现有视图的。修改视图的定义的方法和新建视图的方法差不多,只是使用的是create or replace view viewName……,这样新的视图就代替了旧的视图了。

示例代码:

--修改视图personView的定义

 

		create or replace force view personView as select id,name,age from person;
 

 

 

5、删除视图

删除视图就是删除视图的定义,删除一个视图是相当简单,类似于删除一个表,它的语法格式如下:

drop view [schema.]viewName;

5
0
分享到:
评论

相关推荐

    oracle实验二视图

    东华大学oracle上机实验二答案,需要的可以参考下。

    Oracle精髓(第4版)

    如何安装、运行、管理、监控、联网和调整Oracle——包括企业管理器(EM)以及Oracle自我调整和管理能力——以及如何使用Oracle安全、审计和依从性(本版中新增的——章内容)。多用户并发、数据仓库、分布式数据库、...

    oracle图形化视图的PLSQLDeveloper7的注册码

     PL/SQL编辑器,功能强大——该编辑器具有语法加强、SQL和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航、宏库等许多智能特性,能够满足要求性最高的用户...

    21天学通Oracle

    第一篇 Oracle管理配置 第1章 Oracle安装配置(教学视频:10分钟) 23 1.1 Oracle简介 23 1.1.1 数据库术语 23 1.1.2 主流数据库简介 24 1.1.3 Oracle数据库的特点 24 1.2 安装Oracle数据库 25 1.2.1 Oracle...

    oracle database 10g 完整参考手册part1

    第4章 规划Oracle应用程序——方法、风险和标准 第Ⅱ部分 SQL和SQL*Plus 第5章 SQL中的基本语法 第6章 基本的SQL*Plus报表及命令 第7章 文本信息的收集与修改 第8章 正则表达式搜索 第9章 数值处理 第10章 日期:...

    SQL实验六 Oracle数据字典和ODBC

    了解Oracle数据字典 ODBC 数据字典(data dictionary)是存储在数据库中的所有对象信息的知识库。Oracle RDBMS使用数据字典获取对象信息和安全信息,而用户和DBA用它来查阅数据库信息。数据字典是只读的,终端用户...

    oracle数据库基本概念——我的Oracle学习之路

    Oracle数据库(Database)是一个数据容器,它包含了表、索引、视图、过程、函数、包等对象,并对这些对象进行统一的管理。用户只有和一个确定的数据库连接,才能使用和管理该数据库中的数据。 逻辑存储结构 表空间 ...

    Oracle SQL高级编程

    《Oracle SQL高级编程》:资深Oracle专家力作,OakTable团队推荐,全面、独到、翔实,题材丰富,Oracle开发人员和DBA必备。 媒体推荐 本书作者全部是OakTable的成员,且具有15-29年丰富的Oracle开发经验。在研究...

    oracle database 11g 高清完整中文版part2

     第4章 规划oracle 应用程序——方法、风险和标准 第ⅱ部分 sql 和sql*plus  第5章 sql 中的基本语法  第6章 基本的sql*plus 报表和命令  第7章 文本信息的收集与更改  第8章 正则表达式搜索  第9章 数值处理 ...

    Oracle_Database_11g完全参考手册.part2

     第4章 规划oracle 应用程序——方法、风险和标准 第ⅱ部分 sql 和sql*plus  第5章 sql 中的基本语法  第6章 基本的sql*plus 报表和命令  第7章 文本信息的收集与更改  第8章 正则表达式搜索  第9章 数值处理 ...

    Oracle Database 11g初学者指南--详细书签版

     ·核心概念——oracle database 11g主题呈现在按逻辑组织的章节中  ·主要内容——每章要介绍的具体内容列表  ·实践练习——演示如何应用在每章学到的关键技术  ·学习效果测试——对学习效果的快速自我评估 ...

    Oracle_Database_11g完全参考手册.part5

     第4章 规划oracle 应用程序——方法、风险和标准 第ⅱ部分 sql 和sql*plus  第5章 sql 中的基本语法  第6章 基本的sql*plus 报表和命令  第7章 文本信息的收集与更改  第8章 正则表达式搜索  第9章 数值处理 ...

    Oracle数据库应用开发——数据操作与PLSQL程序设计.docx

    1.实现表空间的创建与管理 2.实现表空间数据文件的管理 3.实现默认表空间的设置 4.实现数据类型的使用 5.实现数据表的创建方法 6. 实现用户的用法 7.实现分析并设计表及约束...8.实现索引、视图、序列的创建方法

    oracle database 11g 完整参考手册中文高清完整版part3

     第4章 规划oracle 应用程序——方法、风险和标准 第ⅱ部分 sql 和sql*plus  第5章 sql 中的基本语法  第6章 基本的sql*plus 报表和命令  第7章 文本信息的收集与更改  第8章 正则表达式搜索  第9章 数值处理 ...

    oracle database 11g完全参考手册 高清完整版part1 共3部分

     第4章 规划oracle 应用程序——方法、风险和标准 第ⅱ部分 sql 和sql*plus  第5章 sql 中的基本语法  第6章 基本的sql*plus 报表和命令  第7章 文本信息的收集与更改  第8章 正则表达式搜索  第9章 数值处理 ...

    Oracle_Database_11g完全参考手册.part2/3

    第49章 高级体系结构选项——DB保险库、内容DB和记录DB 第50章 Oracle实时应用群集 第51章 数据库管理指南 第52章 Oracle中的XML指南 第Ⅷ部分 附录 附录A 命令和术语参考 作者介绍 Kevin Loney是Oracle数据库设计...

Global site tag (gtag.js) - Google Analytics