视图索引和数据完整性

上传人:F****n 文档编号:88545150 上传时间:2019-05-01 格式:PPT 页数:76 大小:757.50KB
返回 下载 相关 举报
视图索引和数据完整性_第1页
第1页 / 共76页
视图索引和数据完整性_第2页
第2页 / 共76页
视图索引和数据完整性_第3页
第3页 / 共76页
视图索引和数据完整性_第4页
第4页 / 共76页
视图索引和数据完整性_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《视图索引和数据完整性》由会员分享,可在线阅读,更多相关《视图索引和数据完整性(76页珍藏版)》请在金锄头文库上搜索。

1、An Introduction to Database Systems,第九章 视图、索引和数据完整性,9.1 视图 9.2 索引 9.3 数据完整性,An Introduction to Database Systems,9.1 视图,视图,基本表,视图,视图是一个虚拟表,其内容由查询定义.,An Introduction to Database Systems,1. 视图的概念 视图是一个逻辑表,它允许操作者从其它表或视图存取数据,视图本身不包含数据。视图的数据来源可以由以下任意一项组成: 一个基表的任意子集。 两个或者两个以上基表的合集。 两个或者两个以上基表的交集。 对一个或者多个基表

2、运算的结果集合。 另一个视图的子集。,An Introduction to Database Systems,视图的优点和作用,将数据集中显示 简化数据操作 自定义数据 重新组织数据以便导入导出数据 组合分区数据,An Introduction to Database Systems,视图的创建,使用企业管理器创建视图 使用向导创建视图 使用SQL语句创建视图,其命令格式如下:,CREATE VIEW AS WITH CHECK OPTION WITH CHECK OPTION:通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如insert,那么加的这条记录在刷新视图后必须可以看到;

3、如果修改,修改完的结果也必须能通过该视图看到;如果删除,只能删除视图里有显示的记录,An Introduction to Database Systems,定义视图的例子:,CREATE VIEW v_emp AS SELECT 职工号,工资,城市 FROM 职工,仓库 WHERE 职工.仓库号 = 仓库.仓库号 ;,对用户就好象有一个表:,An Introduction to Database Systems,关于 With check option,create view IS_student as select sno,sname,sage from student where sdep

4、t=IS with check option; 加上了with check option;后,不能执行插入操作: insert into is_student(sno,sname,sage) values(95100,李娜,12),An Introduction to Database Systems,使用视图,使用视图进行数据检索,CREATE VIEW v_sal(职工号,月工资,年工资) AS SELECT 职工号,工资,工资*12 FROM 职工,查询视图v_sal: SELECT * FROM v_sal,结果: E1 1220 14640 E3 1210 14520 E4 1250

5、 15000 E6 1230 14760 E7 1250 15000,An Introduction to Database Systems,通过视图修改数据 当更新视图中的数据时,实际上是对表的内部数据进行更新。事实上,当从视图中插入或者删除时,情况也是这样。,An Introduction to Database Systems,但并不是每个视图都是可更新的,应满足以下条件: 1)没有使用连接函数,集合运算函数和组函数。 2)SELECT语句中没有GROUP BY等子句。 3)SELECT语句中不包含从基表列通过计算所得的列。 注意:只有当视图依赖的基本表为单个时,才可进行插入和删除数据的

6、操作,修改操作一次修改数据操作只能变动一个基本表的数据.,An Introduction to Database Systems,例如 Create table table4(col1 int,col2 varchar(30) Create view view1 as select col2,col1 from table4 Go Insert into view1 values(第1行,1) go Insert into view1 values(第2行,2) Select * from table4 go,结果为: col1 col2 - 第1行 第2行,An Introduction t

7、o Database Systems,视图的修改,使用企业管理器 使用ALTER VIEW 语句 重命名视图 1、企业管理器 2、存储过程 sp_rename 例如:sp_rename view1,view2 view1为原来的名称 view2为新名称,ALTER VIEW AS WITH CHECK OPTION,An Introduction to Database Systems,视图信息的查询,使用企业管理器 使用sp_helptext存储过程 例如:use school go exec sp_helptext st2_degree 结果为: text - create view st

8、2_degree as ,An Introduction to Database Systems,视图的删除,命令格式是: DROP VIEW ,使用企业管理器 使用T-SQL,An Introduction to Database Systems,实 训,建立视图view1,查询所有供应商的供应商号,名称和所在的城市,并按供应商号顺序排序。 建立视图view2,查询所有职工的平均工资。 建立视图view3,查询所有在北京的职工对应的订购单号和订购日期信息。 查看视图。 修改视图的属性。 视图的删除。 视图的重命名及显示视图信息。,An Introduction to Database Sys

9、tems,9.2 索引,1索引的概念,数据库中的索引与书籍中的索引类似。在一本书中,使用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。 书中的索引是一个词语列表,其中注明了包含各个词的页码。而数据库中的索引是指某个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。,An Introduction to Database Systems,索引的作用,(1)通过创建唯一索引,可以保证数据记录的唯一性。 (2)可以大大加快数据检索速度。 (3)可以加速表与表之间的连接,这一点在实现数据的参照完整性方

10、面有特别的意义。 (4)在使用ORDER BY和GROUP BY子句中进行检索数据时,可以显著减少查询中分组和排序的时间。 (5)使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。,An Introduction to Database Systems,索引的分类,(1)聚集索引 聚集索引对表和视图中的数据进行物理排序,然后再重新存储到磁盘上,这种索引对查询非常有效。表和视图中只能有一个聚集索引。当建立主键约束时,如果表中没有聚集索引,SQL Server会用主键列作为聚集索引键。 用户可以在表的任何列或列的组合上建立索引,但一般是为定义成主键约束的列建立聚集索引。 (2)非聚集索引

11、 非聚集索引不用将表和视图中的数据进行物理排序。 一般在那些经常被用来查询的表的列上建立索引以获得最佳查询性能。但索引也需要占用空间,表越大,建立的包含该表的索引也越大。当一个含有索引的表被改动时,改动数据的速度会减慢,所以不要在表中建立太多且很少用到的索引。,An Introduction to Database Systems,创建索引,通过企业管理器创建索引 通过向导创建索引 通过SQL语句创建索引,其语法格式如下: CREATE UNIQUE CLUSTERED| NONCLUSTERED ,INDEX 索引名 ON 表名 |视图名 ( 列名 ASC | DESC ,.n ) WITH

12、 PAD_INDEX ,FILLFACTOR=fillfactor,IGNORE_DUP_KEY ,DROP_EXISTING,STATISTICS_NORECOMPUTE ,SORT_IN_TEMPDB ON filegroup ,An Introduction to Database Systems,l 表名 用于指定创建索引的表的名称。 l 视图名 用于指定创建索引的视图的名称。 l ASC|DESC 用于指定具体某个索引列的升序或降序排序方向。 l CLUSTERED 用于指定创建的索引为聚集索引。 l NONCLUSTERED 用于指定创建的索引为非聚集索引。 l 索引名 用于指定所

13、创建的索引的名称。 l 列名 用于指定被索引的列。 PAD_INDEX 用于指定索引中间级中每个页(节点)上保持开放的空间。 l FILLFACTOR = fillfactor 用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。 l IGNORE_DUP_KEY 用于控制当往包含于一个唯一聚集索引中的列中插入重复数据时SQL Server所作的反应。 l DROP_EXISTING 用于指定应删除并重新创建已命名的先前存在的聚集索引或者非聚集索引。 l STATISTICS_NORECOMPUTE 用于指定过期的索引统计不会自动重新计算。 SOR

14、T_IN_TEMPDB 用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中 ON filegroup 用于指定存放索引的文件组。,l,UNIQUE 用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。,其中:,An Introduction to Database Systems,【例】使用CREATE INDEX语句在XSCJ数据库的“成绩表”上创建名为“IX_学号课号”的聚集、惟一、复合索引,该索引基于“学号”和“课程编号”列创建。 在查询分析器中运行如下命令: USE XSCJ GO CREATE UNIQUE CLUSTERED INDEX IX_学号课号 ON

15、 成绩表(学号,课程编号) GO,An Introduction to Database Systems,查看、修改索引,1.使用企业管理器查看、修改索引 2.使用系统存储过程查看、更名索引 系统存储过程sp_helpindex可以返回表的所有索引信息,其语法形式如下: sp_helpindex 表名称 另外,系统存储过程sp_rename可以用来更改索引的名称,其语法形式如下: sp_rename 表名.旧索引名,新索引名,An Introduction to Database Systems,【例6-17】使用系统存储过程sp_helpindex查看XSCJ数据库中“成绩表”的索引信息。

16、在查询分析器中运行如下命令: USE XSCJ GO sp_helpindex 成绩表 GO,An Introduction to Database Systems,【例】使用系统存储过程将索引“PK_成绩表”更名为“IX_成绩表”。在查询分析器中运行如下命令: USE XSCJ GO EXEC sp_rename 成绩表.PK_成绩表,IX_成绩表 GO,An Introduction to Database Systems,1.使用企业管理器删除索引 要删除索引,可以在企业管理器中,从【管理索引】对话框中或者【表的属性】对话框中,选择要删除的索引,单击【删除】按钮,即可删除索引。 2.使用DROP I

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号