SQL实用简明教程.ppt_第1页
SQL实用简明教程.ppt_第2页
SQL实用简明教程.ppt_第3页
SQL实用简明教程.ppt_第4页
SQL实用简明教程.ppt_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

第9章视图的使用重点内容:视图的定义创建视图更新视图删除视图视图的应用,一、视图定义视图是由基于一个或多个表上的一个查询所定义的虚拟表,它将该查询的具体标准暂时保存起来,也就是说,我们存储一个视图,只需要存储它的定义,而不必像实际的数据表那样需要在数据库中占据着物理空间,但是视图的操作方法是和实际数据表的操作方法一样的。在ANSI/SQL标准中,视图只是作为一个被查看的虚拟表,而它的建立基础即实际的表则作为基本表。视图可以将数据库中的数据按照用户的要求,以不同的方式呈现给不同的用户。由于视图保存了我们经常使用的查询,这样用户如果需要在视图代表的某个查询的结果中重复使用其中的数据就不用多次输入查询语句了这么复杂了,而且不同的用户看见的数据集的表现形式也不同,相当的自由和灵活。,二、视图的优缺点(1)优点简化查询:视图可以基于多个不同的表来建立,它将多个表中抽取得数据放在一起,像一个单表一样操作。简化结构:无论数据在数据表中的物理布局如何,视图都可以使数据按照不同用户的要求任意地将其选择组合为虚表来呈现给用户,满足不同用户的需求,很好地体现了数据库的“个人化”操作。安全性:通过视图来访问数据库中的数据,可以限制用户对数据库内容的访问范围,让用户只能访问视图的创建者想让他们看到的具体数据。数据完整性:在用户通过视图访问或者更新数据时,数据库管理系统DBMS的相关部分会自动地检查数据,确保预先设定的完整性约束。(2)缺点性能不高:虽然对用户来说,利用视图访问数据的方法和表相同,但是,数据库管理系统DBMS处理用户对视图的查询时,必须要先将其转换为对底层源表的查询。数据更新受限,三、创建视图创建视图使用命令CREATEVIEW。,CREATEVIEWview_name(column_name,column_name.)ASSELECT_STATEMENT,上面的语句为视图指定了一个名称,并且指明了定义视图的查询语句。当然要成功创建视图,还必须得到对所有源表的访问权限。在定义视图的SELECT语句中,我们可以简单地选择指定源表中的行和列,还可以使用下面的对象和这些对象的组合来创建视图:单个表,多个表,另一个视图,其他多个视图,视图和表的组合。,三、创建视图1、创建列的别名创建视图时,如果用户没有特别指定视图中的列名,视图列将继承SELECT语句中源表的列名。但是如果视图中的列是通过计算得出的或者有多个列具有相同的名称,就必须要给视图列命名,这个名称也叫源表中的列的别名。指定的列名清单放在CREATE语句的视图名称之后的括号中。,CREATEVIEWManager(mgr_name,sex,id,dno)ASSELECTname,sex,id,dnoFROMEmployeee,DepartmentdWHEREe.id=d.mgrid,三、创建视图2、单表视图如果视图只有一个源表,那么我们就说这个视图是单表视图。单表视图通常在一个包含有很多行或者很多列的表的基础上创建使用,通过单表视图用户可以对它的源表中最常用的数据子集进行查询,而不用去理会那些用不着的数据行和列,使操作对象看起来更加简洁好用。如果一个表中的数据只有特定的行和列允许用户使用的话,在这个表上建立单表视图也可以保证数据库的安全性。赋予用户对视图的访问权,而不允许他们访问表可以很好地防止用户越权访问。,CREATEVIEWWorker(name,sex,id)ASSELECTname,sex,idFROMEmployeeWHERESUBSTR(TO_CHAR(id),2,3)!=001,三、创建视图3、使用连接的视图视图可以在单表上建立,也可以在多个表的基础上创建。使用在多个表上创建的视图,用户就不必考虑自己使用的数据来自于哪个数据表或者需要在那个表中查找自己需要的数据。需要做的就是,在视图中使用这些数据,就好像它们一直就存储在同一个表上一样。下面我们介绍使用连接的视图。要创建一个使用连接的视图,只需使用多表连接查询来定义。,CREATEVIEWMgr_Dep(No,department,Manager,mgrid)ASSELECTd.dnumber,d.dname,,e.idFROMDepartmentd,EmployeeeWHEREd.mgrid=e.id,三、创建视图4、使用连接的视图用户可以使用包含了子查询的查询语句来定义一个视图。这些子查询的使用方法和它们在常规的SELECT语句中的使用一样,在本书第8章中详细讨论了子查询的使用,读者可以参考。下面我们举几个简单的例子来说明子查询在视图创建中的运用。,CREATEVIEWWorker(name,sex,id)ASSELECTname,sex,idFROMEmployeeWHERESUBSTR(TO_CHAR(id),2,3)!=001,CREATEVIEWWorker(name,sex,id)ASSELECTname,sex,idFROMEmployeeWHEREnameNOTINSELECTnameFROMManager,CREATEVIEWUp_Dep_WorkerASSELECTname,sex,id,salaryFROMEmployeeWHEREdnoIN(SELECTdnoFROMEmployeeGROUPBYdnoHAVINGAVG(salary)4000),四、更新视图视图可更新性的最基本的规则:视图中的每一行数据都必须映射到视图使用的基本表的单独一个记录行上。下面列出了ANSI标准所不允许进行更新操作的几种常见的会破坏这个基本规则的视图创建和操作方式:(1)视图的列中没有包括源表中有NOTNULL定义的表列(2)在定义视图的查询语句SELECT后的选择清单中使用了数学表达式来定义视图列(3)在定义视图的查询语句SELECT后的选择清单中使用了函数调用或是聚集函数来定义视图列(4)在视图创建中对GROUPBY和HAVING的使用(5)在视图创建的选择清单中使用了DISTINCT运算符(6)在创建视图的查询语句中的任意位置引用了不可更新视图(7)在创建视图的查询语句中使用了子查询或者大部分类型的连接,五、删除视图删除视图的操作很简单,使用DROPVIEW命令来完成这个操作。,DROPVIEWview_name,六、视图的应用1、简化复杂的查询如果我们在对数据库中的数据进行某种操作时,需要执行一系列的查询语句,会发现这么做是很复杂的,这种情况下,我们可以使用合适的视图来简化查询。2、从多个数据源汇总数据如果在创建视图的查询语句中直接连接多个数据源表,或通过其它的视图来间接连接多个数据源表,我们就可以利用该视图来汇总这些源表上的数据。使用这种方法,可以简化我们很多针对这些数据表的查询。,六、视图的应用3、单位转换有时候,我们将数据库中的数据提供给用户时,需要对数据进行一些单位转换,以适应不同用户对数据单位的不同要求。4、保障安全性数据库系统的用户可以分为好几类,每类用户都有一组在数据库系统各个元素上的权限。其中,数据库管理员DBA可以拥有所有的权限。如果一个用户可以随意访问不在他权限范围内的数据内容,将给数据库的管理带来很大的安全隐患。数据库管理系统中有专门负责安全性管理的部分,它依据不同用户在数据库各元素上所拥有的权限来允许或禁止用户对这些元素的访问。使用视图可以很好地保障数据库

温馨提示

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

最新文档

评论

0/150

提交评论