精通Oracle核心技术和项目实战之视图ppt课件_第1页
精通Oracle核心技术和项目实战之视图ppt课件_第2页
精通Oracle核心技术和项目实战之视图ppt课件_第3页
精通Oracle核心技术和项目实战之视图ppt课件_第4页
精通Oracle核心技术和项目实战之视图ppt课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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来创建视图。在创建视图时,只是将视图的定义信息保管到数据字典中,在视图中并不保管任何数据,经过视图而操作的数据依然保管在表中,所以不需求在表空间中为视图分配存储空间。.11.2.1 运用语句创建视图视图的创建比较简单,有

4、一定的语法构造,其语法构造如下图。.11.2.1 运用语句创建视图在创建视图之前,为了确保视图的正确性,应先测试select子查询的语句,所以创建视图的正确步骤是:1编写select子查询语句。2测试select子查询语句。3检查查询结果的正确性。4运用该select子查询语句创建视图。创建视图时,可以创建单表视图,也可以创建多表视图以及视图的视图、无源表视图。下面将详细讲解。.11.2.1 运用语句创建视图1.创建单表视图单表视图表示创建视图时,是根据一个表来创建。在创建视图之前先列出表的信息,方便和视图作对比。【例如11-1】创建视图,这个视图的作用是显示city是Lansing的顾客cu

5、stomer_id、cust_first_name、cust_last_name、city、phone_number。【例如11-2】如今我们来查询这个视图,查询视图的语法和查询表一样。.11.2.1 运用语句创建视图2.创建多表视图在通常情况下,视图不会只根据一个表来创建,它会有两个或多个源表。下面我们来引见基于两个表的视图,创建多表视图的语法如下图。.11.2.1 运用语句创建视图【例如11-3】创建一个基于两个表的视图,把orders表和customersnew表关联起来查询,查询其中order_id,、order_date、customer_id,、cust_first_name等信息

6、。【例如11-4】如今我们来查询这个视图,查询视图的语法和查询表一样。.11.2.1 运用语句创建视图3.创建视图的视图视图不仅可以建立在单表或多表上,也可以用其他的视图作为源表创建新的视图。如今我们简单演示一下在视图的根底上创建一个视图,语法如下图。.11.2.1 运用语句创建视图【例如11-5】创建一个前面例如11-1的一个子视图,其实就是去掉cust_last_name这列。【例如11-6】如今我们来查询这个视图,查询视图的语法和查询表一样。.11.2.1 运用语句创建视图4.创建无源表视图在Oracle数据库中,我们可以在没有源表时,创建视图。但是这种情况下,视图虽然是创建了,但是还不

7、能运用。等到它的源表创建完成之后,就可以正常运用了。这种创建视图的方式成为强迫创建视图。可以运用force选项来强迫创建视图。其语法构造如下图。.11.2.1 运用语句创建视图【例如11-7】强迫创建视图vw_table,假设该视图的源表称号为tableview。【例如11-8】如今我们来查询这个视图,查询视图的语法和查询表一样。.11.2.1 运用语句创建视图5.设置视图只读read only通常简单的视图是允许进展DML操作的,但是这样容易出现逻辑问题,由于视图添加或更新数据实践上是在操作视图的源表。所以在创建视图时为了防止用户修正数据,可以把视图设成为只读属性,其操作比较简单,语法如下图

8、。.11.2.1 运用语句创建视图【例如11-9】创建视图,这个视图的作用是显示city是Lansing的顾客customer_id、cust_first_name、cust_last_name、city、phone_number,并且要覆盖前面原有的视图,设置此视图为只读属性效果。【例如11-10】对只读视图vw_cus进展查询、添加数据、插入等DML操作进展测试。.11.2.1 运用语句创建视图6. 设置视图约束check optioncheck option 选项表示视图启动了和子查询条件一样的约束。也就是说,假设对视图修正或插入的数据和查询条件不一致,那么该操作会被终止。关于检查约束前

9、面曾经讲过,同样可以为视图设置检查约束,语法如下图。.11.2.1 运用语句创建视图【例如11-11】创建视图,这个视图的作用是显示city是Lansing的顾客customer_id、cust_first_name、cust_last_name、city、phone_number,并且为此视图设置检查约束。【例如11-12】经过Oracle中的数据字典user_constraints,查询运用with check option所创建的约束。.11.2.2 运用SQL Developer创建视图对于记不住视图语法者,运用SQL Developer工具创建视图方便简约,下面我们就为大家演示一下如

10、何运用该工具来创建视图。【例如11-13】运用SQL Developer工具创建一个基于两个表的视图,把orders表和employees表关联起来查询,查询其中order_id、order_date、sales_rep_id、first_name。.11.2.3 运用OEM创建视图除了上述两种方法外,在OEM中,可以经过界面交互的方式创建视图。【例如11-14】结合数据表customersnew,创建视图,这个视图的作用是显示city是Lansing的顾客customer_id、cust_first_name信息。.11.2.4 查看及操作访问视图视图创建之后,可以查看视图,也可以运用操作访

11、问视图。1.查看视图定义视图创建之后,其定义存在于数据库中。可以经过SQL Developer的Views窗口来查看视图VW_E在数据库中的信息。【例如11-15】查看例如11-11创建的视图vw_cus。【例如11-16】经过数据字典user_view查询当前用户拥有的一切视图信息。以查看vw_cus为例。.11.2.4 查看及操作访问视图2.查看关系视图功能我们知道视图创建之后,可以查询视图中的数据。除此之外,我们也可以像表一样完成数据支配的功能。即利用视图,可以插入数据和更新数据,也可以删除其中数据。对视图的操作仅限于更新、插入、删除。【例如11-17】Oracle内置视图user_up

