实验六 索引的创建和使用(课件)
- 格式:doc
- 大小:183.50 KB
- 文档页数:4
实验索引的创建与管理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)展开服务器、数据库。
实验六视图和索引实验指导一、视图视图是SQL Server中重要的数据库对象。
视图常用于集中、简化和定制显示数据库的数据信息,为用户从多种角度观察数据库中的数据提方便。
为了屏蔽数据的复杂性、简化用户对数据的操作、控制用户访问数据的权限、保护数据安全,常为不同的用户创建不同的视图。
1. 视图的基本概念视图是从一个或多个表或视图导出的表;其结构和数据是建立在对表的查询基础上的。
和表一样,视图也是包括几个被定义的数据列和多个数据行。
但就本质而言,这些数据列和数据行来源于其所引用的表。
所以,视图不是真实存在的基础表,而是一张虚表。
视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份。
通过视图看到的数据,只是存放在基本表中的数据。
对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。
当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。
可以将任何符合视图创建规定的SELCT语句命名和存储为视图。
在视图中北查询的表称为基表。
视图的常见实例如下。
●一个基表的行或列的于集。
●两个或多个表的合并。
●两个或多个表的联接。
●一个基表的统计总汇。
●另外一个视图的子集。
●视图和基表的混合。
2. 创建视图在SQL Server2008中创建视图,创建者必须拥有创建视图的权限,并且对视图中引用的基表或视图有许可权。
此外,创建视图前还应该注意以下几点:●只能在当前数据库中创建视图。
如果使用分布式查询,视图所引用的基表和视图可以存在于其他数据库或其他服务器中。
●在一个视图中最多引用1024列,视图中记录的行数限制由基表中的记录数目决定。
●视图的名称必须遵循标识符的命名规则,且对每个架构都必须唯一,并且该名称不得与该架构包含的任何表的名称相同。
实验报告单院(系)计算机学院专业计算机科学与技术班级姓名学号同组人实验室S4305 组号日期课程数据库实用技术指导教师成绩实验项目编号8103203006 实验项目名称索引和数据的完整性一、实验目的(1)掌握索引的使用方法;(2)掌握数据完整性的实现方法;二、实验环境WIN7操作系统SQL Server2008三、实验原理(或要求)(1)了解索引的作用与分类;(2)掌握索引的创建方法;(3)理解数据的完整性的概念与分类;(4)掌握各种数据完整性的实现方法。
四、实验步骤(1)建立索引①使用CREATE INDEX语句创建索引。
●对YGGL数据库的Employees表中的DepartmentID列建立索引。
在查询分析器中输入如下程序并执行:USE YGGLGOCREATE INDEX depart_indON Employees(DepartmentID)GO●在Employees表的Name列和Address列上建立复合索引。
CREATE INDEX Ad_indON Employees(Name,Address)●对Departments表上的DepartmentName列建立唯一非聚集索引。
CREATE UNIQUE INDEX Dep_indON Departments(DepartName)②使用界面方式创建索引。
使用界面方式在Employees表的PhoneNumber列上创建索引。
启动SQL Server Management Studio,在对象资源管理器中展开数据库YGGL,展开表Employees,右击“索引,选择“新建索引”选项。
在新建索引的窗口中填写索引的名称和类型,单击“添加”按钮,在列表框中选择要创建的索引的列,选择完单击“确定”按钮即完成创建工作。
(2)重建索引。
重建表Employees中的所有索引。
USE YGGLGOALTER INDEX ALLON Employees REBUILD(3)删除索引。
实验六索引的创建和使用
建议学时: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,以课程名升序。
如果不能执行,请分析
说明原因。