第11讲 索引、视图.ppt_第1页
第11讲 索引、视图.ppt_第2页
第11讲 索引、视图.ppt_第3页
第11讲 索引、视图.ppt_第4页
第11讲 索引、视图.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、7.1 索引,索引是为了加速检索而创建的一种存储结构。 索引是一个二维表,索引表中包含了索引关键字的集合,以及关键字的值对应的基表中的记录地址。索引关键字由基表中的一列或多列值组成。 索引的如下优点: 提高查询速度。 提高连接、ORDER BY和GROUP BY执行的速度。 查询优化器依靠索引起作用。 强制实施行的惟一性。创建惟一索引,可以保证表中的数据不重复。,7.2 索引类型,聚集索引 数据库的表中记录的物理顺序与索引顺序相同。一个表中只能有一个聚集索引。 非聚集索引 数据库表中记录的物理顺序与索引顺序可以不相同。表中的每一列上都可以有自己的非聚集索引。 惟一索引 表中的索引关键字的值都不

2、相同。 组合索引 索引关键字由多个字段值组合而成。组合索引也属于非聚集索引。,7.3 创建索引,SQL Server提供了三种方法来创建索引: 使用SSMS创建索引 使用CREATE INDEX语句创建索引。 使用CREATE TABLE语句创建索引 创建表或者修改表时,如果指定PRIMARY KEY约束或者UNIQUE约束,则SQL Server自动为这些约束创建索引(惟一索引)。即表中的主键就是主索引。,使用SQL语言创建索引,格式: CREATE UNIQUECLUSTERED|NONCLUSTERED INDEX 索引名 ON 表名|视图名 (列名ASC | DESC,n) 各主要选项

3、的含义: UNIQUE:为表或视图创建惟一索引 CLUSTERED:创建聚集索引。如果没有指定CLUSTERED,则创建非聚集索引。 NONCLUSTERED:创建非聚集索引。每个表最多可以有249个非聚集索引。此选项为默认选项。 ASC:关键字升序排列,DESC:关键字降序排列,创建索引之例,例1:用SQL语句在teacher表中的tno列上创建一个非聚集索引。 CREATE INDEX IDX_tno ON teacher(tno) 例2:为score表的sno和cno列创建索引,并且强制惟一性。 CREATE UNIQUE CLUSTERED INDEX IDX_sc ON score(

4、sno,cno) 例3:在student表中创建一个非聚集索引,索引关键字为dept升序、sno降序。 CREATE INDEX IDX_deptsno ON student(dept,sno DESC),查看和删除索引,例4:查看索引:使用存储过程sp_helpindex。 EXEC sp_helpindex student 例5:删除索引 DROP INDEX table1.Idx1,8.1 视图概述,视图是从一个或者多个表中使用SELECT语句导出的虚表。 可对视图进行查询操作,但对视图的更新要受到限制。 视图的优点 将数据集中显示。使用户只关心他们感兴趣的某些特定数据和他们所负责的特定

5、任务。 屏蔽数据的复杂性,简化用户对数据库的操作。 可以使用视图重新组织数据,对数据表进行分块显示。 提供数据安全性。 视图把用户可以使用的数据定义在视图中,这样就限制了用户对数据的访问范围,从而保证了数据安全性。,8.2 创建视图,视图是数据库中一个独立的数据对象。创建视图要考虑如下的原则: 只能在当前数据库中创建视图。 视图名称必须遵循标识符的规则,且对每个用户必须为唯一。此外,该名称不得与该用户拥有的任何表的名称相同。 可以在其他视图和引用视图的过程之上建立视图。 定义视图的查询不可以包含ORDER BY. COMPUTE或COMPUTE BY子句或INTO关键字。 不能在视图上定义全文

6、索引。 不能创建临时视图,也不能在临时表上创建视图。,创建视图(使用SQL语句),格式: CREATE VIEW 数据库名拥有者. 视图名 (列名,n) AS select子句 WITH CHECK OPTION 选项说明: select子句:定义视图的SELECT语句。 WITH CHECK OPTION:强制视图上执行的所有数据修改语句都必须符合由select子句设置的准则。,创建视图之例,例1:创建V_grade视图,其中包括了学生姓名、课程和成绩。 CREATE VIEW V_grade AS SELECT S.sname AS 姓名,C.cname AS 课程, SC.grade A

7、S 成绩 FROM student S,course C,score SC WHERE S.sno=SC.sno AND C.cno=SC.cno,创建视图之例,例2:创建V_cnoavg视图,其中包括每门课程的选课人数和平均成绩。 CREATE VIEW V_cnoavg AS SELECT count(sno) AS 选课人数, avg(grade) AS 平均成绩, cno AS 课程号 FROM score GROUP BY cno,8.3 使用视图,例3:利用st1_grade视图来查询所有学生的成绩。 SELECT * FROM V_grade 例4:查询st2_cnoavg视图。

8、 SELECT * FROM V_cnoavg,对视图更新有以下三条规则: 若视图是由两个以上基表导出的,则该视图不允许更新。 若在视图定义中,使用了分组和聚集函数,则该视图不允许更新。 若视图是从单个基表中使用选择、投影导出的,并且包含了侯选关键字(这类视图称为行列子集视图),则该视图允许执行更新操作。,使用视图之例(更新),例5:创建视图V_S,视图的内容是全体男生的sno,sname,dept。 CREATE VIEW V_S AS select sno,sname,dept from student where sex=男 问题:根据视图更新规则,V_grade,V_cnoavg,V_

9、S三个视图中,在哪个视图中可以做更新。 答:在V_S中可以做更新,在V_grade,V_cnoavg中不能做更新。,使用视图之例(续),-在V_S视图中插入记录 INSERT INTO V_S VALUES (9803101,李华,null) GO -查看插入的记录 SELECT * FROM V_S SELECT * FRON student 结果:视图和基表中数据都发生变化 -在V_S视图中修改记录 UPDATE V_S SET dept=电子系 WHERE SNO=9803101 GO -查看插入的记录 SELECT * FROM V_S SELECT * FRON student 结果:视图和基表中数据都发生变化,思考题,假定创建了如下的视图: CREATE VIEW View2(sno,avg_grade) AS SELECT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论