实验六 索引的创建和使用(课件)
第6章创建索引、数据库关系PPT课件

6.3 使用SQL Server 2008删除索引
在上一节讨论了三种创建索引的方法,在本节中将学习在 SQL Server 2008中删除索引的方法,和创建索引类似, 删除索引也可以使用SQL Server Management Studio和TSQL的两种方法,本节中将分别对这两种删除索引的方法 进行介绍。
6.4 使用SQL Server 2008维护索引
在完成索引的创建后,下面学习使用SQL Server 2008对索引 进行维护。
6.4.1 显示索引信息
在建立索引后,可以使用下列两种方法对表索引信息进行查 询。
在SQL Server Management Studio的【对象资源管理器】面 板中,使用与创建索引同样的方法,在右击索引对应的分 支菜单项弹出的快捷菜单中选择【属性】命令,即可弹出 该索引对应的信息对话框。
通过Transact-SQL语句来实现,更改索引名称的命令格式如 下: EXEC sp_ rename table_ name.old_index_name, new_index_name
6.3.2 使用T-SQL删除索引
同样,也可以使用Transact-SQL语句删除索引,使用 Transact-SQL语句删除索引的语法格式如下:
DRQP INDEX Table_name.index name[,table_name.index_narne...] 其中: table name:代表索引所在的表名称。 index name:代表要删除的索引的名称。
6.2 使用SQL Server 2008创建索引
索引及创建索引

建立索引,就生成了一个索引文件.生成的索引文 件分两种:
1,简单索引文件: <文件名> . IDX 简单索引文件: ——文件名由用户命名;
2,复合索引文件: 复合索引文件:
<文件名> . CDX
——文件名与原表同名.
1,简单索引文件又称单一索引文件. 它仅仅按单一个字段索引排序,而且它只能 按升序排序.
2, 利用命令创建索引
(1) 创建独立索引
( P 100 )
INDEX ON <关键字> <关键字 关键字>
(2) 创建结构复合索引
TO <索引文件名> <索引文件名 索引文件名>
INDEX ON <关键字> TAG <索引标记> <关键字 关键字> <索引标记 索引标记>
Ascending / Descending
5.4 索引的使用
5.4.1 5.4.1. 按索引字段排序 (1)先打开 "表" .
P 103
(2)在系统主菜单下,打开"表"菜单,选 择"属性",进入"工作区属性 工作区属性"窗口. 工作区属性 (3)在"工作区属性"窗口,打开索引顺序 对话框,选择索引字段名,按"确定"按钮,表 中的数据按其索引字段值的大小顺序显示.
如何选择索引的类型 如何选择索引的类型
1.
( P 99) 99)
只对一个表建立索引, 只对一个表建立索引,则按索引字段值唯一性选定
2.
对多个表建立索引时, 对多个表建立索引时,作为一对一或一对多关系的 "一"方表(父表),应使用主索引或候选索引;另 方表(父表),应使用主索引 候选索引; ),应使用主索引或 一方(子表) ,则使用普通索引. 普通索引. 一方(子表) 则使用普通索引
第6章 索引及其应用

教学提示:索引是以表列为基础的数据库对象,它保存着表中排序的 教学提示:索引是以表列为基础的数据库对象, 教学提示 索引列,并且记录了索引列在数据表中的物理存储位置, 索引列,并且记录了索引列在数据表中的物理存储位置,实现了表中 数据的逻辑排序.数据库中的索引与书籍中的目录类似,在一本书中, 数据的逻辑排序.数据库中的索引与书籍中的目录类似,在一本书中, 利用索引可以快速查找到所需要的信息,无须阅读整本书, 利用索引可以快速查找到所需要的信息,无须阅读整本书,在数据库 索引使数据库程序无须对整个表进行扫描, 中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所 需要的数据.当创建数据库并优化其性能时, 需要的数据.当创建数据库并优化其性能时,应该为数据查询所使用 表的列创建索引,其主要目的是提高SQL Server系统的性能,加快数 系统的性能, 表的列创建索引,其主要目的是提高 系统的性能 据的查询速度和减少系统的响应时间. 据的查询速度和减少系统的响应时间. 教学目标:通过本章的学习,读者应该掌握索引的概念创建,统计 , 教学目标:通过本章的学习,读者应该掌握索引的概念创建,统计, 教学目标 删除,维护和管理等操作. 删除,维护和管理等操作.
第6章 索引及其应用
删除索引 【例6.2】 在SQL Server Management Studio窗口中删除例 建立的索引 【 窗口中删除例6.1建立的索引 】 窗5 确定删除
第6章 索引及其应用
使用Transact-SQL语句删除索引 使用Transact-SQL语句删除索引的语法格式如下: DROP INDEX Table_name.index_name[,table_name.index_name…] 【例6.3】 使用Transact-SQL语句删除例6.1建立的索引. 在SQL Server Management Studio查询窗口中运行如下命令: USE book GO DROP INDEX book1.IX_book1 GO 在用DROP INDEX命令删除索引时,需要注意如下事项: (1) 不能用DROP INDEX语句删除由PRIMARY KEY约束或UNIQUE约 束创建的索引.要删除这些索引必须先删除PRIMARY KEY约束或 UNIQUE约束. (2) 在删除聚集索引时,表中的所有非聚集索引都将被重建.
第6章使用索引和视图(2)精品PPT课件

