数据库系统实验三

上传人:今*** 文档编号:105741786 上传时间:2019-10-13 格式:DOC 页数:9 大小:585.50KB
返回 下载 相关 举报
数据库系统实验三_第1页
第1页 / 共9页
数据库系统实验三_第2页
第2页 / 共9页
数据库系统实验三_第3页
第3页 / 共9页
数据库系统实验三_第4页
第4页 / 共9页
数据库系统实验三_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《数据库系统实验三》由会员分享,可在线阅读,更多相关《数据库系统实验三(9页珍藏版)》请在金锄头文库上搜索。

1、实验题目 实验三 创建和使用视图、索引、存储过程 一、实验目的1、理解视图、索引、存储过程的定义、索引、存储过程的优点与、索引、存储过程的工作原理;2、掌握在查询分析器和企业管理器中创建、修改及删除视图、索引、存储过程;3、掌握创建视图、索引、存储过程的SQL语句的用法;并能够熟练利用视图向表中插入、删除和修改数据。4、掌握使用视图来查询数据。二、实验主要仪器设备和材料1计算机及操作系统:PC机,Windows;2数据库管理系统:SQL Server 2005;三、实验方法、步骤及结果测试(一)、视图1、建立“计算机学院”的学生基本情况视图ies_student_view,该视图包括计算机学院

2、所有学生的学号、姓名、性别、出身年月、专业名称。2、执行ies_student_view视图并观察结果。3、建立课程1(上课编号)的学生名册的视图,该名册包括学生的学号、姓名、专业名称和这门课的成绩;并查询结果。4、建立统计不及格情况的视图,列出不及格学生的学号、姓名和不及格的课程代码;5、执行视图并观察结果。6、修改视图ies_student_view,使该视图包括所有学生的学号、姓名、性别、出身年月、学院名称、专业名称。7、执行ies_student_view视图并观察结果。8、删除视图ies_student_view。并查询结果。记录上述实验过程并截图说明。查询分析器执行情况:创建视图的

3、SQL语句及执行结果显示CREATE VIEW ies_student_viewASSELECT s_no,sname,sex,sbirthday,spnameFROM student_3113006393,speciality_3113006393WHERE student_3113006393.spno=speciality_3113006393.spno查询视图SQL语句及执行结果截图查询分析器执行情况:创建视图的SQL语句及执行结果显示CREATE VIEW tcid1_student_viewASSELECT student_3113006393.s_no,sname,spname,

4、scoreFROM student_3113006393,speciality_3113006393,student_course_3113006393WHERE student_3113006393.spno=speciality_3113006393.spno AND student_3113006393.s_no=student_course_3113006393.s_no AND tcid=1查询视图SQL语句及执行结果截图查询分析器执行情况:创建视图的SQL语句及执行结果显示CREATE VIEW fail_student_viewASSELECT student_311300639

5、3.s_no,sname,Course_oFROM student_3113006393,student_course_3113006393,Course_3113006393,teacher_course_3113006393WHERE student_3113006393.s_no=student_course_3113006393.s_no AND student_course_3113006393.tcid=teacher_course_3113006393.tcid AND Course_o=teacher_course_o AND score60查询视图SQL语句及执行结果截图查询

6、分析器执行情况:修改视图的SQL语句及执行结果显示ALTER view ies_student_viewasselect dept_name,s_no,sname,sex,sbirthday,spnamefrom student_3113006393,department_3113006393,speciality_3113006393where student_3113006393.dno=department_3113006393.dnoand student_3113006393.spno=speciality_3113006393.spno查询视图SQL语句及执行结果截图查询分析器执行

7、情况:删除视图的SQL语句及执行结果显示DROP VIEW ies_student_view查询视图SQL语句及执行结果截图(二)、索引在student_course表(学生选课表)的学生学号(sno)列上创建索引sc_sno_index 查询分析器执行情况:创建索引的SQL语句及执行结果显示CREATE INDEX sc_sno_indexon student_course_3113006393(s_no desc)创建索引的SQL语句及执行结果截图(三)、存储过程题目(1)创建存储过程list_student_department,该存储过程接收学院代码作为输入参数,列出数据库sc中某个院

