教学材料《数据库》-第7章_第1页
教学材料《数据库》-第7章_第2页
教学材料《数据库》-第7章_第3页
教学材料《数据库》-第7章_第4页
教学材料《数据库》-第7章_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

7.1索引7.1.1索引的概述1、索引的概念索引是对数据库表中一个或多个列(例如,employee表的姓氏(lname)列)的值进行排序的结构。2、索引的优缺点

3、使用索引的原则(1)主键列上一定要建立索引;(2)外键列可以建立索引;(3)在经常查询的字段上最好建立索引;(4)对于那些查询中很少涉及的列、重复值比较多的列不要建立索引;(5)对于定义为text、image和bit数据类型的列不要建立索引。按存储结构可以将索引分为聚集索引(也可称为聚簇索引)和非聚集索引(也可称为非聚簇索引)。按数据的唯一性,可以将索引分为唯一性索引和非唯一性索引。1、聚集索引

聚集索引确定表中数据的物理顺序,创建聚集索引后,数据将对指定被索引的列进行排序,一个表中只能包含一个聚集索引。注意:如果表中没有创建其他的聚集索引,则在表的主键列上自动创建聚集索引。2、非聚集索引

非聚集索引指定表的逻辑顺序,一个表中可以包含多个非聚集索引。注意:一般情况下,先创建聚集索引,后创建非聚集索引,因为创建聚集索引会改变表中的行的顺序,从而会影响到非聚集索引。创建多少个非聚集索引,取决于用户执行的查询要求。

7.1.2索引的类型3、唯一性索引

唯一性索引能够保证在创建索引的列或多列的组合上不包括重复的数据,聚集索引和非聚集索引都可以是唯一性索引。

在创建主键约束(PRIMARY)和唯一性约束(UNIQUE)的列上,SQLServer2008会自动创建唯一性索引。注意:唯一性索引和非唯一性索引都能提高数据的查询速度,但是唯一性索引更能确保数据的唯一性。

7.1.2索引的类型在实际创建索引之前,有如下几个注意事项。(1)当给表创建PRIMARY或UNIQUE约束时,SQLServer会自动创建索引(2)索引的名称必须符合SQLServer的命名规则,且必须是表中唯一(3)可以在创建表时创建索引,或是给现存表创建索引;(4)只有表的所有者才能给表创建索引;(5)每个表最多可同时拥有1个聚集索引和249个非聚集索引;(6)最多可以给16个字段(来自同一个表)的组合创建一个多列索引,而这些字段的总长度不能超过900个字节。(7)在创建一个聚集索引时,所有现存的非聚集索引会重新创建,因此要先创建聚集索引,再创建各个非聚集索引。注意:在创建聚集索引时,还要考虑数据库剩余空间的问题。

创建唯一性索引时,应保证创建索引的列不包括重复的数据,并且没有两个或两个以上的空值(NULL)。7.1.3创建索引图7.7索引创建成功1、利用SSMS创建索引图7.4“新建索引”界面

图7.5“新建索引”对话框图7.6选择索引列可以用CREATEINDEX语句在一个已经存在的表上创建索引,格式如下:CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_nameON{table|view}(column[ASC|DESC][,…n])[ONfilegroup]参数说明如下:①UNIQUE、CLUSTERED和NONCLUSTERED选项:指定所创建索引的类型,分别为唯一性索引、聚集索引和非聚集索引。省略UNIQUE时,SQL

Server所创建的是非唯一性索引;省略CLUSTERED|NONCLUSTERED选项时,SQLServer所创建的是非聚集索引。②index_name:说明所创建的索引名称,应遵守SQLServer标识符命名规则。③table|view:指定为其创建索引的表或视图。④column:指定索引的键列。不能对text、ntext、image数据类型列创建索引。⑤ASC|DESC:指定索引列的排序方式是升序还是降序,默认为升序(ASC)。⑥ON子句:指定保存索引文件的数据库文件组名称。2、利用T-SQL语句创建索引7.1.4管理索引1、查看索引(1)利用SSMS查看索引图7.8索引属性(2)利用T-SQL语句查看索引

7.1.4管理索引1、查看索引2)查看索引的空间信息

①命令格式:Sp_spaceused[‘表的名称’]

②功能:显示行数、保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。3)查看索引属性

①命令格式:INDEXPROPERTY(表的标识号,索引的名称,属性)

②功能:显示表中指定索引的属性信息。

1)查看表中的索引①命令格式:Sp_helpindex[@objname=]‘表或视图的名称’②功能:报告有关表或视图上索引的信息。(1)利用SSMS修改索引图7.11“索引属性”窗口(2)利用T-SQL语句修改索引在SQLServer2008中,虽然提供了SQL语句ALTERINDEX,但是此语句与索引维护有关,而与索引结构则没有任何关系。它不能用于修改索引定义,如添加或删除列,或更改列的顺序,只能够通过重新组织索引或重新生成索引来修复索引碎片。2、修改索引3、删除索引图7.12索引删除界面

