浅谈Oracle数据库视图应用技巧.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈Oracle数据库视图应用技巧

浅谈Oracle数据库视图应用技巧   摘要:本文介绍了视图的定义、分类和基本功能,并结合开发设备材料管理系统的实际情况,从Oracle数据库本身的特点出发,深入阐述了视图在数据统计、计算、查询、更新等方面的设计方法和应用技巧,通过视图技术的灵活巧妙应用更加完善了应用系统的功能。   关键词视图存储过程 虚拟列 关联 更新   中图分类号:C37 文献标识码:A      引言   Oracle数据库作为目前世界上最通用的数据库系统之一,已经在多个领域得到了广泛的应用,视图是它最基本的、也是最重要的功能之一。   视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,也可以看作是虚拟表或存储查询,通过它可以对表里面的数据进行查询和修改。可通过视图访问的数据不作为独特的对象存储在数据库内,数据库内存储的是 SELECT 语句。用户可以用引用表时所使用的方法,在SQL语句中通过引用视图名称来使用虚拟表。   2视图的分类   2.1表视图    视图的数据从单个基本表中取部分行、列,视图行列与基本表行列对应,这样定义的视图可以进行查询和更改数据操作;或者取自多个基本表中,这样定义的视图一般只用于查询。   2.2在已有视图上定义的新视图   在一个或者多个视图上再建立视图,或者在几个表和视图上建立视图,这时作为数据源的视图必须是已经建立好的。   2.3带表达式的视图   在定义基本表时,为减少数据库中的冗余数据,表中只存放基本数据,由基本数据经过各种计算派生出的数据一般是不存储的。但由于视图中的数据并不实际存储,所以定义视图时可以根据需要设置一些派生属性列,在这些派生属性列中保存经过计算的值。这些派生属性由于在基本表中并不实际存在,因此,也称它们为虚拟列。包含虚拟列的视图称为带表达式的视图[1]。   2.4含分组统计信息的视图   用带有SUM、AVG、COUNT等聚集函数和GROUP BY子句的查询语句定义的视图,这样的视图只能用于查询,不能用于修改数据。   3 视图的基本功能   3.1视图的安全保护功能   视图可以对数据提供安全保护,将用户限定在表中的特定行或者列上,使数据只出现在有权限看到这些数据的用户的视图上。   3.2视图的数据隐藏功能   视图可以隐藏数据的复杂性。Oracle数据库由许多表组成,视图可以将多个表或者视图中的列联接起来,使它们看起来象一个表,同时维护了数据的独立性。   3.2视图的独立性   视图保证了应用程序一定的独立性。如果组成视图任一个基础表中增加了一列,这对视图的定义不产生影响,也不会影响涉及到此视图的应用程序。   4视图的应用   实际的系统开发中,视图的功能却可以有更多的延伸和扩展,下面结合已开发的设备材料管理系统,深入阐述数据库视图在系统开发中的具体应用。   4.1较复杂剩余量的统计及计算问题   设备材料管理系统中的入库信息是根据合同里的采购信息生成的,每个合同中的采购明细可以有多条记录,每次办理入库时,入库的物资可以是某个合同中未入库的任何一种或几种物资,入库数量不能超过合同数量减去已入库物资数量的剩余量,如何由数据库来自动计算出合同的剩余量?   (1) SQL Sever数据库解决方案   可以通过视图和存储过程相结合来计算。为了使问题看起来更简洁,例子中只列出最主要的几个字段。   首先,建立视图V_inStore_total从入库信息中统计出合同入库中每种物资的入库量合计:   CREATE VIEW V_inStore_total   AS   SELECTa.contra_coding, a.mater_coding, sum(a.inStore_amount) as inStore_amount   FROMT_inStore_list a   GROUP BYa.contra_coding, a.mater_coding;   接下来,建立视图V_not_inStore 计算出有入库记录的物资还未办理完入库的物资的剩余合同数量:   CREATE VIEW V_not_inStore   AS   SELECT a.contra_coding, a.mater_coding, (a.contra_amount - b. inStore_amount) as contra_amount    FROM T_purchase_list a, V_inStore_total b   WHERE a.contra_coding = a.contra_coding and a.mater_coding = b.mater_coding;   最后,建立存储过程P_contra

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档