第九章视图索引和数据完整性PPT讲稿.ppt
《第九章视图索引和数据完整性PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第九章视图索引和数据完整性PPT讲稿.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第九章视图索引和数据完整性第九章视图索引和数据完整性第1页,共77页,编辑于2022年,星期二第九章第九章 视图、索引和数据完整性视图、索引和数据完整性v9.1 视图视图v9.2 索引索引 v9.3 数据完整性数据完整性第2页,共77页,编辑于2022年,星期二9.1视图视图仓库号城市面积仓库号职工号工资仓库号城市职工号工资仓库号面积基本表视图视图是一个虚拟表视图是一个虚拟表,其内容由查询定义其内容由查询定义.第3页,共77页,编辑于2022年,星期二1.视图视图的概念的概念视图是一个逻辑表,它允许操作者从其它表或视图存取数视图是一个逻辑表,它允许操作者从其它表或视图存取数据,视图本身不包含数
2、据。视图的数据来源可以由以下任据,视图本身不包含数据。视图的数据来源可以由以下任意一项组成:意一项组成:一个基表的任意子集。一个基表的任意子集。两个或者两个以上基表的合集。两个或者两个以上基表的合集。两个或者两个以上基表的交集。两个或者两个以上基表的交集。对一个或者多个基表运算的结果集合。对一个或者多个基表运算的结果集合。另一个视图的子集。另一个视图的子集。第4页,共77页,编辑于2022年,星期二视图的优点和作用视图的优点和作用v将数据集中显示v简化数据操作v自定义数据v重新组织数据以便导入导出数据v组合分区数据第5页,共77页,编辑于2022年,星期二视图的创建视图的创建v使用企业管理器创
3、建视图v使用向导创建视图v使用SQL语句创建视图其命令格式如下:CREATEVIEWASWITHCHECKOPTIONWITHCHECKOPTION:通过视图进行的修改,必须也能通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如通过该视图看到修改后的结果。比如insertinsert,那么加的这条记录,那么加的这条记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到;如果删除,只能删除视图里有显示的记录通过该视图看到;如果删除,只能删除视图里有显示的记录 第6页,共77页,编辑于2022年,星期二定义视图的
4、例子:定义视图的例子:CREATEVIEWv_empASSELECT职工号,工资,城市FROM职工,仓库WHERE职工.仓库号=仓库.仓库号;对用户就好象有一个表:对用户就好象有一个表:第7页,共77页,编辑于2022年,星期二关于关于 With check optionvcreate view IS_studentasselect sno,sname,sagefrom studentwhere sdept=ISwith check option;v加上了with check option;后,不能执行插入操作:insert into is_student(sno,sname,sage)val
5、ues(95100,李娜,12)第8页,共77页,编辑于2022年,星期二使用视图使用视图v使用视图进行数据检索CREATEVIEWv_sal(职工号,月工资,年工资)ASSELECT职工号,工资,工资*12FROM职工查询视图v_sal:SELECT*FROMv_sal结果:E1122014640E3121014520E4125015000E6123014760E7125015000第9页,共77页,编辑于2022年,星期二v通过视图修改数据 当更新视图中的数据时,实际上是对表的内部数据进行更新。事实上,当从视图中插入或者删除时,情况也是这样。第10页,共77页,编辑于2022年,星期二但并
6、不是每个视图都是可更新的但并不是每个视图都是可更新的,应满足以下条件应满足以下条件:1)没有使用连接函数没有使用连接函数,集合运算函数和组函数。集合运算函数和组函数。2)SELECT语句语句中没有有GROUPBY等子句。等子句。3)SELECT语句中不包含从基表列通过计算所得的列。语句中不包含从基表列通过计算所得的列。注意注意:只有当视图依赖的基本表为单个时只有当视图依赖的基本表为单个时,才可进行插入和删才可进行插入和删除数据的操作除数据的操作,修改操作一次修改数据操作只能变动一个基本修改操作一次修改数据操作只能变动一个基本表的数据表的数据.第11页,共77页,编辑于2022年,星期二v例如C
7、reate table table4(col1 int,col2 varchar(30)Create view view1 as select col2,col1 from table4GoInsert into view1 values(第1行,1)goInsert into view1 values(第2行,2)Select*from table4go结果为:结果为:col1 col2-1 第1行2 第2行第12页,共77页,编辑于2022年,星期二视图的修改视图的修改v使用企业管理器v使用ALTER VIEW 语句v重命名视图 1、企业管理器 2、存储过程 sp_rename 例如:sp
8、_rename view1,view2 view1为原来的名称 view2为新名称ALTERVIEWASWITHCHECKOPTION第13页,共77页,编辑于2022年,星期二视图信息的查询视图信息的查询v使用企业管理器v使用sp_helptext存储过程例如:use school go exec sp_helptext st2_degree 结果为:text -create view st2_degree as 第14页,共77页,编辑于2022年,星期二视图的删除视图的删除命令格式是:DROP VIEW v使用企业管理器v使用T-SQL 第15页,共77页,编辑于2022年,星期二实实
9、训训v建立视图view1,查询所有供应商的供应商号,名称和所在的城市,并按供应商号顺序排序。v建立视图view2,查询所有职工的平均工资。v建立视图view3,查询所有在北京的职工对应的订购单号和订购日期信息。v查看视图。v修改视图的属性。v视图的删除。v视图的重命名及显示视图信息。第16页,共77页,编辑于2022年,星期二9.2索引索引1索引的概念 数据库中的索引与书籍中的索引类似。在一本书中,使用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。书中的索引是一个词语列表,其中注明了包含各个词的页码。而数据库中的索引是指某
10、个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。第17页,共77页,编辑于2022年,星期二索引的作用索引的作用(1)通过创建唯一索引,可以保证数据记录的唯一性。(2)可以大大加快数据检索速度。(3)可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。(4)在使用ORDER BY和GROUP BY子句中进行检索数据时,可以显著减少查询中分组和排序的时间。(5)使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。第18页,共77页,编辑于2022年,星期二索引的分类索引的分类(1)聚集索引 聚集索引对表和视图中的数据进行物理排序,然后
11、再重新存储到磁盘上,这种索引对查询非常有效。表和视图中只能有一个聚集索引。当建立主键约束时,如果表中没有聚集索引,SQL Server会用主键列作为聚集索引键。用户可以在表的任何列或列的组合上建立索引,但一般是为定义成主键约束的列建立聚集索引。(2)非聚集索引 非聚集索引不用将表和视图中的数据进行物理排序。一般在那些经常被用来查询的表的列上建立索引以获得最佳查询性能。但索引也需要占用空间,表越大,建立的包含该表的索引也越大。当一个含有索引的表被改动时,改动数据的速度会减慢,所以不要在表中建立太多且很少用到的索引。第19页,共77页,编辑于2022年,星期二创建索引创建索引v通过企业管理器创建索
12、引v通过向导创建索引v通过SQL语句创建索引其语法格式如下:CREATE UNIQUE CLUSTERED|NONCLUSTERED INDEX 索引名 ON 表名|视图名 (列名 ASC|DESC ,.n )WITH PAD_INDEX,FILLFACTOR=fillfactor,IGNORE_DUP_KEY,DROP_EXISTING,STATISTICS_NORECOMPUTE,SORT_IN_TEMPDB ON filegroup 第20页,共77页,编辑于2022年,星期二l表名 用于指定创建索引的表的名称。l视图名 用于指定创建索引的视图的名称。lASC|DESC 用于指定具体某个
13、索引列的升序或降序排序方向。lCLUSTERED 用于指定创建的索引为聚集索引。lNONCLUSTERED 用于指定创建的索引为非聚集索引。l索引名 用于指定所创建的索引的名称。l列名 用于指定被索引的列。l PAD_INDEX 用于指定索引中间级中每个页(节点)上保持开放的空间。lFILLFACTOR=fillfactor 用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。lIGNORE_DUP_KEY 用于控制当往包含于一个唯一聚集索引中的列中插入重复数据时SQL Server所作的反应。lDROP_EXISTING 用于指定应删除并重新创建
14、已命名的先前存在的聚集索引或者非聚集索引。lSTATISTICS_NORECOMPUTE 用于指定过期的索引统计不会自动重新计算。lSORT_IN_TEMPDB 用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中lON filegroup 用于指定存放索引的文件组。lUNIQUE 用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。其中:第21页,共77页,编辑于2022年,星期二【例】使用CREATEINDEX语句在XSCJ数据库的“成绩表”上创建名为“IX_学号课号”的聚集、惟一、复合索引,该索引基于“学号”和“课程编号”列创建。在查询分析器中运行如下命令:USEX
15、SCJGOCREATEUNIQUECLUSTEREDINDEXIX_学号课号ON成绩表(学号,课程编号)GO第22页,共77页,编辑于2022年,星期二查看、修改索引1.使用企业管理器查看、修改索引2.使用系统存储过程查看、更名索引 系统存储过程sp_helpindex可以返回表的所有索引信息,其语法形式如下:sp_helpindex 表名称 另外,系统存储过程sp_rename可以用来更改索引的名称,其语法形式如下:sp_rename 表名.旧索引名,新索引名第23页,共77页,编辑于2022年,星期二【例6-17】使用系统存储过程sp_helpindex查看XSCJ数据库中“成绩表”的索引
16、信息。在查询分析器中运行如下命令:USEXSCJGOsp_helpindex成绩表GO第24页,共77页,编辑于2022年,星期二【例】使用系统存储过程将索引“PK_成绩表”更名为“IX_成绩表”。在查询分析器中运行如下命令:USEXSCJGOEXECsp_rename成绩表.PK_成绩表,IX_成绩表GO第25页,共77页,编辑于2022年,星期二1.使用企业管理器删除索引要删除索引,可以在企业管理器中,从【管理索引】对话框中或者【表的属性】对话框中,选择要删除的索引,单击【删除】按钮,即可删除索引。2.使用DROP INDEX命令删除索引当不再需要某个索引时,可以将其删除,DROP IND
17、EX命令可以删除一个或者多个当前数据库中的索引,其语法格式如下:DROP INDEX table.index|view.index ,.n 其中:table|view用于指定索引列所在的表或索引视图;index用于指定要删除的索引名称。注意,DROP INDEX命令不能删除由CREATE TABLE或者ALTER TABLE命令创建的主键或者唯一性约束索引,也不能删除系统表中的索引。删除索引第26页,共77页,编辑于2022年,星期二【例】删除“学生基本信息表”中名为“IX_学生姓名”的索引。在查询分析器中运行如下命令:USE XSCJGODROP INDEX 学生基本信息表.IX_学生姓名G
18、O第27页,共77页,编辑于2022年,星期二1、创建各表索引:(1)基于订购单表的订购单号列创建名为IX_订购单号的聚集、唯一索引;(2)基于职工表的仓库号、职工号列创建名为IX_职工的非聚集、唯一索引;(3)基于供应商表的供应商号列创建名为IX_供应商的非聚集索引,并删除;2、显示索引信息。3、对索引进行重命名。实训第28页,共77页,编辑于2022年,星期二9.3 数据完整性数据完整性v数据完整性的定义 数据完整性是指存放在数据库中的数据要满足的业务规则,是确保数据库的数据一致、正确以及符合企业规则的一种思想。如年龄0150,性别男,女,成绩表中学号必须在学生基本信息表中存在等。这样可以
19、保证有效的有意义的数据存放到数据库中。v完整性类型 数据完整性有四种类型:实体完整性、域完整性、引用完整性、用户自定义完整性。第29页,共77页,编辑于2022年,星期二1实体完整性 实体完整性也可称为表的完整性,是指表中必须有一个主关键字,实体完整性也可称为表的完整性,是指表中必须有一个主关键字,用来惟一地标识表中的每一行,且不允许为空值(用来惟一地标识表中的每一行,且不允许为空值(NULL)。实体完)。实体完整性强制表的标识符列或主键的完整性(通过索引、整性强制表的标识符列或主键的完整性(通过索引、UNIQUE约束、约束、PRIMARY KEY约束或约束或IDENTITY属性实现)。属性实
20、现)。2.域完整性 域完整性也可称为列的完整性,是指给定列的输入有效性,用于限制域完整性也可称为列的完整性,是指给定列的输入有效性,用于限制向表中输入的值的范围。强制域有效性的方法有:限制类型(通过类型)向表中输入的值的范围。强制域有效性的方法有:限制类型(通过类型)、格式(通过、格式(通过CHECK约束和规则)或可能值的范围(通过约束和规则)或可能值的范围(通过FOREIGN KEY约束、约束、CHECK约束、约束、DEFAULT定义、定义、NOT NULL定义和规则)。定义和规则)。第30页,共77页,编辑于2022年,星期二3.引用完整性引用完整性 引用完整性也称参照完整性,在输入或删除
21、记录时,引用完整性保持表之间已定义的关系。在SQL Server2000中,引用完整性基于外键与主键之间或外键与唯一键之间的关系(通过FOREIGN KEY和CHECK约束)。4.引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。第31页,共77页,编辑于2022年,星期二 强制引用完整性时,SQL Server禁止用户进行下列操作:l 当主表没有关联的记录时,将记录添加到相关表中。l 更改主表中的值并导致相关表中的记录孤立。l 从主表中删除记录,但仍存在与该记录匹配的相关记录。4.4.用户自定义完整性
22、用户自定义完整性 用户自定义完整性主要体现实际运用的业务规则中。例如,在“班级表”中,规定04届学生班级的“班级名称”前两个字符必须是04等。用户定义的完整性可以通过前面3种完整性的实施得到维护。第32页,共77页,编辑于2022年,星期二使用约束实现数据完整性使用约束实现数据完整性PRIMARY KEYPRIMARY KEY约束约束 表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键(PK),通过它可强制表的实体完整性。当创建或更改表时可通过定义PRIMARY KEY约束来创建主键。注意,每个表有且只有一个PRIMARY KEY约束,PRIMARY KEY
23、约束中的列不能接受空值,系统在定义PK的列上自动建立唯一索引,主键可以是多列的组合。如果如果PRIMARY KEY约束定义在不止一列上,则一列中的值可以约束定义在不止一列上,则一列中的值可以重复,但重复,但PRIMARY KEY约束定义的所有列的组合的值必须唯一。约束定义的所有列的组合的值必须唯一。只有在进行联接或执行只有在进行联接或执行INSERT时才检查主键约束。时才检查主键约束。第33页,共77页,编辑于2022年,星期二UNIQUE 约束 使用UNIQUE约束可以确保表中在非主键列中不输入重复值。尽管UNIQUE约束和PRIMARY KEY约束都强制惟一性,但在强制下面的唯一性时应使用
24、UNIQUE约束而不是PRIMARY KEY约束:l 非主键的一列或组合。l 一个表可以定义多个UNIQUE约束,而只能定义一个PRIMARY KEY约束。l 允许空值的列。l 允许空值的列上可以定义UNIQUE约束,但不能定义PRIMARY KEY约束。FOREIGN KEY约束也可以引用UNIQUE约束。第34页,共77页,编辑于2022年,星期二图 设计表图【管理约束】对话框【例】为数据库【例】为数据库XSCJXSCJ中中“系部表系部表”的的“系部名称系部名称”列上创建列上创建UNIQUEUNIQUE约束。约束。方法一、在企业管理器中创建方法一、在企业管理器中创建UNIQUEUNIQUE
25、约束。可以按以下步骤操作:约束。可以按以下步骤操作:展开服务器,单击【数据库】,在展开数据库展开服务器,单击【数据库】,在展开数据库XSCJXSCJ后,单击【表】。后,单击【表】。右击【系部表】,在弹出的快捷菜单中单击【设计表】,打开如图右击【系部表】,在弹出的快捷菜单中单击【设计表】,打开如图9-19-1所示的设计表对话框。所示的设计表对话框。单击【管理约束】按钮,弹出如图所示的【管理约束属性】对话框,选择【索引单击【管理约束】按钮,弹出如图所示的【管理约束属性】对话框,选择【索引/键】标签。键】标签。第35页,共77页,编辑于2022年,星期二单击【新建】按钮,在列名下选择【系部名称】,再
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 视图 索引 数据 完整性 PPT 讲稿
限制150内