12、datable_columns定义了用户视图中各列的可更新情况。.11.2.4 查看及操作访问视图3.操作访问视图对视图进展插入、更新操作。需求留意的是。只读视图仅可以进展查询操作,而无法进展更新及插入数据的操作。对于创建了约束的视图,运用视图时会检查涉及的数据能否能经过select子查询的where条件,否那么SQL语句天性胜利执行。.11.2.4 查看及操作访问视图1更新视图数据更新视图数据,实践是更新根底表中的数据。我们可以利用update语句来更新视图中的数据,但是视图本身并不存储数据。更新视图中的数据时,需求满足对应基表的相关约束。【例如11-18】在视图vw_cus,该视图设置了w

13、ith check option选项,要求city是Lansing,现欲将customer_id为982员工姓名调整为“Alva,可以更新视图。【例如11-19】经过更新视图vw_cus,将customer_id为员工姓名调整为“Alva。【例如11-20】查询根底表customersnew中的数据进展验证。.11.2.4 查看及操作访问视图2向视图插入数据利用insert语句,向视图中插入数据。运用视图进展插入时,插入的数据也同样需求满足基表和视图的相关约束。【例如11-21】在视图vw_cus中,插入新员工983的相关信息,但是没有为city赋值,所以会遇到错误。【例如11-22】在视图v

14、w_cus中,重新尝试插入新顾客983的相关信息,此次为city赋值。【例如11-23】在向视图vw_cus中插入数据之后,重新查询视图中的数据。.11.2.4 查看及操作访问视图3用视图进展删除。【例如11-24】利用视图vw_cus,删除编号为983的顾客相关信息。【例如11-25】视图vw_cus删除数据之后,重新查询视图中的数据。.11.2.5 运用SQL Developer工具访问视图运用SQL Developer对视图数据操作也很直观、简单,相对而言运用起来容易上手。在本小节为大家演示一下在SQL Developer下对视图数据的更新、插入、删除等。1.更新数据【例如11-26】运

15、用SQL Developer工具在将视图w_cus中,把视图中顾客编号为316的city改为北京。【例如11-27】运用SQL Developer工具在将视图w_cus中,把视图中顾客编号为316的cust_first_name改为Sissy。【例如11-28】我们之前创建了视图w_orders_cus,该视图的源表是orders、customersnew,运用该视图更新数据,将顾客编号为316的cust_first_name改为Angel。.11.2.5 运用SQL Developer工具访问视图2.视图数据的插入有时候我们也可以为视图添加数据,为了操作简单,就以SQL Developer工

16、具为例为大家简单演示一下视图添加数据的操作。和前面讲的修正数据一样,翻开对应视图即可对其操作。【例如11-29】运用SQL Developer工具在为视图w_cus添加数据,顾客编号为983的,city必需赋值为Lansing。从图中,看出数据胜利插入。.11.2.5 运用SQL Developer工具访问视图3.视图数据的删除视图中删除数据时,直接选中对应行,单击“X按钮,即可完成删除视图数据,由于其操作很简单,这里我们就不引见了。对于多表衔接视图,删除操作也是不允许的。.11.3 内嵌视图的创建和运用内嵌视图不需求视图名,只是一段SQL语句,通常在子查询中作为一个中间数据集,它可以在添加、

17、删除、修正操作中运用。内嵌视图无须创建真正的数据库对象,而只是封装查询,因此会节约数据库资源。.11.3 内嵌视图的创建和运用【例如11-30】在表orders中存储了顾客的订单信息,现欲获取order_total最多的前三个订单的信息。结合利用rownum3的条件可以前往前三行行记录。【例如11-31】在例如11-14中,运用了内嵌视图获得了订单最多的三个记录。同时,还想获得这些订单对应的顾客的联络方式,那么可以运用内嵌视图与表customersnew进展衔接。此时,在内嵌视图与表customersnew中会存在反复列,因此,需求为内嵌视图指定别名。.11.4 视图的修正视图的修正比较特殊,

18、不能像表一样修正,更准确的说他没有修正选项,我们采用覆盖原有视图的方法来修正视图,但这并不会影响视图的运用。由于视图本身不包含数据,所以覆盖原有视图时就不存在数据丧失的问题。本小节将主要引见运用SQL Developer视图构造和视图数据的修正等操作。.11.4.1 运用语句修正视图假设发现视图的定义不适宜,可以对其进展修正。实践上视图中的select语句是不能直接修正的,所以修正视图的一种方法是先删除视图,再重新创建。另一种方法是在创建视图的create语句中运用or replace选项。带or replace选项的create语句语法构造如下图。.11.4.2 运用SQL Developer工具修正视图下面我们用SQL Developer演示一下修正视图的构造。【例如11-32】运用SQL Developer工具修正视图vw_cus,将视图中customer_id字段取别名为id。.11.4.3 运用OEM修正视图除了运用语句和SQL Developer工具更改视图外,也可以运用OEM修正视图。【例如11-33】运用OEM修正视图vw_cus。.11.5 视图的删除视图的删除和表删除操作方式一样,可以运用S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论