数据库实验实验10 视图与索引
- 格式:docx
- 大小:90.73 KB
- 文档页数:6
信息工程学院实验报告课程名称:《数据库原理》Array实验项目名称:视图和索引的创建和使用一、实验目的:(1)掌握创建视图的SQL语句的用法。
(2)掌握修改视图的方法。
(3)熟悉视图更新与基本表更新的区别与联系;认识视图的作用。
(4)熟悉索引的作用,以及不同类型索引的区别。
(5)学会用T-SQL语句对表创建和删除索引二、实验设备与器件Win7 +Sql server 2008三、实验内容与步骤利用备份文件school,还原数据库,然后完成以下实验内容:(1)用T-SQL语句,定义信息系学生基本情况视图V_IS。
(2)用T-SQL语句,将Student,Course 和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,将学号为“200215125”的学生姓名更改为“张小立”,并查看结果;②通过视图V_IS,新增加一个学生记录 ('200215126','黄笑',19, '男','IS'),并查看结果。
③通过视图V_IS,新增加一个学生记录 ('200215127','李霞',19, '女','MA'),并查看结果。
④通过视图V_IS,删除学号为“200215126”的学生信息,并查看结果。
⑤通过视图V_S_C_G,将学号“200215122”的姓名改为“刘晓晨”,能否实现?若无法实现说明原因。
实验报告
课程名称:数据库技术项目名称:索引和视图
姓名:专业:班级:学号同组成员
1注:1、实验预习部分包括实验环境准备和实验所需知识点准备。
2、若是单人单组实验,同组成员填无。
5.分别使用企业管理器和系统存储过程sp_helpindex查看grade
6.使用企业管理器的“向导”工具对grade表创建一个聚集索引和唯一索引。
10.在studentsdb数据库中,使用Transact-SQL
12.分别使用企业管理器和Transact-SQL语句修改视图每个学生所学课程数目。
15.利用视图v_stu_i为student_info表添加一行数据:学号为
16.利用视图v_stu_i删除学号为
实验报告成绩(百分制)__________ 实验指导教师签字:__________
3注:1、实验小结应包含实验所需知识点和实验方法的总结,实验心得体会等。
2、分组实验需包含同组讨论内容。
7-1编程在teaching 数据库中的student 表的sname 列上创建唯一索引IDX_sname。
USE teachingGOCREATE UNIQUE INDEX IDX_sname ON student(sname)7-2 编程在teaching数据库中的student表的studentno和classno列上创建组合索引IDX_sc。
USE teachingIF EXISTS(SELECT name FROM sysindexes WHERE name='IDX_sc')DROP INDEX student.scGOCREATE INDEX IDX_sc ON student(studentno,classno)7-3 重新组织teaching 数据库中student 表上的IDX_sc 索引。
USE teachingALTER INDEX IDX_sc ON dbo.student REORGANIZE7-4 重新生成teaching 数据库中student 表上的IDX_sname 索引,设置填充索引,将填充因子设置为80%,设置将中间排序结果存储在tempdb中。
USE teachingALTER INDEX IDX_sname ON dbo.studentREBUILD WITH(PAD_INDEX =ON,FILLFACTOR= 80,SORT_IN_TEMPDB =ON)7-5 重新生成teaching 数据库中student 表上的C_studentno 索引,将其修改为聚集唯一索引,并指定该索引的叶级页的填充度为70%。
USE teachingGOCREATE UNIQUE CLUSTERED INDEX C_studentnoON dbo.student(studentno)WITH(PAD_INDEX =ON,FILLFACTOR= 70,DROP_EXISTING =ON)7-6 删除teaching 数据库中student 表上的聚集索引C_studentno 和非聚集索引UC_classno。
石家庄经济学院实验报告学院: 信息工程学院专业: 网络工程信息工程学院计算机实验中心制1.索引的建立和删除操作2.视图的创建、修改、更新和查询操作二实验目的1.掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。
2.掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。
三实验内容1.索引的建立和删除操作(1)在S表中,建立按照sno升序的惟一性索引snoIDX。
(2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。
(3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。
(4)在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。
(5)删除索引cnameIDX。
2.视图的创建、修改、更新和查询操作(1)建立一个关于所有女生信息的视图S_GIRL。
(2)将各系学生人数,平均年龄定义为视图V_NUM_AVG(3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。
(4)建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。
(5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。
(6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。
(7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。
(8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。
(9)删除视图S_GRADE。
(10)通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。
(11)通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询结果。
(12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。
(13)通过视图S_GRADE,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。
一、实验名称
视图与索引
二实验目的
1.学会使用企业管理器建立视图与索引
2.掌握使用SQL语句建立视图与索引
三实验内容
1.使用企业管理器建立视图索引
2.使用SQL语句建立视图索引
四实验准备
1.复习与本次实验内容相关知识
2.对本次实验中要求自己完成的部分做好准备
五实验步骤
1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图
显示学号、姓名、课程、成绩
用查询分析器建立一个基于学生表、班级表的学生视图
自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示
课程编号、课程名、学分。
查看索引
2.为学生表按班级建立一个非簇集索引FK_U_STUDENTS,操作过程如下
实验心得
总的来说,这次实验因为在上面的几次试验中取得的一些经验,在做实验的时候,也不觉得有多么大的困难了。
相反,感觉有点轻车熟路。
这次实验的目的是学会使用企业管理器建立视图与索引,掌握使用SQL语句建立视图与索引。
在做实验的时候遇到的问题是发现自己建立的视图遇到与表的内容不符的情况,这是由于我对上次表的内容有些模糊,而导致后面做实验出现问题。
在查询了以前建的表后,我又认真做了修改,使得在建立视图的时候能够与表建立紧密的联系,从而不会孤立表的建立。
到了后期,视图的建立也简单多了。
其实,在我做完这个实验之后,明白这次实验都主要是围绕SQL语句,对于语句的熟悉和掌握,有助于我们对数据的应用。
在以后的工作中,也能够发挥到学到知识的作用。
《索引和视图》实验一、实验目的与要求1.学会使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引。
2.学会使用SQL Server管理平台查看索引。
3.学会使用SQL Server管理平台和Transact-SQL语句DROP INDEX 删除索引。
4.掌握使用SQL Server管理平台、向导等创建、管理和删除全文索引,并使用全文索引查询信息的方法。
5. 掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。
6.掌握系统存储过程sp_rename的用法。
7.掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。
二、实验平台1、操作系统:Windows XP或Windows 20032、数据库管理系统:SQL Server 2005三、实验内容1.分别使用SQL Server管理平台和Transact-SQL语句为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。
(1) 使用SQL Server管理平台为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。
(2) 使用Transact-SQL语句为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。
USE教务管理系统GOcreate unique nonclustered index学生信息_idxon学生信息(学号)GOUSE教务管理系统GOcreate unique nonclustered index课程信息_idxon课程信息(课程编号)GO2.使用SQL Server管理平台按《课程信息》的课程编号列创建唯一性索引。
3.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的《成绩表》的“分数”字段创建一个非聚集索引,命名为《成绩_index》。
(1)使用SQL Server管理平台为教务管理系统数据库的《成绩表》的“分数”字段创建一个非聚集索引,命名为《成绩_index》。
信息工程学院实验报告课程名称:《数据库原理》Array实验项目名称:视图与索引得创建与使用一、实验目得:(1)掌握创建视图得SQL语句得用法。
(2)掌握修改视图得方法、(3)熟悉视图更新与基本表更新得区别与联系;认识视图得作用。
(4)熟悉索引得作用,以及不同类型索引得区别。
(5)学会用T—SQL语句对表创建与删除索引二、实验设备与器件Win7+Sql server2008三、实验内容与步骤利用备份文件school,还原数据库,然后完成以下实验内容:(1)用T—SQL语句,定义信息系学生基本情况视图V_IS。
(2)用T—SQL语句,将Student,Course 与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,将学号为“200215125"得学生姓名更改为“张小立”,并查瞧结果;②通过视图V_IS,新增加一个学生记录('200215126',’黄笑',19, '男',’IS'),并查瞧结果。
③通过视图V_IS,新增加一个学生记录 ('200215127’,’李霞',19, '女','MA'),并查瞧结果。
④通过视图V_IS,删除学号为“200215126”得学生信息,并查瞧结果。
⑤通过视图V_S_C_G,将学号“200215122”得姓名改为“刘晓晨”,能否实现?若无法实现说明原因。
⑥通过视图V_AVG_S_G,将学号“200215121”得平均成绩改为90,能否实现?若无法实现说明原因。
《数据库原理及应用》数据操纵功能的实现与视图索引的创建实验报告三、实验过程与结论:(经调试正确的源程序(核心部分)和程序的运行结果)1.将学生、课程、选课三张表中的全部记录复制到student、course、xuanke三张表中;select*into student from学生select*from studentselect*into course from课程select*from courseselect*into xuanke from选课select*from xuanke2.用SQL语句将适量数据分别插入student、course、xuanke三张表中;insert into student values('012','陈阳','20','男','数学');insert into student values('013','李东','20','男','计算机');insert into course values('c06 ','网店推广','网店运营');insert into course values('c07','网店美工','网店运营');insert into xuanke values('016','c06','90');insert into xuanke values('017','c07','85');3.将平均成绩低于70的学生信息存放在低于70分平均成绩表中;select*into低于70分平均成绩from学生where学号=some(select学号from选课group by学号having avg(成绩)<70)4.借助student、course、xuanke三张表,删除“计算机”系全体学生的选课记录及学生记录;delete from xuankewhere学号in(select学号from studentwhere所在系='计算机')delete from studentwhere学号in(select学号from studentwhere所在系='计算机')5.借助student、course、xuanke三张表,删除学号为“001”的相关信息(包括选课信息及学生信息);delete from xuankewhere学号in(select学号from studentwhere学号='001')delete from studentwhere学号in(select学号from studentwhere学号='001')6.将student表中学号为“002”的学生的学号修改为“S002”;update student set学号='S002'where学号='S002'7.把平均成绩大于80分的男同学的学号和平均成绩存入另一个表S_Grade(Sno,AVG_Grade);create table S_Grade(Sno char(5),AVG_Grade int)insert into S_Gradeselect学号,avg(成绩)平均成绩from xuankegroup by学号having avg(成绩)>'80'and学号in(select学号from studentwhere性别='男')8.把选修了课程名为“数据结构”的学生的成绩提高10%;update xuanke set成绩=成绩*1.1where课程号in(select课程号from coursewhere课程名='数据结构')9.把选修了“c02”号课程,且成绩低于该门课程的平均成绩的学生的成绩提高5%;update xuanke set成绩=成绩*1.05where课程号='C02'and成绩<(select avg(成绩)from xuankewhere课程号='C02')10.把选修了“c02”号课程,且成绩低于该门课程的平均成绩的学生成绩删除掉;delete from选课where课程号='C02'and成绩<(select avg(成绩)from选课where课程号='C02')11.求C01和C04课程成绩为80分以上的学生的学号及姓名;select姓名,学生.学号from学生,选课where学生.学号=选课.学号and课程号in('C01','C04')and成绩>8012.求选修了C1课程又选修了C2课程的学生的学号;select学号from选课where课程号='C01'and学号in(select学号from选课where课程号='C02')13.求每个系的平均年龄,并要求将结果存入数据库中;create table系平均年龄(系别varchar(20),平均年龄int)insert into系平均年龄select所在系,avg(年龄)from学生group by所在系select*from系平均年龄14.建立“计算机系”的学生基本情况视图ies_student_view,该视图包括计算机系所有学生的相关信息;create view ies_student_viewasselect*from学生where所在系='计算机'15.执行ies_student_view视图并观察结果;select*from ies_student_view16.建立课程C01(课编号)的学生名册的视图,该名册包括学生的学号、姓名、所在系名称和这门课的成绩;并查询结果;gocreate view学生名册asselect学生.学号,姓名,所在系,成绩from学生,选课where学生.学号=选课.学号and课程号='C01'goselect*from学生名册17.建立统计不及格情况的视图,列出不及格学生的学号、姓名和不及格的课程代码。
实验10 视图与索引
1.实验目的
(1)掌握视图的创建、修改方法。
(2)能够通过视图修改数据。
(3)理解索引的概念和索引的作用,学会使用索引。
(4)了解聚簇索引和非聚簇索引。
2.实验内容
(1)创建视图
①创建03班学生的视图
create view c1_student
as
select * from SM.dbo.student where clno='03'
②创建03班学生的视图,输出其学号、姓名和年龄
create view c11_student
as
select sno,sname,sage from SM.dbo.student where clno='03'
③创建030002班学生的视图,输出其学号、姓名和年龄,并且更换列名
create view c12_student(学号,姓名,年龄)
as
select sno,sname,sage from SM.dbo.student where clno='030002'
④修改表sutdent的结构,增加一列,再执行上述3组语句,查看结果
??
⑤通过如下两组SQL语句创建星“王”的学生的视图,然后分别向两师徒中插入
一条姓的记录,用SQL语句查看执行结果
create view w1_Student
as
select sno,sname from SM.dbo.student where sname like '王%' with check option
create view s2_Student
as
select sno,sname from SM.dbo.student where sname like '王%'
⑥创建17信计选修了6课程的学生的视图
create view IS_C1(SNo,SName,Score)
as
select student.sno,sname,score from
SM.dbo.student,SM.dbo.SC,SM.dbo.class
where clname='17信计' and student.sno=o and o='6' and student.clno=class.clno
⑦创建17信计选修了6号课程且成绩几个的学生的视图
create view IS_C2
as
select sno,sname,score from IS_C1 where Score>=60
视图可以创建在多张表的基础上,也可以创建在视图上⑧创建一个反应学生出生年份的视图
create view bt_s(sno,sname,sbirth)
as
select sno,sname, 2019-sage from SM.dbo.student
⑨将学生的学号和平均成绩创建一个视图
create view s_g(sno,Gavg)
as
select sno,AVG(score) from SM.dbo.SC group by sno
(2)更新视图定义
①创建所有年龄大于23岁的学生视图
create view s_g1(sno,sage)
as
select sno,sage from SM.dbo.student where sage>23 ②使用select语句查看其结果
select * from s_g1
③将视图s_g1的年龄限定改为20
alter view s_g1
as
select sno,sage from SM.dbo.student where sage>20
(3)删除视图
drop view s_g1
(4)更新视图
①向03班学生的视图C1_student中插入一条记录
insert into c1_student(sno, clno,sname)
values('04002', '030002', '张三')
②使用select语句查看视图c1_student和基本表student
select * from c1_student
select * from SM.dbo.student
③将03班学生的视图c1_student中学号为15148的学生年龄改为23 update c1_student
set sage=23 where sno='15148'
④将03班学生的视图c1_student中学号为15148的学生的记录删除
delete from c1_student where sno='15148'
⑤将上面的两种操作转换为对基表student的修改
(5)在TName列上创建索引
①在对象资源管理器树形目录中展开SM数据库,打开Teacher表的表设计窗口。
②在表中的任意位置上单机鼠标右键,在弹出的快捷菜单中选择“索引/键”命令。
③在“索引/键”对话框中单机“添加”按钮,创建索引。
④在“名称”文本框中输入索引名,在“是唯一的下拉列表框中选择“是”,创建一个唯一性索引,如下图
(6)使用sql语句在表course上创建一个唯一性的聚簇索引,索引排列顺序为降序
use SM
create UNIQUE CLUSTERED index IX_CNo ON Course(CNO DESC)
(7)使用SQL语句在表Course上创建一个非唯一性的非聚簇索引
create nonclustered index IX_CNo IX_CName ON course(cname)
create nonclustered index IX_CNo IX_CName ON course(cnmae) with
drop_existing
(8)查看表Course上的所有索引
USE SM
EXEC sp_helpindex Course
(9)删除表Course上的IX_CNo索引USE SM
DROP INDEX Course.IX_CNo。