6.3.2 修改索引
使用企业管理器,打开表设计器,在“索引/键” 卡片中修改索引的定义; 修改索引的过程是首先删除表中准备修改的索 引,然后使用新的索引定义重新创建该索引; 创建和修改聚集索引时,SQL Server要对表的 行进行重组,当表中存储了大量数据时,会产生 很大的开销,可能要花很长时间。
6.4.1 使用聚集索引
用于以下情况: 包含大量非重复值的列; 查询使用下列运算符返回一个范围值的列: BETWEEN、>、>=、<、<=; 返回大型结果集的查询; 经常被使用连接或GROUP BY子句查询访问的 列。
注意:聚集索引不适用于频繁更新的列。
6.4.2 使用非聚集索引
非聚集索引用于以下情况。 包含大量非重复值的列,如姓名列。 不返回大型结果集的查询。 搜索条件(WHERE子句)要求精确匹配的查询 中经常使用的列。 经常需要连接和分组查询语句。
CREAT [UNIQUE][CLUSTERED][NONCLUSTERable|view} (column[ASC|DESC][,…n]) [WITH FILLFACTOR=fillfactor, DROP_EXSITING
]
2、使用T-SQL创建索引
6.5 维 护 索 引
6.5.1 维护统计信息 6.5.2 数据碎片 6.5.3 重建和整理索引
1.删除并重新创建聚集索引 2.DBCC INDEXDEFRAG命令 3.DROP_EXISTING子句
6.6 视图
视图是从一个或几个基表(或视图)导出的表。 视图是虚表; 数据库中只存放视图定义,而不存放视图 对应的数据; 视图一经定义,就可以和基本表一样被查 询、删除。
1.使用企业管理器创建索引 2.使用T-SQL创建索引
索引ppt课件.ppt

索引的优缺点
优点
加快访问速度
加强行的唯一性
缺点
带索引的表在数据库中需要更多的存储空间 操纵数据的命令需要更长的处理时间,因为它
们需要对索引进行更新
创建索引的指导原则
请按照下列标准选择建立索引的列。
该列用于频繁搜索
该列用于对数据进行排序
请不要使用下面的列创建索引:
列中仅包含几个不同的值。 表中仅包含几行。为小型表创建索引不太划
填充因子
创建索引时,可以指定一个填充因子,以便在索引的每个 叶级页上留出额外的间隙和保留一定百分比的空间,供将 来表的数据存储容量进行扩充和减少页拆分的可能性。填 充因子的值是从 0 到 100 的百分比数值,指定在创 建索引后对数据页的填充比例。值为 100 时表示页将 填满,所留出的存储空间量最小。只有当不会对数据进行 更改时(例如,在只读表中)才会使用此设置。值越小则 数据页上的空闲空间越大,这样可以减少在索引增长过程 中对数据页进行拆分的需要,但需要更多的存储空间。当 表中数据会发生更改时,这种设唯一索引不允许两行具有相同的索引 值 主键索引:为表定义一个主键将自动创建主键索 引,主键索引是唯一索引的特殊类型。主键索引 要求主键中的每个值是唯一的,并且不能为空 聚集索引(Clustered):表中各行的物理顺序与键 值的逻辑(索引)顺序相同,每个表只能有一个 非聚集索引(Non-clustered):非聚集索引指定表 的逻辑顺序。数据存储在一个位置,索引存储在 另一个位置,索引中包含指向数据存储位置的指 针。可以有多个,小于249个
索引
什么是索引
汉语字典中的汉字按页存放,一般都有汉语拼音目 录(索引)、偏旁部首目录等 我们可以根据拼音或偏旁部首,快速查找某个字词
实验 索引的创建与管理

