精通Oracle核心技术和项目实战之视.pptx
《精通Oracle核心技术和项目实战之视.pptx》由会员分享,可在线阅读,更多相关《精通Oracle核心技术和项目实战之视.pptx(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第11章视图视图是Oracle提供的一种查询机制。该机制不仅可以简化各种查询,还可以保护数据库信息的安全。视图在数据库中可以理解为一张虚拟的表,使用视图可以补充表结构在某些需求方面的不足,可以让开发人员更方便地查询复杂数据。本章将主要介绍视图的概念、作用以及如何创建、查询、管理视图。11.1 Oracle视图初学者听到视图会比较陌生,实际上视图的创建和操作比较简单。在直观印象中它和表相似,但是它不具备表的某些功能。视图的使用和管理在许多方面和表相似,通俗来说我们一般把视图看作没有数据的表,本节就将介绍视图的概念和作用。11.1.1 视图的概念视图是由select查询语句定义的、基于一个或多个表
2、(或视图)的一个逻辑表。视图本身不包含任何数据,也就是说视图只是一个查询语句的结果。它的数据最终是表中获取的,这些表我们可以称为基表,所以不需要在表空间中为视图分配存储空间。理解如图所示。11.1.2 视图的作用有读者可能会产生疑问,既然视图和表相似,为什么还要学习它,其实除了select语句之外,视图在insert、update和delete语句方面受限制,视图的作用如下:(1)使数据简化。(2)使数据更加独立。(3)增加安全性。11.1.3视图的分类在Oracle数据库中,视图可以被分成这样几种类型,关系视图、内嵌视图、对象视图和物理化视图。在本书中,将学习关系视图和内嵌视图。关系视图就是
3、一个续表,它可以定义对数据的查询,允许其他查询重复使用该对象。关系视图属于简单视图,在数据库字典中可以查看它的信息。内嵌视图则是子查询的一种,它适合不重用的对数据的查询,其他查询无法使用该视图,这种视图不需要create命令完成,所以在数据库字典中无法查看该视图的信息。11.2 关系视图创建和使用可以直接使用SQL语句创建一个视图,也可以使用工具SQL Developer、OEM来创建视图。在创建视图时,只是将视图的定义信息保存到数据字典中,在视图中并不保存任何数据,通过视图而操作的数据仍然保存在表中,所以不需要在表空间中为视图分配存储空间。使用语句创建视图视图的创建比较简单,有一定的语法结构
4、,其语法结构如图所示。使用语句创建视图在创建视图之前,为了确保视图的正确性,应先测试select子查询的语句,所以创建视图的正确步骤是:(1)编写select子查询语句。(2)测试select子查询语句。(3)检查查询结果的正确性。(4)使用该select子查询语句创建视图。创建视图时,可以创建单表视图,也可以创建多表视图以及视图的视图、无源表视图。下面将具体讲解。使用语句创建视图1.创建单表视图单表视图表示创建视图时,是根据一个表来创建。在创建视图之前先列出表的信息,方便和视图作对比。【示例11-1】创建视图,这个视图的作用是显示city是Lansing的顾客customer_id、cust
5、_first_name、cust_last_name、city、phone_number。【示例11-2】现在我们来查询这个视图,查询视图的语法和查询表一样。使用语句创建视图2.创建多表视图在通常情况下,视图不会只根据一个表来创建,它会有两个或多个源表。下面我们来介绍基于两个表的视图,创建多表视图的语法如图所示。使用语句创建视图【示例11-3】创建一个基于两个表的视图,把orders表和customersnew表关联起来查询,查询其中order_id,、order_date、customer_id,、cust_first_name等信息。【示例11-4】现在我们来查询这个视图,查询视图的语法和
6、查询表一样。使用语句创建视图3.创建视图的视图视图不仅可以建立在单表或多表上,也可以用其他的视图作为源表创建新的视图。现在我们简单演示一下在视图的基础上创建一个视图,语法如图所示。使用语句创建视图【示例11-5】创建一个前面示例11-1的一个子视图,其实就是去掉cust_last_name这列。【示例11-6】现在我们来查询这个视图,查询视图的语法和查询表一样。使用语句创建视图4.创建无源表视图在Oracle数据库中,我们可以在没有源表时,创建视图。但是这种情况下,视图虽然是创建了,但是还不能使用。等到它的源表创建完成之后,就可以正常使用了。这种创建视图的方式成为强制创建视图。可以使用forc
7、e选项来强制创建视图。其语法结构如图所示。使用语句创建视图【示例11-7】强制创建视图vw_table,假设该视图的源表名称为tableview。【示例11-8】现在我们来查询这个视图,查询视图的语法和查询表一样。使用语句创建视图5.设置视图只读(read only)通常简单的视图是允许进行DML操作的,但是这样容易出现逻辑问题,因为视图增加或更新数据实际上是在操作视图的源表。所以在创建视图时为了避免用户修改数据,可以把视图设成为只读属性,其操作比较简单,语法如图所示。使用语句创建视图【示例11-9】创建视图,这个视图的作用是显示city是Lansing的顾客customer_id、cust_
8、first_name、cust_last_name、city、phone_number,并且要覆盖前面原有的视图,设置此视图为只读属性效果。【示例11-10】对只读视图vw_cus进行查询、增加数据、插入等DML操作进行测试。使用语句创建视图6.设置视图约束(check option)check option 选项表示视图启动了和子查询条件一样的约束。也就是说,如果对视图修改或插入的数据和查询条件不一致,那么该操作会被终止。关于检查约束前面已经讲过,同样可以为视图设置检查约束,语法如图所示。使用语句创建视图【示例11-11】创建视图,这个视图的作用是显示city是Lansing的顾客custo
9、mer_id、cust_first_name、cust_last_name、city、phone_number,并且为此视图设置检查约束。【示例11-12】通过Oracle中的数据字典user_constraints,查询使用with check option所创建的约束。使用SQL Developer创建视图对于记不住视图语法者,使用SQL Developer工具创建视图方便简洁,下面我们就为大家演示一下如何使用该工具来创建视图。【示例11-13】使用SQL Developer工具创建一个基于两个表的视图,把orders表和employees表关联起来查询,查询其中order_id、orde
10、r_date、sales_rep_id、first_name。使用OEM创建视图除了上述两种方法外,在OEM中,可以通过界面交互的方式创建视图。【示例11-14】结合数据表customersnew,创建视图,这个视图的作用是显示city是Lansing的顾客customer_id、cust_first_name信息。查看及操作访问视图视图创建之后,可以查看视图,也可以使用操作访问视图。1.查看视图定义视图创建之后,其定义存在于数据库中。可以通过SQL Developer的Views窗口来查看视图VW_E在数据库中的信息。【示例11-15】查看示例11-11创建的视图vw_cus。【示例11-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精通 Oracle 核心技术 项目 实战
限制150内