图7.13“删除对象”对话框(1)利用SSMS删除索引(2)利用T-SQL语句删除索引1)命令格式:DROPINDEXtable_name.index_name[,…n]2)功能:删除指定的索引。可以列出多个要删除的索引名。利用DROPINDEX命令删除通过定义PRIMARYKEY或UNIQUE约束创建的索引,必须先删除指定的约束。7.2视图1、视图的概念视图是一种数据库对象,它由多个字段列和数据行构成,这些列和行来自于一个或多个物理数据表,但它并不在数据库中以存储的数据表形式存在,所以说视图是一个虚拟表,所对应的数据是存储在所引用的数据表中,被引用的表称为基表。

2、视图的特点

(1)视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。(2)视图是由基表(实表)产生的表(虚表)。(3)视图的建立和删除不影响基表。(4)对视图内容的更新(添加、删除和修改)直接影响基表。(5)当视图来自多个基表时,不允许添加和删除数据。

3、视图的作用(1)定制数据(2)简化操作(3)提供安全机制(4)改进性能

7.2.1视图的概述7.2.2创建视图(1)利用SSMS创建视图图7.17“新建视图”命令图7.18“添加表”对话框图7.19创建视图窗口图7.20创建视图成功利用CREATEVIEW语句可以创建视图,语法格式如下:CREATEVIEW[schema_name.]view_name[(column[,…n])][WITHENCRYPTION]ASSELECT_statement[WITHCHECKOPTION]

参数说明如下:schema_name:为视图所属架构名。view_name:为视图名。column:视图中所使用的列名,一般只有列是从算术表达式、函数或常量派生出来的,或列的指定名称不同于来源列的名称时,才需要使用。WITHENCRYPTION:加密视图。SELECT_statement:搜索语句。WITHCHECKOPTION:强制针对视图执行的所有数据修改语句都必须符合在SELECT_statement中设置的WHERE条件。在SELECT_statement子句中不允许使用ORDERBY子句和DISTINCT关键字,如果需要排序,可在视图定义后,对视图查询时进行排序。(2)利用T-SQL语句创建视图7.2.3管理视图利用SSMS修改视图图7.25“设计”命令图7.26视图设计器2.利用T-SQL语句修改视图

利用ALTERVIEW语句可以修改视图定义,该命令的基本语法如下:ALTERVIEW[schema_name.]view_name[(column[,…n])][WITHENCRYPTION]ASSELECT_statement[WITHCHECKOPTION]

其中,参数的含义与创建视图CREATEVIEW命令中的参数含义相同。1、修改视图2、删除视图(1)利用SSMS删除视图图7.27删除命令图7.28“删除对象”对话框(2)利用T-SQL语句删除视图删除视图的语法格式如下:

DROPVIEWview_name[,…n]其中,view_name为所要删除的视图的名称。7.2.4

利用视图管理数据1、利用视图查询数据(1)利用SSMS查询视图数据图7.29查看视图v_sinformation1的数据(2)利用T-SQL语句查询视图数据在SQL语句里,使用SELECT语句可以查看视图的内容,其用法与查看数据表内容的用法一样,区别只是把数据表名改为视图名。利用视图向基表插入数据时,必须满足下面的限制条件:因为视图只是选取基表中的部分列,所以通过视图添加的记录也只能传递这些选取的列,因此要求其他在视图中不存在的列必须允许为空(NULL),或有默认值以及其他能自动计算或自动赋值(如IDENTITY)的属性。否则,不能向视图插入数据不能在一个插入语句中向多个基表插入数据。如果视图引用了多个数据表,通过该视图向这些基表添加数据时应书写多个插入语句。如果在定义视图的查询语句中使用了聚合函数或GROUPBY、HAVING子句,则不允许对视图进行插入或更新操作。如果在定义视图的查询语句中使用了DISTINCT选项,则不允许对视图进行插入或更新操作。如果在视图定义中使用了WITHCHECKOPTION选项,则在视图上插入、修改的数据必须符合定义视图的SELECT语句的WHERE后所设定的条件。2、利用视图插入数据2、利用视图插入数据(1)利用SSMS插入数据图7.30插入数据注意:在视图中插入数据后,基表中的数据会随之改变。(2)利用T-SQL语句插入数据在SQL语句里,也是通过INSERT语句向视图插入数据,其用法与向数据表插入数据的用法一样,区别只是把数据表名改为视图名。要更新视图中的数据信息,必须要注意以下几点:TIMESTAMP和BINARY类型的字段不能编辑。如果字段的值是自动产生的,如IDENTITY、计算字段等也不能编辑。经编辑的字段内容必须符合引用表的字段定义。在引用表中可以不用输入内容的字段,如可以为NULL或有默认值的字段,在视图中也可以不输入内容。在视图中修改的字段最好是同一个引用表中的字段,避免出现一些未知的结果。在视图中修改的字段内容,实际上就是在数据表中修改的字段内容。(1)利用SSMS更新数据(2)利用T-SQL语句更新数据在SQL语句里,也是通过UPDATE语句更新视图中的数据,其用法与更新数据表中数据的用法一样,区别只是把数据表名改为视图名。同时,如果视图数据来自两个或两个以上的数据表,UPDATE语句一次只允许修改一个数据表中的数据。3、利用视图更新数据(1)利用SSMS删除数据(2)利用T-SQL语句删除数据在SQL语句里,删除视图中的数据也可利用DELETE语句,其用法与删除数据表中数据的用法一样,区别只是把数据表名改为

温馨提示

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

评论

0/150

提交评论