数据库实验581339_第1页
数据库实验581339_第2页
数据库实验581339_第3页
数据库实验581339_第4页
数据库实验581339_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、大连海事大学数据库原理课程实验大纲实验名称:实验五 视图 实验学时:2适用专业:实验环境:SQL.serve2008执笔者:编写日期:1实验目的(1) 掌握SQL视图语句的基本使用方法,如CREATE VIEW、DROP VIEW。(2)掌握视图更新、 WITH CHECK OPTION 等高级功能的使用。2实验内容2.1掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。(2)创建视图(不能省略列名的情况)。(3)删除视图(RESTRICT / CASCADE )。2.2掌握视图更新和 WITH CHECK OPTION 的高级使用方法(1)创建视图(WITH CHECK OPT

2、ION),并利用 INSERT、DELETE 和 UPDATE 语句加以验 证。(2)创建一个行列子集可更新视图,并利用 INSERT、DELETE和UPDATE语句加以验证。(3)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。3实验要求(1)深入复习教材第三章 SQL有关视图语句。(2)根据书上的例子,针对TPCH数据库模式设计各种视图语句,每种类型视图语句至少要设计一个,描述清楚视图要求,运行你所设计的视图语句,并截图相应的实验结果,每幅截图并 要有较为详细的描述。也可以按照附1所列示例做实验。实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。思考题:Kin

3、 gbaseES把视图的定义存储在那个系统表中?如何查看某个视图的定义?4实验步骤4.1掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp1,要求列出供应零件的编号、零件名称、可用数量、零售价格、供应价格和备注等信息。CREATE VIEWV_DLMU_PartSupp1 (PARTKEY ,NAME ,AVAILQTY ,RETAILPRICE ,SUPPLYCOST COMMENT )ASSELECT P.PARTKEY ,P.NAME ,PS.AVAILQTY ,P.RETAILPRICE ,PS.SUP

4、PLYCOST ,P.COMMENTFROM PART P,PARTSUPP PSWHERE P.PARTKEY = PS.PARTKEY AND PS.SUPPKEY IN(SELECT SUPPKEYFROM SUPPLIER SWHERE SNAME =海事大学)1PARTKEYNAMEAVAILQTY12312RETAIL? RICE11SUPPLYCOST1COMMENTNULLllZZZj22534534223NULL337&45.54NULL(2) 创建视图(不能省略列名的情况)创建一个视图V_CustAvgOrder,按顾客统计平均每个订单的购买金额和零件种类数量,要求输出顾客

5、编号,姓名,平均购买金额和平均购买零件种类数量。CREATE VIEW V_CustAvgOrder (CUSTKEY ,NAME ,AVGPRICE ,AVGQUAN )ASSELECT O.CUSTKEY ,C.name,AVG (O.TOTALPRICE ),AVG (L.QUANTITY )FROM CUSTOMER C,ORDERS O,lineitem LWHERE C.CUSTKEY = O.CUSTKEY AND L.ORDERKEY =O.ORDERKEYGROUP BY O.CUSTKEY ,(这里容易岀错,结果必须在GROUP中岀现)使用 GROUP BY子句后,SELE

6、CT子句的目标列表达式列表中只能岀现分组属性和集函数cusimNAMEAVGPRICEM 讯 UAND_強三3COO15002奎四30002331333333Sa3史密斯ma3000A迪伦WOO30006卡塞尔300030007雷锂looa2000NULLNLILNULLAter删除视图(RESTRICT / CASCADE )。创建顾客订购零件明细视图V_CustOrdDetails,要求列出顾客编号、姓名、购买零件数、金额;然后在该视图的基础上,实现(2)中的视图V_CustAvgOrder ;然后删除利用 RESTRICT选项删除视图 V_CustOrdDetails,观察现象,并解释原

7、因。利用CASCADE选项删除视图 V_CustOrdDetails,观察现象,并检查 V_CustAvgOrder是否存 在?解释原因?CREATE VIEW V_CustOrdDetails (CUSTKEY ,NAME QUANTITY ,TOTALPRICE )ASSELECT C.CUSTKEY ,C.NAME 丄.QUANTITY ,O.TOTALPRICEFROM CUSTOMER CQRDERS O,LINEITEM LWHERE C.CUSTKEY =O.CUSTKEY AND O.ORDERKEY =L.ORDERKEYMAMEQciAtnrnTOT ALPRICED张三2

8、00030C02李四30003000X张三100030004200030C02李四2M030C06500030002李四2M030C03史密斯3000300斗迪伦他Q30007雷谨200030C0*NHLULLAtiiAW利用RESTRICT删除视图时显示出错,因为在V_CustOrdDetails的基础上建立了 V_CustAvgOrder。使用 CASCADE 删除显示 V_CustOrdDetails 和 V_CustAvgOrder 不存在PAFLTKEVAVAILQTYSUPPLVCOST卜El12312225345343.3325544I drop view _匸ListOrdDe

9、rails* SELECT *L FROM 7 CatAvgCrder的消息消息20S级别16J状态!,过程V CusEJLvOrder,第记行 对象名无如消息4413; 别1, M =行由于鄒定:错误,无法使用视團或函数,好36曲亠八4.2掌握视图更新和 WITH CHECK OPTION 的高级使用方法创建一个行列子集可更新视图,并利用 INSERT、DELETE和UPDATE语句加以验证。创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp2,要求列出供应零件的编号、可用数量和供应价格等信息。然后通过该视图分别增加、删除和修改一条“海大汽配”零件供应记录,验证该视图是否

