实验三 索引和视图讲解Word格式文档下载.docx
《实验三 索引和视图讲解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验三 索引和视图讲解Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
王建平刘华范林军李伟黄河长江
男女女男男男
211918191820
自动化自动化计算机
Student(10)primarykey,(10)notnullunique,
)),,男'
'
女'
(in(check2()Ssex
),
Sagecheck(>
Sageand15<
30)20(
语句建立该数据库不能为空值,数数数
)
)'
21'
,'
自动化'
王建平(Studentinsertintovalues'
S01'
'
男'
)刘华(Studentinsertintovalues'
S02'
19'
)'
18'
计算机'
范林军,(Studentinsertintovalues'
S03'
女)(Studentinsertintovalues'
S04'
'
李伟'
男,,'
数学'
)'
数学,'
男'
黄河,'
S05'
(Studentintoinsertvalues'
)'
'
20'
长江'
S06'
(valuesStudentintoinsert
徐龙琴、刘双印设计制作实验三索引和视图
课程表:
Course(Cno,Cname,Cpno,Credeit)其中Cno为主键
Cno
Cname
Cpno
Credit
C01
英语
NULL
4
C02
数据结构
C05
2
C03
数据库
C04
DB_设计
3
C++
C06
网络原理
C07
操作系统
C05
Course
tablecreate(
keyprimary)(charCno4
null,
not10(charCname)10(char)Cpno
)2(charCredit,
).
徐龙琴、刘双印设计制作索引和视图实验三
4'
NULL,'
英语'
insertintoCoursevalues('
C01'
)'
2'
C05'
intoCoursevalues('
C02'
数据结构insert)'
values('
C03'
数据库,intoinsertCourse
3'
'
DB_'
C04'
设计'
insertintoCoursevalues()'
C05'
(,'
C++'
insertintoCoursevalues),'
C07'
insertintoCoursevalues('
C06'
网络原理)
操作系统'
intoinsertCoursevalues
100;
0到Sno,Cno为主键同时又为外键、Grade值在学生选修表:
SC(Sno,Cno,Grade)其中
create()insertinsertinsertinsertinsertinsertinsertinsert建立数学系学生的视图数学系的学生,视图的属性名为C_Student指定的一个或多个列的值排序。
由于聚簇索引的索引页面指针指
Sno
Grade
S01
92
84
S02
90
S02
94
82
S03
72
S04
75
SCtable,)(Snochar10,
)char(Cno4
checkint1000Gradebetweenand),
Grade(),
Cno(Sno,primarykeyforeignkey(Sno)referencesStudent(Sno),
foreignkey(Cno)referencesCourse(Cno)),(SCintovalues'
92'
valuesSC(,,'
84'
into
),(SCintovalues'
90'
94'
valuesintoSC(,),'
82'
(SCintovalues)intoSC'
72'
(values)'
(valuesSCinto'
(valuesSCinto'
75'
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
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)
selectSsex,avg(Sage)
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'
Sno=where
,姓名为S09”11)“王海”
insert
into
S09'
王海'
12)删除数学系学生视图C_Student中学号为“S09”的记录。
delete
fromC_Student
whereSno='
四、思考题
1.
是一种对磁盘上实际数据重新组织以按向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。
每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。
2.视图有哪些优点?
视图是一个由SELECT语句指定,用以检索数据库表中某些行或答:
查询。
SQL列数据的语句存储定义。
从本质上说,视图其实是一种
使用视图的优点如下:
查询的简单性:
将复杂的查询(如多表的连接查询)定义为视图,保留了用户所关心的数据内容,剔除了那些不必要的冗余数据,使其数据环境更加容易控制,从而达到简化用户浏览和操作的目的;
安全保护:
数据库管理员可以在限制表用户的基础上进一步限制视图用户,可以为各种不同的用户授予或撤销在视图上的操作权限,这样,视图用户只能查询或修改他们各自所能见到的数据,从而保证数据库中数据的安全;
掩盖数据库的复杂性:
使用视图可以把数据库的设计和用户的使用屏蔽开来,当基本表发生更改或重新组合时,只需要修改视图的定义即可。
用户还能够通过视图获得和数据库中的表一致的数据。
3.总结创建视图的方法有几种,各种方法实现的步骤,各举一例实现。
两种。
一种是SSMS创建,另一种是T—SQL语句创建。
具体实现步骤见上面实验。