8、系学生的全部信息。查询分析器执行情况:SQL语句CREATE Procedure list_student_departmentdno char(6)ASSELECT s_no,sname,sex,sbirthday,spno,class_no,student_3113006393.dnoFROM student_3113006393,department_3113006393 WHERE department_3113006393.dno=dno AND student_3113006393.dno=department_3113006393.dno执行结果截图显示题目(2)使用SQL语句执

9、行存储过程list_student_department查询分析器执行情况:SQL语句EXEC list_student_department 510000执行结果截图显示题目(3)编写存储过程将某班选修某门课程的所有学生的学号和上课编号插入到student_course表中查询分析器执行情况:SQL语句CREATE PROCEDURE intoclass(dno char(6), spno char(8),class_no char(4),tcid integer)ASINSERT INTO student_course_3113006393(tcid,s_no)SELECT tcid,s_

10、noFROM student_3113006393WHERE dno=dno AND spno=spno AND class_no=class_no AND s_no not IN(SELECT s_no FROM student_course_3113006393 WHERE tcid=tcid)执行结果截图显示题目(4)使用SQL语句执行(3)创建的存储过程查询分析器执行情况:SQL语句EXEC intoclass 510000,080605,0307,2执行结果截图显示题目(5)使用SQL语句查看(3)创建的存储过程代码查询分析器执行情况:SQL语句EXEC sp_helptext in

11、toclass执行结果截图显示题目(6)使用SQL语句删除一个前面建立的存储过程查询分析器执行情况:SQL语句DROP PROC intoclass执行结果截图显示四、实验中出现的问题及解决方案无就是没涉及到如何使用索引,希望实验以后能添加多一些内容五、思考题1、视图更新的优点答:1.可以访问表中列的子集。在表中有些列是比较敏感的数据不想用户看到的,如用户密码,员工工资等,用视图可以隐藏这些列。2.可以访问表中行的子集。有时不想让用户看到与TA无关的数据时,可以在where条件中过滤。3.可以重命名列名。在表中有些列名定义没有代表意义,如列“abc”,为了让用户看到列名就可以知该列是什么数据,

12、可以在组建视图时重命名列名。4.可以快速访问两表或多表连接所组成的数据。有时要访问表间连接所组成的数据集,可以把查询出来的数据集定义成视图,可以帮助快速访问所需的数据。 5.可以快速读取用聚合函数运算所返回的数据集。有时用户要读取经过用聚合函数复杂运算后的结果集,每次读取都是很耗时,这时可以把这运算后的数据集组成视图,就可以避免每次读取都要运算的消耗。总的来讲,使用视图在提高安全性的同时也加快查询的速度。2、哪些视图是可以更新的?哪些视图是不可以更新的?针对实验举例说明。答:(1) 若视图是基于多个表使用联接操作而导出的,那么对这个视图执行更新操作时,每次只能影响其中的一个表。(2) 若视图导

13、出时包含有分组和聚合操作,则不允许对这个视图执行更新操作。(3) 若视图是从一个表经选择、投影而导出的,并在视图中包含了表的主键字或某个候选键,这类视图称为行列子集视图。对这类视图可执行更新操作。本实验的ise_student_view视图的字段是来自字段表达式的,所以不能更新。3、什么是存储过程,什么是触发器,两者有什么区别?答:触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT 或 DELETE。触发器可以查询其它表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。存储过程是一组为了

14、完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。触发器与存储过程可以说是非常相似,可以说是一种变种的存储过程,触发器和存储过程一样都是SQL语句集,通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以确保数据的完整性。触发器不同于存储过程,触发器主要是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。当对某一表进行诸如UPDAT

15、E、INSERT、DELETE这些操作时,SQLSERVER就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则。4、teacher_course表中的class_no是否是外码?请说明判断的理由。答:不是,不依赖外表主键,也不含外码,所以不是。5、teacher_course表中的class_no应该与class表中的class_no建立对应关系,即第一、当向teacher_course表中插入一条元组时,必须保证class_no是class表中的class_no;第二、当删除或修改class表中的class_no时,teacher_course表中的class_no也应该随之变化或不允许变化。请用触发器完成上述要求。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号