索引和视图实验报告

更新时间:2023-11-14 23:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实 验 报 告 专业 班级 学号 姓名 课程名称 数据库应用与开发 学年2014 -2014学期1 /2 √ 课程类别 专业必修 √ 限选 任选 实践 实验时间2014 年5月29日 实验名称 索引和视图 实验目的和要求 在建立的实验数据库的基础上,掌握索引、统计信息和视图等数据对象的基本概念和基本操作并完成索引和视图的创建。 实验软硬件要求 软件:SQL Server 2005 硬件:PC机 实验内容、方法和步骤 (见附页) 实验结果 (见附页) 小结 通过本次实验,我掌握了索引、统计信息和视图等数据对象的基本概念和熟悉了各种基本操作。 评定成绩: 批阅教师: 年 月 日

7-1编程在 teaching 数据库中的 student 表的 sname 列上创建唯一索引IDX_sname。

USE teaching GO

CREATE UNIQUE INDEX IDX_sname ON student(sname)

7-2 编程在teaching数据库中的student表的studentno和classno列上创建组合索引IDX_sc。

USE teaching

IF EXISTS(SELECT name FROM sysindexes WHERE name='IDX_sc') DROP INDEX student.sc GO

CREATE INDEX IDX_sc ON student(studentno,classno)

7-3 重新组织 teaching 数据库中 student 表上的 IDX_sc 索引。

USE teaching

ALTER INDEX IDX_sc ON dbo.student REORGANIZE

7-4 重新生成 teaching 数据库中 student 表上的 IDX_sname 索引,设置填充索引,将填充因子设置为80%,设置将中间排序结果存储在tempdb中。

USE teaching

ALTER INDEX IDX_sname ON dbo.student

REBUILD WITH(PAD_INDEX = ON,FILLFACTOR = 80,SORT_IN_TEMPDB = ON)

7-5 重新生成 teaching 数据库中 student 表上的 C_studentno 索引,将其修改为聚集唯一索引,并指定该索引的叶级页的填充度为70%。

USE teaching GO

CREATE UNIQUE CLUSTERED INDEX C_studentno ON dbo.student(studentno)

WITH(PAD_INDEX = ON,FILLFACTOR = 70,DROP_EXISTING = ON)

7-6 删除 teaching 数据库中 student 表上的聚集索引 C_studentno 和非聚集索引UC_classno。

USE teaching GO

DROP INDEX student.C_studentno,student.UC_classno

7-8 通过 DBCC SHOW STATISTICS 命令显示 student 表 IDX_sc 索引的统计信息。

USE teaching GO

DBCC SHOW_STATISTICS (student, IDX_sc)

7-9 编程更新student表IDX_sc索引的统计信息

USE teaching

GO

UPDATE STATISTICS student IDX_sc

7-10 编程更新student表上所有索引的分布统计信息

USE teaching

GO

UPDATE STATISTICS student

7-11 编程在teaching数据库中创建一个名称为V_course的视图,包含所有类别为“必修”的课程信息。

use teaching

go

create view v_course as select * from course

where type ='必修'

7-12 给出一个程序,在teaching数据库中创建一个名称为v_final的视图,包含学生学号、姓名、课程号、课程名和期末成绩,按学号升序排序,相同学号的记录按课程号升序排序。

7-13 给出一个程序,在teaching数据中创建一个名称为v_max的视图,查询每个班最高分的课程名和分数,按班级号升序排序。 use teaching

go

create view v_max

as

select top 10 classno,cname,max(final) as max from student s,score sc,course c

where sc.courseno=c.courseno and s.studentno=sc.studentno and final is not null group by classno,cname order by classno

7-14 通过v_final和v_course视图查询所有学生的学号、姓名和已修必修课的总学分。

USE teaching

SELECT studentno AS '学号',sname AS '姓名',SUM(credit) AS '必修课总学分' FROM v_final,v_course

WHERE v_final.courseno=v_course.courseno GROUP BY studentno,sname

7-15 利用sysobjects和syscomments两个系统表查看v_avg视图的名称、ID和定义视图的文本信息。

USE teaching

SELECT sysobjects.name,sysobjects.id,syscomments.text FROM sysobjects,syscomments

WHERE sysobjects.name='v_avg' AND sysobjects.type='V' AND sysobjects.id=syscomments.id

7-18 通过视图V_course向基表course中插入数据(‘c05129’,‘数据库编程’,‘必修’,64,4)。

Use teaching

Go

INSERT INTO v_course

VALUES('c05129','数据库编程','必修',64,4)

Go

SELECT *FROM course

7-21 通过视图V_course将基表course课程号为c05129的课程名称修改为‘数据库应用与开发’。

USE teaching GO

UPDATE v_course

SET cname='数据库应用与开发' WHERE courseno='c05129' GO

SELECT * FROM course

7-23 通过视图v_final将基本表student和score中学号为'0925121107',选修的课程号为'c05129'的学生姓名修改为'李静',期末成绩修改为分。

USE teaching GO

UPDATE v_final

SET sname='李静',final=60

WHERE studentno='0925121107' AND courseno='c05109'

7-24 通过视图v_sex删除基表student中学号为0938211038的学生记录。

USE teaching

Go

Delect from v_sex

Where studentno='0938211038'

GO

SELECT * FROM student

7-25 通过视图v_course删除基表course中课程号为c05109的课程记录

USE teaching

GO

DELECT FROM v_course WHERE courseno='c05109'

本文来源:https://www.bwwdw.com/article/btmv.html

Top