实验三 索引和视图讲解.docx
- 文档编号:6627045
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:25
- 大小:2.22MB
实验三 索引和视图讲解.docx
《实验三 索引和视图讲解.docx》由会员分享,可在线阅读,更多相关《实验三 索引和视图讲解.docx(25页珍藏版)》请在冰豆网上搜索。
实验三索引和视图讲解
徐龙琴、刘双印设计制作实验三索引和视图
实验三索引和视图
一、实验目的
1.掌握利用SSMS和T—SQL语句创建和删除索引的两种方法。
2.掌握利用SSMS和T—SQL语句创建、查询、更新及删除视图的方法。
二、实验要求
1.能认真独立完成实验内容;
2.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;
3.验后做好实验总结,根据实验情况完成实验报告。
情况完成总结报告。
三、实验学时
2学时
四、实验内容
1、用T—SQL建立一个“学生选课数据库”,在此基础上用SQL含的学生表,课程表,学生选修表:
createdatabase学生选课数据库
学生表:
Student(Sno,Sname,Ssex,Sage,Sdept)其中Sno为主键且Sname取值唯一、Ssex只能取值男或女、Sage在15到30之间:
SnoS01S02S03S04S05S06createtable
(
SnocharSnamecharSsexcharSage
intcharSdept
Sname
Ssex
Sage
Sdept
王建平刘华范林军李伟黄河长江
男女女男男男
211918191820
自动化自动化计算机
Student(10)primarykey,(10)notnullunique,
)),,男'''女'(in(check2()Ssex
),
Sagecheck(>Sageand15<30)20(
语句建立该数据库不能为空值,数数数
)
)'21',,'自动化'',王建平(Studentinsertintovalues'S01',''男')刘华(Studentinsertintovalues'S02',''自动化'19'女',,''',
)'18',,''计算机'',范林军,(Studentinsertintovalues'S03'''女)(Studentinsertintovalues'S04''19''','李伟'男,,'数学',)'18',数学,'''男','黄河,'S05'(Studentintoinsertvalues'
)'数学','20','男','长江','S06'(valuesStudentintoinsert
徐龙琴、刘双印设计制作实验三索引和视图
课程表:
Course(Cno,Cname,Cpno,Credeit)其中Cno为主键
Cno
Cname
Cpno
Credit
C01
英语
NULL
4
C02
数据结构
C05
2
C03
数据库
C02
2
C04
DB_设计
C03
3
C05
C++
NULL
3
C06
网络原理
C07
3
C07
操作系统
C05
3
Course
tablecreate(
keyprimary)(charCno4
null,
not10(charCname)10(char)Cpno
)2(charCredit,
).
徐龙琴、刘双印设计制作索引和视图实验三
)'4'NULL,'英语',insertintoCoursevalues('C01',)'2'','C05',intoCoursevalues('C02','数据结构insert)'2''C02','values('C03','数据库,intoinsertCourse
)'3''C03','DB_'C04',设计',insertintoCoursevalues()'3'NULL,'C05'(,'C++',insertintoCoursevalues),'3'','C07',insertintoCoursevalues('C06''网络原理)
'3''C05','C07'(,'操作系统',intoinsertCoursevalues
徐龙琴、刘双印设计制作实验三索引和视图
100;
0到Sno,Cno为主键同时又为外键、Grade值在学生选修表:
SC(Sno,Cno,Grade)其中
create()insertinsertinsertinsertinsertinsertinsertinsert建立数学系学生的视图数学系的学生,视图的属性名为C_Student指定的一个或多个列的值排序。
由于聚簇索引的索引页面指针指
Sno
Cno
Grade
S01
C01
92
S01
C03
84
S02
C01
90
S02
C02
94
S02
C03
82
S03
C01
72
S03
C02
90
S04
C03
75
SCtable,)(Snochar10,
)char(Cno4
checkint1000Gradebetweenand),
Grade(),
Cno(Sno,primarykeyforeignkey(Sno)referencesStudent(Sno),
foreignkey(Cno)referencesCourse(Cno)),(SCintovalues'S01''C01''92',)'C03''S01'valuesSC(,,'84'into
),(SCintovalues'S02''C01''90',
)'94''C02','S02'valuesintoSC(,),'S02''C03','82'(SCintovalues)intoSC'C01',,'72''S03'(values)'90','C02',(valuesSCinto'S03')
'S04'(valuesSCinto'75''C03',Sno(学号)升序和Cno(SCnoSCSno姓名(Sname)、选修课程名建立先修课程为空的课程视图v_course
上述语句能否成功执行?
为什么?
'S_AVGAGE'的更新或插入失败,视图中查询成绩在85向数学系学生视图C_Student中插入一个新的学生记录,其中学号为“,年龄为20岁。
在一个表中可以有多个聚簇索引吗?
为什么?
聚簇索引也叫簇类索引,
徐龙琴、刘双印设计制作实验三索引和视图
2.索引的建立、删除
①用SSMS的方式为Student表按Sno(学号)升序建唯一索引
实验三索引和视图徐龙琴、刘双印设计制作
徐龙琴、刘双印设计制作实验三索引和视图
)升序建唯一索引,Course表按Cno(课程号②用T—SQL语句为)
ASCCourse(Cnouniqueindex课程号oncreate
课程号)SQL③用T—语句为SC表按号降序建唯一索引。
createuniqueindexon(ASC,CnoDESC)
徐龙琴、刘双印设计制作实验三索引和视图
和Sno(学号)列上建立一个聚簇索引?
语句再为表Students的Sname(姓名)④能否用T—SQL若不能说明原因?
答:
不能,一个表最多只能一个聚集索引。
⑤用T—SQL语句删除基本表SC上的唯一索引。
SCnoSC.indexdrop
3.用T—SQ完成如下视图的建立、查询、修改及删除
1)C_Student,并要求进行修改和插入操作时仍需保证该视图只有Sno,Sname,Sage,Sdept。
createviewC_Student(Sno,Sname,Sage,Sdept)
as
selectSno,Sname,Sage,Sdept
fromStudent
whereSdept='数学'
optioncheckwith
徐龙琴、刘双印设计制作实验三索引和视图
2)用SSMS的方式建立学生的学号(Sno)、(Cname)及成绩(Grade)的视图Student_CR。
徐龙琴、刘双印设计制作实验三索引和视图
Student_birth(Sno,Sname,Sbirth)。
3)定义一个反映学生出生年份的视图,Sname,SnoSbirth)(createviewStudent_birthas
selectSno,Sname,2013-Sage
fromStudent
4)
徐龙琴、刘双印设计制作实验三索引和视图
v_courseviewcreateas
*select
Coursefrom=NULLCpnowhere
v_F_grade(包括学号,姓名,课程号及成绩列)建立成绩高于90分的女生成绩视图5)
)Grade,Cno,Snameviewv_F_grade(Sno,createas
Grade,Course.Cno.Sno,Sname,StudentselectSC
,CoursefromStudent'女'andGrade>90andSsex=Student.Sno=SC.SnowhereandSC.Cno=Course.Cno
6)建立视图S_AVGAGE(其中包括性别SSEX与平均年龄AVG_AGE两列)用以反映男生、女
生的平均年龄
createviewS_AVGAGE(SSEX,AVG_AGE)
as
selectSsex,avg(Sage)
fromStudent
Ssexbygroup
徐龙琴、刘双印设计制作索引和视图实验三
7)对前面创建的视图S_AVGAGE执行更新操作:
UPDATES_AVGAGE
SETAVG_AGE=85
WHEREssex='女'
答:
不能。
对视图或函数因其包含派生域或常量域。
徐龙琴、刘双印设计制作索引和视图实验三
和年龄岁的学生姓名(Sname)C_Student中找出年龄(Sage)小于20在数学系的学生视图8)
(Sage)。
SnameSageselectfromC_Student
whereSage<20
9)在Student_CR分以上的学生学号(Sno)、姓名(Sname)和课程名称
(Cname)
徐龙琴、刘双印设计制作索引和视图实验三
CnameSname,selectSno,Student_CRfrom85
Gradewhere>
的学生姓名改为“黄海”。
C_Student中学号为S0510)将数学系学生视图C_Studentupdate'黄海Sname='set'S05'Sno=where
,姓名为S09”11)“王海”
insert
into
values('S09','王海','20','数学')
徐龙琴、刘双印设计制作实验三索引和视图
12)删除数学系学生视图C_Student中学号为“S09”的记录。
delete
fromC_Student
whereSno='S09'
四、思考题
1.
答:
是一种对磁盘上实际数据重新组织以按向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。
每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。
2.视图有哪些优点?
视图是一个由SELECT语句指定,用以检索数据库表中某些行或答:
查询。
SQL列数据的语句存储定义。
从本质上说,视图其实是一种
徐龙琴、刘双印设计制作索引和视图实验三
使用视图的优点如下:
查询的简单性:
将复杂的查询(如多表的连接查询)定义为视图,保留了用户所关心的数据内容,剔除了那些不必要的冗余数据,使其数据环境更加容易控制,从而达到简化用户浏览和操作的目的;
安全保护:
数据库管理员可以在限制表用户的基础上进一步限制视图用户,可以为各种不同的用户授予或撤销在视图上的操作权限,这样,视图用户只能查询或修改他们各自所能见到的数据,从而保证数据库中数据的安全;
掩盖数据库的复杂性:
使用视图可以把数据库的设计和用户的使用屏蔽开来,当基本表发生更改或重新组合时,只需要修改视图的定义即可。
用户还能够通过视图获得和数据库中的表一致的数据。
3.总结创建视图的方法有几种,各种方法实现的步骤,各举一例实现。
答:
两种。
一种是SSMS创建,另一种是T—SQL语句创建。
具体实现步骤见上面实验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验三 索引和视图讲解 实验 索引 视图 讲解
![提示](https://static.bdocx.com/images/bang_tan.gif)