2023年西北工业大学数据库实验报告4.docx
斤有列)&A靠 c .epnoccredditFmsnsslsb 0D0D列别名 表拓出 其类型排序顺序而透器或或32.SELECT dbo.SC.grade AS 成磺.dbo.S.sno AS 字号,dbo.S.ssex AS 性别FROM dbo.C INNER JOINdbo.SC ON dbo.Ccno = dbo.SC.cno INNER JOINWHERE (dbo.C.cname = 8J5W:') AND (dbo.S.sbirth BETWEEN ,1996-01-01, AND ,1996-12-313数据库原理实验报告题目:实验四:视图与索引学号姓名班级日期孟玉军100 1 14021 6.1 0 . 18一.实验内容、环节以及结果.在Student数据库中,运用图形用户界面,创建一个选修了 “数据库原理”课程并且是1996年出生的学生的视图,视图中涉及学号,性别,成绩三个信息。(5分)国 sc 二(所有列) sno eno 司 grade1 .用两种不同的SQL语句创建第五版教材第三章第9题中规定的视图(视图名:V_SPJ) (10分,每种方法5分)。1) .c reate view v_ s p jass e 1 e c t sn o , p n o, qtyf rom J, SPJw h er e j . jno= s pj. jn o and j n ame=,三建'2) .c r eate view vie w_2a sse 1 e c t s n o , pno, qt yfrom SPJwh ere jno = (se 1 ec t jno from jwhere jname ='三建)3.用SQL语句完毕第五版教材第三章第9题中的视图查询(10分,每小题5分)。1) .select pn o , sum (qty) a s sum_qtyfrom v_s p jgr o up by p n o结果:s结果以消息pno sum_qty1 旧:4002 P3 8003 P5 5002) .sei e c t p no, qtyfrom v _s p jwh e re s n。='S 1 'C3结果反消息 pno qty1 I Pl S 2004.用SQL语句完毕视图的数据更新。(15分,每题5分)(1)给视图V_SPJ中增长一条数据。提醒:SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO 为NULL,所以视图中没有该条数据。SPJ表中JNO不能为空时,可以使用instead。f触发器实现。:jn。允许为空时:i n s er tint o v_spjva 1 ues(' S4','P3', 1 00)结果改变:S5P2J4100S2P5J2NULLS4P3NULL地NULLNULLNULLNULLs el e ct * fr o m v _spj口结果消息snopnoqty1Isi 1Pl2002S2P34003S2P54004S3Pl2005S3P32006S4P51007S5P3200没有出现刚刚插入的那条数据:j no不能为空时:snonchar(10)Bpnonchar(10)Bjnonchar(10)qtyintJno不能为NULL设立触发器:create trigge r i n s t ead_of_ i nse r t o n v_sp J i n s t ead of i n se ras beg i ndeclare sno c h ar(10)d e clare pno c ha r (10)declar e q ty ints e 1 e ct sno=sno, pno= p n o » q ty=qt yf r om insertedi nsert into SP J val u e s (sno, pno,' J 1', qty) end执行语句:insert into v_ s pjval ues (' S5','P4',1 00)结果:S5P4JI100(2)修改视图V_SPJ中的任意一条数据的供应数量。up d a t ev _spjset q ty=3 0 0where s no ='SI'a nd p no ='Pl'修改前:snopno|noqryS1PlJI200修改后:snopnojnoqxySIPlJI300ric,io1 rm(3)删除视图V_SP J中的任意一条数据(注意所创建视图可以视图消解时,才干正常删除,否则会删除失败:也可以考虑用instead of触发器实现)。创建in s t ead of触发器:c r eate trigger ins t ead_of_d e le t eon v _spjinstead of delete a sbegi nd eclar e s n o c ha r (10)de c la r e © p no ch a r (1 0 )d e cl a re q ty i ntselect sno=sno, pn o =p n o, q t y =qtyf rom deletedde 1 et e SPJ wher e s n o =sno a nd pn o =pn o and j n o=,J 1 and qty = qty.用图形用户界面对Stude n t数据库中C表的C n。字段创建一个降序排列的唯一索引,e nd删除前:删除d e whpiji3ooSIPlJ3100SIPlJ4700:第一条数据:et e fr o m v_ s p je re s n o=/ SI' and pn o =* PTsnopnojnoqtypiJ3iooSIPlJ4700SIP2J2100ACA.A -索引名称I X.CNoo (5分) (常规):类型索引列eno (DESQ是唯T否/标识=(名称)IX_cno说明/表设计器包含的列.使用SQL语句对Sludent数据库完毕以下的索引操作。(15分,每题5分)(1)在C表的CName属性上创建一个非唯一性的聚簇索引,索引名I X CName。(提醒:创建这个聚簇索引之前,需要一方面删除C表的主键约束。SQL Ser ver中,给某张表指定主键时,会自动创建为主属性一个聚簇索引。)先删除原主键:alter table Cdro p con s traint pk cnoc re a te c 1 u stered index I X_C n a me o n C (cn a me)(2)在SC表上创建一个名为IX_Cnosn。的非聚簇复合索引,该索引是针对sno, cn 。属性集建立的升序索引。ere ate no n c lus t er e d ind e x IX_ c nosno on SC ( c n o a sc , s n o as c)(3)删除C表的索引IX_CNameodro p in d ex C. I X _ C nam e.自己设计一个实验验证索引对数据库查询效率的提高作用。(40分)(提醒:需要数据量比较大的情况下才容易进行对比)1 ).运用数生成8585个数据来进行查询4/ X9718948296418656967245829726939897666480954302939663759296511365148586/8586 >| > |®2)未建立索引之前:查询选修了1课程的学生的学号和成绩: s elect sno, gradefrom SC whcr e cno=, 1100 % 国结果怎消息c 八5 95019 58数据库6 95022 56数据库startendtime/ms1(16:22:27.4530000 1 16:22:27,5200000 66:IZ3I查询2:(与该批有关的)餐词开销:100天select sno,grade ,same from sc,c where o-o and sc.eno-11'玦少索弓 1(影响 49.4264) : CREATE NONCLUSTERED INDEX Naie of Missing Index, gysname, ON dbo . S-Table ScanCC开请:3、3国Table Spool >Table Scan(Lazy Spool)(SC)开徜:13 %开请:5S %此时可以通过建立索引来减少查询开销 3).建立索引GOCREATE NONCLUSTERED I NDEX <Name of Mis sing I n dex, s y sname, >ON d b o . SC ( eno)INCLUDE (sno, grade)GO再进行查询:49871178数据库59871271数据库69871693数据库79872467数据库89872889数据库1 he:26:00. 4370000 i 16:26:00.4800000 431 he:26:00. 4370000 i 16:26:00.4800000 43ASSIGNstartendtime/ms查询2:(与该批有关的)查询开销:100%select sno,grade ,cname from sc,c where o«o and o='1'nSELECT开消:0 %nSELECT开消:0 %退Nested Loops(Inner Join)开请:0 TTable Scan(C)开销:6 向Index Seek (NonClustered)SC.of Missing Index, gysna一开俏:34 %二.实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)除了标题内容以外,该部分内容中还可以写对于实验的一些感受,建议,意见等。通过创建合适的索引,可以令问题简朴化,减少查询开支,加快查询速度批阅者: 批阅日期:实验成绩:批注: