第九章-视图索引和数据完整性优秀PPT.ppt
《第九章-视图索引和数据完整性优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第九章-视图索引和数据完整性优秀PPT.ppt(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、An Introduction to Database Systems第九章第九章 视图、索引和数据完整性视图、索引和数据完整性v9.1 视图视图v9.2 索引索引 v9.3 数据完整性数据完整性An Introduction to Database Systems9.1视图视图仓库号城市面积仓库号职工号工资仓库号城市职工号工资仓库号面积基本表视图视图是一个虚拟表视图是一个虚拟表,其内容由查询定义其内容由查询定义.An Introduction to Database Systems1.视图的概念视图的概念视图是一个逻辑表,它允许操作者从其它表或视图视图是一个逻辑表,它允许操作者从其它表或视图
2、存取数据,视图本身不包含数据。视图的数据来源存取数据,视图本身不包含数据。视图的数据来源可以由以下随意一项组成:可以由以下随意一项组成:一个基表的随意子集。一个基表的随意子集。两个或者两个以上基表的合集。两个或者两个以上基表的合集。两个或者两个以上基表的交集。两个或者两个以上基表的交集。对一个或者多个基表运算的结果集合。对一个或者多个基表运算的结果集合。另一个视图的子集。另一个视图的子集。An Introduction to Database Systems视图的优点和作用视图的优点和作用v将数据集中显示v简化数据操作v自定义数据v重新组织数据以便导入导出数据v组合分区数据An Introdu
3、ction to Database Systems视图的创建视图的创建v运用企业管理器创建视图v运用向导创建视图v运用SQL语句创建视图其吩咐格式如下:CREATEVIEWASWITHCHECKOPTIONWITHCHECKOPTION:通过视图进行的修改,必需也能通过该视图看到修改后的结果。比如insert,那么加的这条记录在刷新视图后必需可以看到;假如修改,修改完的结果也必需能通过该视图看到;假如删除,只能删除视图里有显示的记录An Introduction to Database Systems定义视图的例子:定义视图的例子:CREATEVIEWv_empASSELECT职工号,工资,城
4、市FROM职工,仓库WHERE职工.仓库号=仓库.仓库号;对用户就好象有一个表:对用户就好象有一个表:An Introduction to Database Systems关于关于 With check optionvcreateviewIS_studentasselectsno,sname,sagefromstudentwheresdept=ISwithcheckoption;v加上了withcheckoption;后,不能执行插入操作:insertintois_student(sno,sname,sage)values(95100,李娜,12)An Introduction to Data
5、base Systems运用视图运用视图v运用视图进行数据检索CREATE VIEWv_sal(职工号,月工资,年工资)ASSELECT职工号,工资,工资*12FROM职工查询视图v_sal:SELECT*FROMv_sal结果:E1122014640E3121014520E4125015000E6123014760E7125015000An Introduction to Database Systemsv通过视图修改数据v当更新视图中的数据时,事实上是对表的内部数据进行更新。事实上,当从视图中插入或者删除时,状况也是这样。An Introduction to Database System
6、s但并不是每个视图都是可更新的但并不是每个视图都是可更新的,应满足以下条件应满足以下条件:1)没有运用连接函数没有运用连接函数,集合运算函数和组函数。集合运算函数和组函数。2)SELECT语句中没有语句中没有GROUPBY等子句。等子句。3)SELECT语句中不包含从基表列通过计算所得的列。语句中不包含从基表列通过计算所得的列。留意留意:只有当视图依靠的基本表为单个时只有当视图依靠的基本表为单个时,才可进行插入才可进行插入和删除数据的操作和删除数据的操作,修改操作一次修改数据操作只能变修改操作一次修改数据操作只能变动一个基本表的数据动一个基本表的数据.An Introduction to Da
7、tabase Systemsv例如Createtabletable4(col1int,col2varchar(30)Createviewview1asselectcol2,col1fromtable4GoInsertintoview1values(第1行,1)goInsertintoview1values(第2行,2)Select*fromtable4go结果为:结果为:col1 col2-1第1行2第2行An Introduction to Database Systems视图的修改视图的修改v运用企业管理器v运用ALTERVIEW语句v重命名视图v1、企业管理器v2、存储过程sp_rena
8、mev例如:sp_renameview1,view2vview1为原来的名称view2为新名称ALTERVIEWASWITHCHECKOPTIONAn Introduction to Database Systems视图信息的查询视图信息的查询v运用企业管理器v运用sp_helptext存储过程v例如:useschoolvgovexecsp_helptextst2_degreev结果为:vtextv-vcreateviewst2_degreevasAn Introduction to Database Systems视图的删除视图的删除吩咐格式是:DROPVIEWv运用企业管理器v运用T-SQ
9、LvAn Introduction to Database Systems实实 训训v建立视图view1,查询全部供应商的供应商号,名称和所在的城市,并按供应商号依次排序。v建立视图view2,查询全部职工的平均工资。v建立视图view3,查询全部在北京的职工对应的订购单号和订购日期信息。v查看视图。v修改视图的属性。v视图的删除。v视图的重命名及显示视图信息。An Introduction to Database Systems9.2索引索引1索引的概念 数据库中的索引与书籍中的索引类似。在一本书中,运用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫
10、描,就可以在其中找到所需数据。书中的索引是一个词语列表,其中注明白包含各个词的页码。而数据库中的索引是指某个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。An Introduction to Database Systems索引的作用索引的作用(1)通过创建唯一索引,可以保证数据记录的唯一性。(2)可以大大加快数据检索速度。(3)可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特殊的意义。(4)在运用ORDER BY和GROUP BY子句中进行检索数据时,可以显著削减查询中分组和排序的时间。(5)运用索引可以在检索数据的过程中运用优化隐藏器,提高系
11、统性能。An Introduction to Database Systems索引的分类索引的分类(1)聚集索引聚集索引对表和视图中的数据进行物理排序,然后再重新存储到磁盘上,这种索引对查询特别有效。表和视图中只能有一个聚集索引。当建立主键约束时,假如表中没有聚集索引,SQLServer会用主键列作为聚集索引键。用户可以在表的任何列或列的组合上建立索引,但一般是为定义成主键约束的列建立聚集索引。(2)非聚集索引非聚集索引不用将表和视图中的数据进行物理排序。一般在那些常常被用来查询的表的列上建立索引以获得最佳查询性能。但索引也须要占用空间,表越大,建立的包含该表的索引也越大。当一个含有索引的表被
12、改动时,改动数据的速度会减慢,所以不要在表中建立太多且很少用到的索引。An Introduction to Database Systems创建索引创建索引v通过企业管理器创建索引v通过向导创建索引v通过SQL语句创建索引其语法格式如下:CREATEUNIQUECLUSTERED|NONCLUSTEREDINDEX索引名ON表名|视图名(列名ASC|DESC,.n)WITHPAD_INDEX,FILLFACTOR=fillfactor,IGNORE_DUP_KEY,DROP_EXISTING,STATISTICS_NORECOMPUTE,SORT_IN_TEMPDBONfilegroup An
13、 Introduction to Database Systemsl表名表名用于指定创建索引的表的名称。用于指定创建索引的表的名称。l视图名视图名用于指定创建索引的视图的名称。用于指定创建索引的视图的名称。lASC|DESC用于指定具体某个索引列的升序或降序排序方向。用于指定具体某个索引列的升序或降序排序方向。lCLUSTERED用于指定创建的索引为聚集索引。用于指定创建的索引为聚集索引。lNONCLUSTERED用于指定创建的索引为非聚集索引。用于指定创建的索引为非聚集索引。l索引名索引名用于指定所创建的索引的名称。用于指定所创建的索引的名称。l列名列名用于指定被索引的列。用于指定被索引的列
14、。PAD_INDEX用于指定索引中间级中每个页(节点)上保持开放的空间。用于指定索引中间级中每个页(节点)上保持开放的空间。lFILLFACTOR=fillfactor用于指定在创建索引时,每个索引页的数据占索引页大用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,小的百分比,fillfactor的值为的值为1到到100。lIGNORE_DUP_KEY用于限制当往包含于一个唯一聚集索引中的列中插入重复数用于限制当往包含于一个唯一聚集索引中的列中插入重复数据时据时SQLServer所作的反应。所作的反应。lDROP_EXISTING用于指定应删除并重新创建已命名的从前存在的聚集索引或者
15、非用于指定应删除并重新创建已命名的从前存在的聚集索引或者非聚集索引。聚集索引。lSTATISTICS_NORECOMPUTE用于指定过期的索引统计不会自动重新计算。用于指定过期的索引统计不会自动重新计算。SORT_IN_TEMPDB用于指定创建索引时的中间排序结果将存储在用于指定创建索引时的中间排序结果将存储在tempdb数据库数据库中中ONfilegroup用于指定存放索引的文件组。用于指定存放索引的文件组。lUNIQUE 用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。其中:An Introduction to Database Systems【例】运用CREATEINDEX
16、语句在XSCJ数据库的“成果表”上创建名为“IX_学号课号”的聚集、惟一、复合索引,该索引基于“学号”和“课程编号”列创建。在查询分析器中运行如下吩咐:USEXSCJGOCREATEUNIQUECLUSTEREDINDEXIX_学号课号ON成果表(学号,课程编号)GOAn Introduction to Database Systems查看、修改索引1.运用企业管理器查看、修改索引2.运用系统存储过程查看、更名索引 系统存储过程sp_helpindex可以返回表的全部索引信息,其语法形式如下:sp_helpindex 表名称 另外,系统存储过程sp_rename可以用来更改索引的名称,其语法形
17、式如下:sp_rename 表名.旧索引名,新索引名An Introduction to Database Systems【例6-17】运用系统存储过程sp_helpindex查看XSCJ数据库中“成果表”的索引信息。在查询分析器中运行如下吩咐:USE XSCJGOsp_helpindex 成果表GO An Introduction to Database Systems【例】运用系统存储过程将索引“PK_成果表”更名为“IX_成果表”。在查询分析器中运行如下吩咐:USE XSCJGOEXEC sp_rename 成果表.PK_成果表,IX_成果表GOAn Introduction to Da
18、tabase Systems1.运用企业管理器删除索引要删除索引,可以在企业管理器中,从【管理索引】对话框中或者【表的属性】对话框中,选择要删除的索引,单击【删除】按钮,即可删除索引。2.运用DROP INDEX吩咐删除索引当不再须要某个索引时,可以将其删除,DROP INDEX吩咐可以删除一个或者多个当前数据库中的索引,其语法格式如下:DROP INDEX table.index|view.index ,.n 其中:table|view用于指定索引列所在的表或索引视图;index用于指定要删除的索引名称。留意,DROP INDEX吩咐不能删除由CREATE TABLE或者ALTER TABL
19、E吩咐创建的主键或者唯一性约束索引,也不能删除系统表中的索引。删除索引An Introduction to Database Systems【例】删除“学生基本信息表”中名为“IX_学生姓名”的索引。在查询分析器中运行如下吩咐:USEXSCJGODROPINDEX学生基本信息表.IX_学生姓名GOAn Introduction to Database Systems1、创建各表索引:(1)基于订购单表的订购单号列创建名为IX_订购单号的聚集、唯一索引;(2)基于职工表的仓库号、职工号列创建名为IX_职工的非聚集、唯一索引;(3)基于供应商表的供应商号列创建名为IX_供应商的非聚集索引,并删除;
20、2、显示索引信息。3、对索引进行重命名。实训An Introduction to Database Systems9.3 数据完整性数据完整性v数据完整性的定义数据完整性是指存放在数据库中的数据要满足的业务规则,是确保数据库的数据一样、正确以及符合企业规则的一种思想。如年龄0150,性别男,女,成果表中学号必需在学生基本信息表中存在等。这样可以保证有效的有意义的数据存放到数据库中。v完整性类型数据完整性有四种类型:实体完整性、域完整性、引用完整性、用户自定义完整性。An Introduction to Database Systems1实体完整性实体完整性也可称为表的完整性,是指表中必需有一个
21、主关键字,用来惟一地标识表中的每一行,且不允许为空值(NULL)。实体完整性强制表的标识符列或主键的完整性(通过索引、UNIQUE约束、PRIMARYKEY约束或IDENTITY属性实现)。2.域完整性域完整性也可称为列的完整性,是指给定列的输入有效性,用于限制向表中输入的值的范围。强制域有效性的方法有:限制类型(通过类型)、格式(通过CHECK约束和规则)或可能值的范围(通过FOREIGNKEY约束、CHECK约束、DEFAULT定义、NOTNULL定义和规则)。An Introduction to Database Systems3.引用完整性引用完整性 引用完整性也称参照完整性,在输入或
22、删除记录时,引用完整性也称参照完整性,在输入或删除记录时,引用完整性保持表之间已定义的关系。在引用完整性保持表之间已定义的关系。在SQL Server2000中,引用完整性基于外键与主键之间或外键与中,引用完整性基于外键与主键之间或外键与唯一键之间的关系(通过唯一键之间的关系(通过FOREIGN KEY和和CHECK约束)。约束)。4.引用完整性确保键值在全部表中一样。这样的一样性引用完整性确保键值在全部表中一样。这样的一样性要求不能引用不存在的值,假如键值更改了,那么在整个要求不能引用不存在的值,假如键值更改了,那么在整个数据库中,对该键值的全部引用要进行一样的更改数据库中,对该键值的全部引
23、用要进行一样的更改。An Introduction to Database Systems 强制引用完整性时,SQLServer禁止用户进行下列操作:l当主表没有关联的记录时,将记录添加到相关表中。l更改主表中的值并导致相关表中的记录孤立。l从主表中删除记录,但仍存在与该记录匹配的相关记录。4.4.用户自定义完整性用户自定义完整性 用户自定义完整性主要体现实际运用的业务规则中。例用户自定义完整性主要体现实际运用的业务规则中。例如,在如,在“班级表班级表”中,规定中,规定0404届学生班级的届学生班级的“班级名称班级名称”前前两个字符必需是两个字符必需是0404等。用户定义的完整性可以通过前面等
24、。用户定义的完整性可以通过前面3 3种完种完整性的实施得到维护。整性的实施得到维护。An Introduction to Database Systems运用约束实现数据完整性运用约束实现数据完整性PRIMARY KEYPRIMARY KEY约束约束 表中常常有一个列或列的组合,其值能唯一地标识表中的表中常常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键(每一行。这样的一列或多列称为表的主键(PKPK),通过它可),通过它可强制表的实体完整性。当创建或更改表时可通过定义强制表的实体完整性。当创建或更改表时可通过定义PRIMARY PRIMARY KEYKEY约束
25、来创建主键。留意,每个表有且只有一个约束来创建主键。留意,每个表有且只有一个PRIMARY PRIMARY KEYKEY约束,约束,PRIMARY KEYPRIMARY KEY约束中的列不能接受空值,系统在定约束中的列不能接受空值,系统在定义义PKPK的列上自动建立唯一索引,主键可以是多列的组合。的列上自动建立唯一索引,主键可以是多列的组合。假如假如PRIMARY KEY约束定义在不止一列上,则一列中的值可约束定义在不止一列上,则一列中的值可以重复,但以重复,但PRIMARY KEY约束定义的全部列的组合的值必需约束定义的全部列的组合的值必需唯一。唯一。只有在进行联接或执行只有在进行联接或执行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 视图 索引 数据 完整性 优秀 PPT
限制150内