实验题目 实验三 创建和使用视图、索引、存储过程
一、实验目的
1、理解视图、索引、存储过程的定义、索引、存储过程的优点与、索引、存储过程的工作原理;
2、掌握在查询分析器和企业管理器中创建、修改及删除视图、索引、存储过程; 3、掌握创建视图、索引、存储过程的SQL语句的用法;并能够熟练利用视图向表中插入、删除和修改数据。
4、掌握使用视图来查询数据。 二、实验主要仪器设备和材料
1.计算机及操作系统:PC机,Windows; 2.数据库管理系统:SQL Server 2005; 三、实验方法、步骤及结果测试 (一)、视图
1、建立?计算机学院?的学生基本情况视图ies_student_view,该视图包括计算机学院所有学生的学号、姓名、性别、出身年月、专业名称。 2、执行ies_student_view视图并观察结果。
3、建立课程1(上课编号)的学生名册的视图,该名册包括学生的学号、姓名、专业名称和这门课的成绩;并查询结果。
4、建立统计不及格情况的视图,列出不及格学生的学号、姓名和不及格的课程代码; 5、执行视图并观察结果。
6、修改视图ies_student_view,使该视图包括所有学生的学号、姓名、性别、出身年月、学院名称、专业名称。
7、执行ies_student_view视图并观察结果。 8、删除视图ies_student_view。并查询结果。 记录上述实验过程并截图说明。 查询分析器执行情况: 创建视图的SQL语句及执行结果显示 CREATE VIEW ies_student_view AS SELECT s_no,sname,sex,sbirthday,spname FROM student_3113006393,speciality_3113006393 WHERE student_3113006393.spno=speciality_3113006393.spno查询视图SQL语句及执行结果截图 1
查询分析器执行情况: 创建视图的SQL语句及执行结果显示 CREATE VIEW tcid1_student_view AS SELECT student_3113006393.s_no,sname,spname,score FROM student_3113006393,speciality_3113006393,student_course_3113006393 WHERE student_3113006393.spno=speciality_3113006393.spno AND student_3113006393.s_no=student_course_3113006393.s_no AND tcid='1'查询视图SQL语句及执行结果截图 查询视图SQL语句及执行结果截图 查询分析器执行情况: 创建视图的SQL语句及执行结果显示 CREATE VIEW fail_student_view AS SELECT student_3113006393.s_no,sname,Course_3113006393.cno FROM student_3113006393,student_course_3113006393, Course_3113006393,teacher_course_3113006393 WHERE student_3113006393.s_no=student_course_3113006393.s_no AND student_course_3113006393.tcid=teacher_course_3113006393.tcid AND Course_3113006393.cno=teacher_course_3113006393.cno AND score<60
2
查询分析器执行情况: 修改视图的SQL语句及执行结果显示 ALTER view ies_student_view as select dept_name,s_no,sname,sex,sbirthday,spname from student_3113006393,department_3113006393,speciality_3113006393 where student_3113006393.dno=department_3113006393.dno and student_3113006393.spno=speciality_3113006393.spno 查询视图SQL语句及执行结果截图
查询分析器执行情况: 删除视图的SQL语句及执行结果显示 DROP VIEW ies_student_view 查询视图SQL语句及执行结果截图 (二)、索引
在student_course表(学生选课表)的学生学号(sno)列上创建索引sc_sno_index
3
查询分析器执行情况: 创建索引的SQL语句及执行结果截图 创建索引的SQL语句及执行结果显示 CREATE INDEX sc_sno_index on student_course_3113006393(s_no desc) (三)、存储过程
题目(1)创建存储过程list_student_department,该存储过程接收学院代码作为输入参数,列出数据库sc中某个院系学生的全部信息。 查询分析器执行情况: SQL语句 CREATE Procedure list_student_department @dno char(6) AS SELECT s_no,sname,sex,sbirthday,spno,class_no,student_3113006393.dno FROM student_3113006393,department_3113006393 WHERE department_3113006393.dno=@dno AND student_3113006393.dno=department_3113006393.dno 执行结果截图显示
题目(2)使用SQL语句执行存储过程list_student_department
4
查询分析器执行情况: 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) AS INSERT INTO student_course_3113006393(tcid,s_no) SELECT @tcid,s_no FROM student_3113006393 WHERE 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) 执行结果截图显示 5