实验索引的创建与管理2016-3-29实验目的1、理解索引的概念与类型。
2、掌握创建、更改、删除索引的方法。
3、掌握维护索引的方法。
实验内容及步骤一、实验内容:在SQL Server 2000中,使用企业管理器和T-SQL语言创建索引,以提高数据库的检索效率,加速表与表之间的连接,减少分组与排序的时间。
二、实验步骤:1.使用企业管理器创建、管理索引(1)创建索引为student表创建一个以student_id为索引关键字的惟一聚簇索引。
1)运行SQL Server企业管理器。
2)展开服务器、数据库。
3)用鼠标右键单击要创建索引的表,在系统弹出的快捷菜单中,分别单击“所有任务”、“管理索引”,系统将弹出管理索引窗口。
该窗口显示了该表目前存在的索引。
4)在该对话窗口中可以选择数据库和表并为之创建索引,另外,也可以编辑、删除索。
5)在“数据库”和“表/视图”下拉列表框中分别选择要创建索引所在的数据库和表,然后,单击“新建”按钮,系统将打开新建索引窗口。
6)在索引名称文本框中输入新索引的名称student,并在字段列表中选择要创建索引的关键字student_id,单击索引选项复选框“聚簇索引”、“惟一值”。
7)设置完成后,单击“确定”按钮,索引创建完成。
(2)重命名索引将索引文件student重新命名为studentl。
1)进入企业管理器,分别展开“服务器”、“数据库”、“表”。
2)用鼠标右键单击要创建索引的表,选择“设计表”,系统将弹出“设计表”窗口。
3)在“设计表”窗口中按鼠标右键,在其出现的快捷菜单上选择“索引/键“,系统将弹出索引属性窗口。
4)在“索引名”文本输入框内输入新的索引名称。
如需改变索引关键字、填充因子等选项,可在相应的下拉框或文本框中重新输入。
5)更改完成后,单击“关闭”按钮即可。
(3)删除索引将索引文件studentl删除。
1)运行SQLServer企业管理器。
2)展开服务器、数据库。
第6章 索引的创建与使用概论

2020/11/20
9
SQL Server2005
复合索引:在对数据表创建索引时,有时创建基 于单个字段的索引不能满足查询要求,这时需要 对表创建多个字段的索引,这样的索引称为复合 索引。在SQL SERVER系统中一个复合索引中 包含的字段最多是16个,并且要求这些字段都属 于一个表。
在查询中几乎不涉及的列。 很少有唯一值的列(即包含太多重复值得列,如性别字段)。 数据类型为text、ntext或image的列。 只有较少行数的表没有必要创建索引。 当写的性能比查询更重要时,应少建或不建索引。
2020/11/20
5
SQL Server2005
5.1.2 索引的分类
SQL Server 2005 中常用的索引类型 :
2020/11/20
7
SQL Server数据行的物理存 储结构无关,因此在创建非聚集索引时不会改变 数据表中记录的物理存储顺序。每个表的非聚集 索引最多为249个。
下列情况时可以考虑创建非聚集索引:
使用 JOIN 或 GROUP BY 子句。 应为连接和分组操 作中所涉及的列创建多个非聚集索引。
2020/11/20
14
SQL Server2005
例5.2 为sales数据库中的Product表创建一个复合 索引,依据字段CategoryID和Price进行排序。
USE sales GO CREATE INDEX C_P_index ON Product (CategoryID, Price)
查看索引信息,其语法形式如下:
sp_helpindex [@objname]=’name’
例5.3 利用系统存储过程查看sales数据库中表
实验六 视图和索引 实验指导