10、是 可更新的?CREATE VIEW V_DLMU_PartSupp2 (PARTKEY ,AVAILQTY ,SUPPLYCOST) ASSELECT PARTKEY ,AVAILQTY ,SUPPLYCOSTFROM PARTSUPPWHERE SUPPKEY IN(SELECT SUPPKEYFROM SUPPLIER SWHERE SNAME -海事大学)PARTKEVAVWLQT7suWLveesrr卜1U3121253453433325544AWNUUUPDATE V_DLMU_PartSupp2SET SUPPLYCOST =2WHERE PARTKEY = 1DELETEFRO

11、M V_DLMU_PartSupp2WHERE PARTKEY = 1PARTKEYAVAILC7Ysupplycoct号534534332554斗*NULL/NULLNULL插入受限,无法更新INSERT INTO V_DLMU_PartSupp2VALUES (4,23434,3)(5)仓U建视图(WITH CHECK OPTION ),并禾U用 INSERT、DELETE 禾口 UPDATE 语句加以验 证。利用WITH CHECK OPTION 选项,创建一个“海大汽配”供应商供应的零件视图 V_DLMU_PartSupp3,要求列出供应零件的编号、可用数量和供应价格等信息。然后通过该

12、视图分别增加、删除和修改一条“海大汽配”零件供应记录,验证WITH CHECK OPTION 是否起作用?并比较第(4)题与本题结果有何异同?PAFITKEYAVAILQTY5UPPLYCQ5T6冠幻2534543325已斗灌NULLALEENUllCREATE VIEW V_DLMU_PartSupp3 (PARTKEY ,AVAILQTY ,SUPPLYCOST) ASSELECT PARTKEY ,AVAILQTY ,SUPPLYCOSTFROM PARTSUPPWHERE SUPPKEY IN(SELECT SUPPKEYFROM SUPPLIER SWHERE SNAME =海事大学

13、)WITH CHECK OPTIONPARTKEYAVAILQTYSUPPLVCOSTUPDATE V_DLMU_PartSupp3kD召站斗?ASET SUPPLYCOST =225345342WHERE PARTKEY =23325544*NJ.1DELETEFROM V_DLMU_PartSupp2WHERE PARTKEY = 1删除修改正常插入受限制无法完成(5)的结果与(4)相同,两个表都伴随着基本表的更新(6)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。SQL第(1)题中创建的视图是可更新的吗?第(2)创建的视图是可更新的吗?分别通过更新语句加以验证,并说明原因。

14、CREATE VIEW V_CustOrdDetails2 (CUSTKEY ,NAME ,AVGQUAN ,AVGTOTAL )ASSELECT C.CUSTKEY ,C.NAME ,AVG (L.QUANTITY ),AVG (O.TOTALPRICE ) FROM CUSTOMER CQRDERS O,LINEITEM LWHERE C.CUSTKEY =O.CUSTKEY AND O.ORDERKEY =L.ORDERKEYCUSTKEYNAMEAVGQUANAVtjTOTAJ.a张三155030002李四2333.33333333.3M03史巒斯30003tM04迪伦30003000

15、6卡塞尔30003000720003000AUJAUi白 nrSEIlT I WTO V CusvOrdLetaxlsS% SS噩蟲诸鹉益遵養;亶;爲更新或插入失败因其包含派生域或常量如t UPDATE V 匚lit 匸OrdD色匸SET AVGOJA2J=AVGQUAH* 1WHERE E5TKEY=1廿哨息消息06f级别血伏态一第丄行对视图咸函数的更新或插入失败因其包含派主域或常量域。 delete 视图V_CustOrdDetails2不可更新fram V CustOrdDtetai1s2wTiere霜更新,因为修改会影响多个基怎第(1)题的表可以更新。(1)更新的同时PART表也同步更

16、新可进行更新操作。因为其为行列子视 图可以更新。 UPDATE T DLEU FART5UPE1-SET 5UPFLYC0ST=SUPPLYC0ST*l. 1 SELECT * 1二结果由消患PAFTTKET NAM EWAILQTYRETAILOR IG ESUPPLYCQ5TCOI4M ENT1 Dj雌534&y222.20MULL23蛭丝7325&45.54.40NULLINSERT INTO V_DLMU_PARTSUPP1 (PARTKEY )VALUES (10)AttiAUJ10fJLtifinAUXMILfAAltHJLL对于(2)题,因为使用了聚集函数,不能转化为对基本表的更新I1 3FDATZ T :?3TAVZC TiCLRSET NiE-TS-3VKERE CU5TKE Y-L曲禺H03t堰剔吗狀歪1,窮“亍囚”对视国取魏I -_: VSTBVWR3Efl 1包含聚合、DISriBCI或GROUP BT亍迁或若F:VQT琐tfflFIET5 总结与体会实验中出现的问题及其解决方案因为时间太长视图很多重要的操作已经遗忘了,造成了实验进度缓慢。复习了 ppt 之后重温了学过 的知识点。总结视图是SQLServe

温馨提示

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

评论

0/150

提交评论