数据库实验五河南工业大学.docx
- 文档编号:10808102
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:11
- 大小:401.12KB
数据库实验五河南工业大学.docx
《数据库实验五河南工业大学.docx》由会员分享,可在线阅读,更多相关《数据库实验五河南工业大学.docx(11页珍藏版)》请在冰豆网上搜索。
数据库实验五河南工业大学
实验成绩
《数据库系统原理及应用》
实
验
报
告
五
专业班级:
计科1102
学号:
201116910809
姓名:
曹斌
指导教师:
苏小玲
2013年11月12日
实验五名称:
SQLServer视图和索引
1、实验内容及要求
1.创建视图和查看视图的定义
任务1:
用对象资源管理器管理器方式,创建一个名为“v1”的视图,用于查询计算机网络专业男生的学号、姓名、出生日期,并将视图的列名分别改为:
学生学号、男生姓名、生日。
任务2:
用对象资源管理器管理器方式,创建一个名为“v成绩”的视图,用于查询成绩在60~80之间的学生学号、姓名、专业名、课程名、成绩信息。
任务3:
用命令方式,创建一个名为“V个人最高分”的视图,用于查询每门课程的最高分的学生学号、姓名、课程号、成绩信息。
任务4:
用命令方式,创建一个名为“V全校最高分”的视图,用于查询所有成绩中的最高分的学生学号、姓名、专业名、课程号、成绩。
2.修改视图
任务:
用命令方式,在“v1”的视图中增加两列:
专业和系。
3.使用视图向数据表中插入数据
任务1:
用命令方式,在“V1”视图中添加如下两条记录,注意查看添加的结果。
分析为什么?
(‘020106’,‘李好’,‘1981-04-22’,‘计算机网络’,‘计算机’)
(‘020107’,‘周权’,‘1981-07-08’,‘信息安全’,‘计算机’)
任务2:
用命令方式,在“V1”视图中设置“withcheckoption”属性,然后通过视图向基表中添加如下两条记录,注意查看添加的结果。
(‘020108’,‘赵伟’,‘1980-05-07’,‘计算机网络’,‘计算机’)
(‘020109’,‘刘齐’,‘1981-12-02’,‘信息安全’,‘计算机’)
请思考:
这两条记录能否插入到基表中?
能否在视图中能否显示?
4.使用视图删除数据表中的数据
任务1:
用命令方式或对象资源管理器管理器方式,删除“V1”视图中,学号为‘020108’的记录。
任务2:
用命令方式或对象资源管理器管理器方式,删除“v成绩”视图中的记录。
观察会出现什么情况?
为什么?
5.删除视图
要求:
用命令方式或对象资源管理器管理器方式,删除创建的任何一个视图。
6.创建索引
任务1:
在course表的“课程名”列上创建一个非聚集索引,索引名为“ix_kcm”,并降序排列。
任务2:
在course表中,重新创建名为“ix_kcm”的索引,使其成为惟一性的非聚集索引。
任务3:
已知sc表中的“学号”和“课程号”两列已设置为主键,主键约束名为“PK_xs_kc”,请重新创建这两列的组合索引,使学号降序排列,使索引页填满60%后就换新页进行填充。
2、实验目的
掌握创建、修改、删除视图的方法;掌握查询视图的方法;掌握用命令方式创建索引的方法。
三、实验步骤及运行结果
1.创建视图和查看视图的定义
任务1:
创建一个名为“v1”的视图
select*fromV1
任务2:
创建一个名为“v成绩”的视图
select*fromV成绩
任务3:
用命令方式,创建一个名为“V个人最高分”的视图,用于查询每门课程的最高分的学生学号、姓名、课程号、成绩信息。
createviewV个人最高分(学号,姓名,课程号,最高成绩)
as
selectS.Sno,Sname,Cno,Grade
fromStudentSjoinSCaonS.Sno=a.Sno
wheregrade>=all
(selectgradefromSCbwherea.Cno=b.Cno)
select*fromV个人最高分
运行结果:
任务4:
用命令方式,创建一个名为“V全校最高分”的视图,用于查询所有成绩中的最高分的学生学号、姓名、专业名、课程号、成绩。
createviewv全校最高分(学号,姓名,专业名,课程号,成绩)
as
selects.Sno,Sname,Major,Cno,Grade
fromStudentsjoinSCons.Sno=SC.Sno
whereGrade=(selectMAX(grade)fromSC)
select*fromV全校最高分
运行结果:
2.修改视图
任务:
用命令方式,在“v1”的视图中增加两列:
专业和系。
SQL语句:
alterviewV1(学生学号,男生姓名,生日,系别,专业)
as
selectSno,Sname,Birthdate,Dept,Major
fromStudent
whereMajor='计算机网络'andSsex='男'
select*fromV1
运行结果:
3.使用视图向数据表中插入数据
任务1:
用命令方式,在“V1”视图中添加如下两条记录,注意查看添加的结果。
分析为什么?
(‘020106’,‘李好’,‘1981-04-22’,‘计算机网络’,‘计算机’)
(‘020107’,‘周权’,‘1981-07-08’,‘信息安全’,‘计算机’)
SQL语句:
insertintoV1
values('020106','李好','1981-04-22','计算机系','计算机网络')
insertintoV1
values('020107','周权','1981-07-08','计算机系','信息安全')
select*fromV1
运行结果:
分析:
视图中只有李好的记录,没有周权的记录。
因为视图中只显示“计算机网络”专业的学生信息,所以‘周权’的信息只能在基表中看到,而不能在视图中看到。
任务2:
用命令方式,在“V1”视图中设置“withcheckoption”属性,然后通过视图向基表中添加如下两条记录,注意查看添加的结果。
(‘020108’,‘赵伟’,‘1980-05-07’,‘计算机网络’,‘计算机’)
(‘020109’,‘刘齐’,‘1981-12-02’,‘信息安全’,‘计算机’)
SQL语句:
alterviewv1(学生学号,男生姓名,生日,系别,专业)
as
selectSno,Sname,Birthdate,Dept,Major
fromstudent
whereMajor='计算机网络'andSsex='男'withcheckoption
insertintov1
values('020108','赵伟','1980-05-07','计算机系','计算机网络')
insertintoV1
values('020109','刘齐','1981-12-02','计算机系','信息安全')
select*fromV1
4.使用视图删除数据表中的数据
任务1:
用命令方式或对象资源管理器管理器方式,删除“V1”视图中,学号为‘020108’的记录。
SQL语句:
deletefromV1where学生学号='020108'
select*fromV1
运行结果:
任务2:
用命令方式或对象资源管理器管理器方式,删除“v成绩”视图中的记录。
观察会出现什么情况?
为什么?
deletefromV成绩whereSno='20111606'
不能删除,因为视图引用了多个表时,所以无法用delete命令删除数据
5.删除视图
要求:
用命令方式或对象资源管理器管理器方式,删除创建的任何一个视图。
dropviewV
6.创建索引
任务1:
在course表的“课程名”列上创建一个非聚集索引,索引名为“ix_kcm”,并降序排列。
SQL语句:
createindexix_kcmonCourse(Cnamedesc)
运行结果:
任务2:
在course表中,重新创建名为“ix_kcm”的索引,使其成为惟一性的非聚集索引。
createuniqueindexix_kcm
onCourse(Cnamedesc)
withdrop_existing
任务3:
已知sc表中的“学号”和“课程号”两列已设置为主键,主键约束名为“PK_xs_kc”,请重新创建这两列的组合索引,使学号降序排列,使索引页填满60%后就换新页进行填充。
altertableSCdropconstraintPK__SC__E600025307F6335A
go
createuniqueclusteredindexPK__SC__E600025307F6335A
onSC(Snodesc,Cno)
withpad_index,fillfactor=60
四、实验体会或实验中遇到的问题
这里主要还是要熟练前面的嵌套子查询和相关子查询,这两种查询熟练掌握后,真正视图这里就很简单了.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 河南 工业大学