实验六视图和索引实验指导一、视图视图是SQL Server中重要的数据库对象。
视图常用于集中、简化和定制显示数据库的数据信息,为用户从多种角度观察数据库中的数据提方便。
为了屏蔽数据的复杂性、简化用户对数据的操作、控制用户访问数据的权限、保护数据安全,常为不同的用户创建不同的视图。
1. 视图的基本概念视图是从一个或多个表或视图导出的表;其结构和数据是建立在对表的查询基础上的。
和表一样,视图也是包括几个被定义的数据列和多个数据行。
但就本质而言,这些数据列和数据行来源于其所引用的表。
所以,视图不是真实存在的基础表,而是一张虚表。
视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份。
通过视图看到的数据,只是存放在基本表中的数据。
对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。
当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。
可以将任何符合视图创建规定的SELCT语句命名和存储为视图。
在视图中北查询的表称为基表。
视图的常见实例如下。
●一个基表的行或列的于集。
●两个或多个表的合并。
●两个或多个表的联接。
●一个基表的统计总汇。
●另外一个视图的子集。
●视图和基表的混合。
2. 创建视图在SQL Server2008中创建视图,创建者必须拥有创建视图的权限,并且对视图中引用的基表或视图有许可权。
此外,创建视图前还应该注意以下几点:●只能在当前数据库中创建视图。
如果使用分布式查询,视图所引用的基表和视图可以存在于其他数据库或其他服务器中。
●在一个视图中最多引用1024列,视图中记录的行数限制由基表中的记录数目决定。
●视图的名称必须遵循标识符的命名规则,且对每个架构都必须唯一,并且该名称不得与该架构包含的任何表的名称相同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六索引的创建和使用
建议学时:2
实验目的:
1)了解索引的概念、优点及分类。
2)掌握在SQL Server Management Studio 中创建、修改和删除索引的操作。
3)掌握使用T-SQL语句创建、修改和删除索引的操作。
实验内容及步骤:
(一)索引的概念
数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。
索引的优点:
1.可以大大加快数据检索速度。
2.通过创建唯一索引,可以保证数据记录的唯一性。
3.在使用ORDER BY和GROUP BY子句进行检索数据时,可以显著减少查询中分组和排序的时间。
4.使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。
5.可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。
索引的分类:
1.聚集索引
聚集索引基于数据行的键值,在表内排序和存储这些数据行。
每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储,表中的物理顺序和索引中行的物理顺序是相同的。
2.非聚集索引
非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。
非聚集索引包含索引键值和指向表数据存储位置的行定位器。
可以对表或索引视图创建多个非聚集索引。
设计非聚集索引是为了改善经常使用的、没有建立聚集索引的查询的性能。
3.唯一索引
确保索引键不包含重复的值。
聚集索引和非聚集索引都可以是唯一索引,这种唯一性与主键约束是相关联的,在某种程度上,主键约束等于唯一性的聚集索引。
(二)SSMS中索引的管理
1.新建索引
【例1】为GZGL数据库中的employee表新建非聚集索引i_emp_age,要求按emp_age 升序完成。
①在【对象资源管理器】中,展开指定的服务器、数据库和要创建索引的表。
右键单击【索引】,然后单击【新建索引】→【非聚集索引】,如图3-45所示。
②出现的【新建索引】对话框,如图3-46所示。
在【索引名称】文本框中输入新建索引的名称i_emp_age,在下面的复选框中可设定是否唯一。
③在【索引键列】可使用旁边的【添加】按钮添加要设定索引的属性,弹出选择列对话框,如图3-47所示,选择emp_age,然后单击【确定】按钮。
④返回【新建索引】对话框,在如图3-48所示的【索引键列】中可设置【排序次序】等属性,最后单击“确定”按钮,即可生成新的索引。
如果需要建立基于多个属性的复合索引,可在步骤③中添加多个属性。
图3-45 新建非聚集索引
图3-46 新建索引窗口
图3-47 选择列窗口
图3-48 设置索引列属性
2. 查看和修改索引
在【对象资源管理器】中,展开指定的服务器、数据库和要创建索引的表。
右键单击要修改的索引,然后单击【属性】,在出现的【索引属性】对话框中,可以修改索引的大部分设置。
要修改索引的名称,右键单击要修改的索引,然后单击【重命名】,然后直接在【索引名】文本框中输入新的索引名称替换原来的索引名称。
3. 删除索引
在【对象资源管理器】中,右键单击要删除的索引,单击【删除】按钮,即可。
(三)使用T-SQL语句管理索引
1.创建索引
语法:CREATE [UNIQUE] [CLUSTERED│NONCLUSTERED]INDEX index_name ON {table│view} (column [ASC│DESC] [,…n])
【例2】为表employee创建一个非聚集索引,索引字段为emp_name,索引名为i_emp_name。
use gzgl
create index i_emp_name on employee(emp_name)
【例3】新建一个表,名称为temp,为此表创建一个惟一聚集索引,索引字段为temp_number,索引名为i_temp_number。
use gzgl
create table t_temp
(temp_number int,
temp_name char(10),
temp_age int)
create unique clustered index i_temp_number
on t_temp(temp_number)
【例4】为表employee创建一个复合索引,使用emp_sex的升序和emp_age的降序排列,索引名为i_employee。
create index i_employee on s(emp_sex,emp_age desc)
2.查看索引
使用系统存储过程sp_helpindex 查看索引信息,语法格式如下:
sp_helpindex [@objname=] ‘name’
【例5】查看employee表的索引信息。
sp_helpindex employee
3.重命名索引
使用系统存储过程sp_rename修改索引名称,语法格式如下:
sp_rename[@objname=] ‘object_name’,[@newname=] ‘new_name’
[,[@objtype=] ‘object_type’]
【例6】将s表中的索引i_employee的名称改为i_s_sexandage。
use student
sp_rename ‘s.i_employee’,’i_s_sexandage’,’index’
4.删除索引
语法格式如下:
drop index ‘table.index│view.index’[,…n]
【例7】删除表s中的索引i_s_sexandage。
drop index s. i_s_sexandage
实验习题:
(1)为s表创建一个复合索引i_sdept_sno,以院系升序、学号降序。
(2)查看表s中的索引信息。
(3)将索引i_sdept_sno的名称改为i_s。
(4)删除索引i_s。
(5)为课程表创建一个唯一聚集索引i_cname,以课程名升序。
如果不能执行,请分析
说明原因。