《视图和索引的创建和使用实验报告.docx》由会员分享,可在线阅读,更多相关《视图和索引的创建和使用实验报告.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程名称:数据库原理绩成实验项目名称:视图和索引的创建和使指导老签一、实 验 目 的:(1) 掌握创建视图的 SQL 语句的用法。(2) 掌握修改视图的方法。(3) 熟悉视图更新与基本表更新的区别与联系;认识视图的作用。(4) 熟悉索引的作用,以及不同类型索引的区别。(5) 学会用 T-SQL 语句对表创建和删除索引二、实 验 设 备 与 器 件+Sql server 2008Win7三、实 验 内 容 与 步 骤利用备份文件 school,还原数据库,然后完成以下实验内容:(1) 用 T-SQL 语句,定义信息系学生基本情况视图 V_IS。(2) 用 T-SQL 语句,将 Student,C
2、ourse 和 SC 表中学生的学号,姓名,课程号,课程名,成绩定义为视图 V_S_C_G。(3) 用 T-SQL 语句,将各系学生人数,平均年龄定义为视图 V_NUM_AVG。(4) 用 T-SQL 语句,定义一个反映学生出生年份的视图 V_YEAR。(5) 用 T-SQL 语句,将各位学生学号、选修课程的门数及平均成绩定义为视图 V_AVG_S_G。(6) 用 T-SQL 语句,将各门课程的课程号、选修人数及平均成绩定义为视图 V_AVG_C_G。(7) 用 T-SQL 语句完成以下视图操作,查看结果,并分析原因。通过视图 V_IS,将学号为“5”的学生姓名更改为“张小立”,并查看结果;通
3、过视图 V_IS,新增加一个学生记录 (6,黄笑,19, 男,IS),并查看结果。通过视图 V_IS,新增加一个学生记录 (7,李霞,19, 女,MA),并查看结果。通过视图 V_IS,删除学号为“6”的学生信息,并查看结果。通过视图 V_S_C_G,将学号“2”的姓名改为“刘晓晨”,能否实现?若无法实现说明原因。通过视图 V_AVG_S_G,将学号“1”的平均成绩改为 90,能否实现?若无法实现说明原因。修改视图 V_IS 定义,添加 WITH CHECK OPTION 语句,然后用 update 语句修改“5”的学生所在系,改为MA, 能否实现?若无法实现说明原因。修改视图 V_YEAR,
4、对其进行加密处理,并查看结果。(8) 写出 T-SQL 语句:利用表和前面所建视图,查询平均成绩为90 分以上的学生学号、姓名和成绩;(9) 写出 T-SQL 语句:利用表和前面所建视图,查询成绩大于课程平均成绩的学生学号、课程号和成绩;(10) 写出 T-SQL 语句:利用表和前面所建视图,按系分组统计平均成绩 80 分以上的人数,按降序排列。(11) 为 student 表创建一个复合索引 i_sdept_sno,以院系升序、学号降序。(12) 在 student 表的 sname 列上建立普通降序索引。(13) 在 course 表的 cname 列上建立唯一索引。(14) 将 sc 表
5、的原先在 sno,cno 列上的聚集索引,改为在 sno 列上建立。(15) 用系统过程 sp_helpindex 查看表 student 中的索引信息。(16) 用系统过程 sp_rename,将索引 i_sdept_sno 的名称改为 i_s。(17) 删除索引 i_s。四、实 验 总 结:。V_IS 语句,定义信息系学生基本情况视图 T-SQL)用 1(CREATE VIEW V_IS ASSELECT* FROM student WHERE sdept=IS(2) 用 T-SQL 语句,将 Student,Course 和 SC 表中学生的学号,姓名,课程号,课程名,成绩定义为视图 V
6、_S_C_G。CREATE VIEW V_S_C_G ASSELECT ,SNAME,CNAME,FROM Student,Course,SC WHERE = AND =(3) 用 T-SQL 语句,将各系学生人数,平均年龄定义为视图 V_NUM_AVG。CREATE VIEW V_NUM_AVGASSELECT COUNT(SNO)DEPTNUM,AVG(SAGE)AGE,SDEPTFROM Student GROUP BY SDEPTV_YEAR。4()用 T-SQL 语句,定义一个反映学生出生年份的视图 CREATE VIEW V_YEAR ASSELECT SNAME,2014-SAG
7、E出生年份FROM Student语句,将各位学生学号、选修课程的门数及平均成绩定义为视图( 5)用 T-SQLV_AVG_S_G。V_AVG_S_G VIEW CREATE AS 平均成绩)(,选修门数 COUNTSNAMESELECT 学号, 姓名,(*)AVGGRADE studentFROM ,SCcourse,AND= WHERE SNAME GROUPBY ,(6) 用 T-SQL 语句,将各门课程的课程号、选修人数及平均成绩定义为视图 V_AVG_C_G。CREATE VIEW V_AVG_C_G ASSELECT 课程号,AVG(GRADE)平均成绩,COUNT(CNO)选修人
8、数 FROM SCCNO BYGROUP(7) 用 T-SQL 语句完成以下视图操作,查看结果,并分析原因。通过视图 V_IS,将学号为“5”的学生姓名更改为“张小立”,并查看结果; UPDATE V_ISSET SNAME=张小立WHERE SNO=5视图结果: Student 表结果显示在视图操作,会影响到建立视图时用的 STUDENT 这张表格。通过视图 V_IS,新增加一个学生记录 (6,黄笑,19, 男,IS),并查看结果。INSERT INTO V_IS(SNO,SNAME,SSEX,SAGE,SDEPT)VALUES(6,黄笑,男,19,IS) SELECT*FROM V_IS
9、WHERE SNO=6通过视图 V_IS,新增加一个学生记录 (7,李霞,19, 女,MA),并查看结果。INSERT INTO V_IS(SNO,SNAME,SSEX,SAGE,SDEPT)VALUES(7,李霞,女,19,MA) SELECT*FROM V_IS WHERE SNO=7但是视图没有此条数据通过视图 V_IS,删除学号为“6”的学生信息,并查看结果。DELETEFROM V_IS 6WHERE SNO=通过视图 V_S_C_G,将学号“2”的姓名改为“刘晓晨”,能否实现?若无法实现说明原因。 UPDATE V_S_C_GSET SNAME=刘晓晨 WHERE SNO=2可实现
10、此次操作通过视图 V_AVG_S_G,将学号“1”的平均成绩改为 90,能否实现?若无法实现说明原因。UPDATE V_AVG_S_G SET 平均成绩=90 1=WHERE 学号不能实现,原因是系统无法修改各科成绩,以使平均成绩为 90,所以 V_AVG_S_G 视图时不可更新的。修改视图 V_IS 定义,添加 WITH CHECK OPTION 语句,然后用 update 语句修改“5”的学生所在系,改为MA, 能否实现?若无法实现说明原因。ALTER VIEW V_IS ASSELECT * FROM STUDENT WHERE SDEPT=ISWITH CHECK OPTION UPD
11、ATE V_ISSET SDEPT=MA WHERE SNO=5无法实现此操作,原因是目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果又不符合 WITH CHECK OPTION 约束的条件。修改视图 V_YEAR,对其进行加密处理,并查看结果。ALTER VIEW V_YEARWITH ENCRYPTION ASSELECT SNAME,2014-SAGE 出生年份 FROM STUDENT(8) 写出 T-SQL 语句:利用表和前面所建视图,查询平均成绩为90 分以上的学生学号、姓名和成绩;SELECT V_AVG_S_G.学号,V_AVG_S_G.平均成绩from student,V_AVG_S_G90平均成绩.V_AVG_S_G and 学号.V_AVG_S_G= where(9) 写出 T-SQL 语句:利用表和前面所建视图,查询成绩大于课程平均成绩的学生学号、课程号和成绩;select 学号, 课程号, 成绩from sc,V_AVG_C_G平均成绩 V_AVG_C_G.and.课程号 V_AVG_C_G where=争取下次老师布置的实验按时完成。所以之做到这步,有的操作花了很多时间,对语句不熟悉, 心得体会: