SQL-Serve实验5-索引和视图-

合集下载

SQL Server 视图及索引的创建及使用

SQL Server 视图及索引的创建及使用

实验五SQL Server 视图及索引的创建及使用
实验目的:通过企业管理器和Transact_SQL语句对视图进行创建、修改和删除通过企业管理器:
创建步骤:
最后保存该视图即可。

修改步骤:
进入该界面重新修改该视图即可。

删除步骤:
通过Transact_SQL语句:
创建:create view 视图名
[with encryption]
as select_statement [with check option] 修改:利用 alter view 视图名删除:利用 drop view 视图名
1.通过Transact_SQL语句创建一个视图,计算各个班级的各门课程的平均分。

2. 通过Transact_SQL语句创建一个视图,显示‘高等数学’未过的学生的信息。

3.通过Transact_SQL语句创建一个视图,查询的数据为99521班学生的考试成绩。

3.如何通过企业管理器创建索引?步骤:
点击‘新建’按钮
点击‘确定’
点击‘关闭’
4.如何删除索引?
选中该索引点击‘删除’即可

利用 drop index 表名. 索引名完成删除。

实验5 视图、索引

实验5 视图、索引

实验5 视图、索引5.1实验目的(1)掌握SQL Server中的视图创建、查看、修改和删除的方法。

(2)掌握索引的创建和删除的方法。

5.2实验内容(1)创建、查看、修改和删除视图。

(2)创建、删除索引文件。

5.3实验步骤5.3.1视图操作5.3.1.1 创建视图◆使用SQL Server Management Studio(1)单击“学生选课”数据库前面的+号,右击“视图”,选择“新建视图”命令,弹出“添加表”对话框。

(2)在“添加表”对话框中,添加视图数据来源的表,这里添加三张表,分别是student、course和SC表。

添加表后,单击添加表对话框中的“关闭”按钮,出现创建视图界面。

(3)如果要在视图中显示某张表的某个字段,只需单击其字段前的复选框即可,同时在中间列中会显示该字段,在代码区中会看到具体实现的代码。

(4)如果要查看视图,单击常用工具栏中的“执行”按钮,就可以看到视图的数据显示。

(5)在创建视图中还可以为字段添加列名、进行排序、添加多个筛选条件。

(6)单击常用工具栏中的“保存”按钮,就可以弹出保存视图提示对话框,输入视图名字即可,如view_stu_grade。

◆使用Transact-SQL语句语法格式:create view view_name as select_statement例5.1:在三个表student、course、SC的基础上建立一个视图,取名为view_stu_grade。

create view view_stu_gradeas select student.sno,sname,cname,gradefrom student,sc,coursewhere student.sno=sc.sno and o=o5.3.1.2 修改视图◆使用SQL Server Management Studio视图创建好,就可以利用它进行查询信息了。

如果发现视图的结构不能很好地满足要求,还可以对它进行修改。

实验五数据库的索引和视图

实验五数据库的索引和视图
8.用Drop Index删除索引Indexbb.
研究与
探讨
评语
如图,表bb多了Bb4
5.用Create View对表Bb的Bb1和Bb4建立一个视图Viewbb,字段名为Viewbb1和Viewbb2.
如图,视图viewbb已建立
6.Drop View删除视图Viewbb.
如图,viewbb已删除
7.用Create Index对表Bb的Bb3字段建立一个升序索引,索引名Indexbb.
大学实验报告五2014年4月1日专业年级2012级信计专业1班学学号201221143025成成绩姓姓名课程名称数据库管理系统实验名称数据库的索引和视图实验目的和要求掌握查询分析器中用ddl语言进行对索引视图的增加删除和改动
大学实验报告(五)
2014年4月1日
专业年级
2012级
信计专业(1)班学号201源自21143025Varchar
20
字段1
Aa2
Int
字段2
Aa3
Dec
10,2
字段3
2.用Create Table建表bb,表结构如下所示:
字段名
类型
长度
含义
Bb1
Varchar
30
字段1
Bb2
Int
字段2
Bb3
Dec
6,2
字段3
如图,表aa bb已建立完成
3.用Drop Table删除表aa.
如图,表aa已删除
4.用Alter Table修改表bb,添加一个字段Bb4,类型Varchar,长度20.
成绩
姓名
课程名称
《数据库管理系统》
实验名称
数据库的索引和视图

实验报告五 视图与索引

实验报告五 视图与索引

实验五视图与索引一.实验目的1.学会使用企业管理器建立视图与索引2.掌握使用SQL语句建立视图与索引二.实验内容1.使用企业管理器建立视图索引2.使用SQL语句建立视图索引三.实验准备1.复习与本次实验内容相关知识2.对本次实验中要求自己完成的部分做好准备四.实验步骤1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图显示学号、姓名、课程、成绩o启动企业管理器、注册、连接o"新建视如下图所示o在新视图窗口内的关系图窗格内右击鼠标,弹出的菜单即为视图设计菜单,执行"添加表(B)...",如下图所示再在添加表对话框中选择SCORES表,再单击添加按钮。

依此操作,分别添加STUDENT、COURSES表,单击关闭按钮。

再在关系窗格内,拖动STUDENT表的"SID"至SCORES的STUDENT_ID,拖动COURSES表的"CNO"至SCORES的COURSE_ID,再分别选中STUDENT表的"SID","NAME"列(列前的复选框),COURSES表的"COURSE"列以及SCORES表的"SCORE"列,然后单击"!"按钮,显示视图结果,如下图所示:单击保存按钮,将视图保存为V_SCORES,单击确定.2.用查询分析器建立一个基于学生表、班级表的学生视图(V_STUDENTS),包括学号、姓名、班级、系,SQL语句如下:CREATE VIEW dbo.V_STUDENTSASSELECT dbo.U_STUDENTS.ID, dbo.U_,dbo.U_CLASSES.CLASS,dbo.U_CLASSES.DEPARTMENTFROM dbo.U_STUDENTS INNER JOINdbo.U_CLASSES ON dbo.U_STUDENTS.CLASS_ID = dbo.U_CLASSES.ID3.自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示课程编号.课程名、学分。

SQLServer索引和视图

SQLServer索引和视图

SQLServer索引和视图Ø 索引1、什么是索引索引就是数据表中数据和相应的存储位置的列表,利⽤索引可以提⾼在表或视图中的查找数据的速度。

2、索引分类数据库中索引主要分为两类:聚集索引和⾮聚集索引。

SQL Server 2005还提供了唯⼀索引、索引视图、全⽂索引、xml索引等等。

聚集索引和⾮聚集索引是数据库引擎中索引的基本类型,是理解其他类型索引的基础。

# 聚集索引聚集索引是值表中数据⾏的物理存储顺序和索引的存储顺序完全相同。

聚集索引根据索引顺序物理地重新排列了⽤户插⼊到表中的数据,因此,每个表只能创建⼀个聚集索引。

聚集索引经常创建在表中经常被搜索到的列或按顺序访问的列上。

在默认情况下,主键约束⾃动创建聚集索引。

# ⾮聚集索引⾮聚集索引不改变表中数据列的物理存储位置,数据与索引分开存储,通过索引指向的地址与表中的数据发⽣关系。

⾮聚集索引没有改变表中物理⾏的位置,索引可以在以下情况下使⽤⾮聚集索引:⼀、如果某个字段的数据唯⼀性⽐较⾼⼆、如果查询所得到的数据量⽐较少聚集索引和⾮聚集索引的区别:聚集索引⾮聚集索引每个表只允许创建⼀个聚集索引最多可以有249个⾮聚集索引物理的重排表中的数据以符合索引约束创建⼀个键值列表,键值指向数据在数据页中的位置⽤于经常查找数据的列⽤于从表中查找单个值的列# 其他类型索引除了以上索引,还有以下类型索引:a、唯⼀索引:如果希望索引键都不同,可以创建唯⼀索引。

聚集索引和⾮聚集索引都可以是唯⼀索引。

b、包含新列索引:索引列的最⼤数量是16个,索引列的字节总数的最⾼值是900。

如果当多个列的字节总数⼤于900,切⼜想在这些劣种都包含索引是,可以使⽤包含性列索引c、视图索引:提供视图查询效率,可以视图的索引物理化,也就是说将结果集永久存储在索引中,可以创建视图索引。

d、 XML索引:是与xml数据关联的索引形式,是XML⼆进制blob的已拆分持久表⽰形式e、全⽂索引:⼀种特殊类型的基于标记的功能性功能,⽤于帮助在字符串中搜索赋值的词3、创建索引语法create [unique] [clustered | noclustered]index index_nameon table_name (column_name ...)[with fillfactor=x]unique唯⼀索引clustered聚集索引noclustered⾮聚集索引fillfactor填充因⼦⼤⼩,范围在0-100直接,表⽰索引页填满的空间所占的百分⽐。

SQL Server 数据库 从入门到精通 05 索引

SQL Server 数据库 从入门到精通 05  索引

索引基础索引的创建和使用索引的删除除表以外,索引可能就是大型数据库系统中最重要的对象了。

索引是一种树型结构,如果使用正确,可以减少定位和查询数据所需的I/O操作。

另一种说法是,索引可以加快表中查找数据记录的速度。

·58·SQL技术与网络数据库开发详解5.1 索引基础索引是一种数据库对象。

在有大量记录的数据表中查询数据时,如果使用索引可以很快查到想要的数据。

索引还有另外一种用途,那就是强制数据的唯一性。

5.1.1 使用索引的原因对于大部分数据库用户来说索引是一个非常陌生的概念。

因为普通用户很少特意去使用索引,只有那些管理着海量数据的DBA才会去特意创建索引和使用索引。

使用索引有两个主要的原因: 提供唯一的码值。

提高查询性能。

当用户创建带有PRIMARY KEY或UNIQUE约束的数据表时,SQL Server或Oracle早已经在后台为该表自动创建了唯一索引,并以此强制数据的唯一性。

使用索引能够提高性能的原因其实也很好理解。

例如,要查询本书中关于Oracle的DECODE函数的内容,可以使用两种方法。

一种是从第1页开始一页一页地向后找;另一种是在目录中先找到DECODE函数所在的页数,然后,直接翻到该页上。

可想而知,在书比较厚的情况下,采用第二种方法很快就能找到需要的内容。

这里的索引就像本书的目录,因此使用索引会提高查询性能。

当然,假设本书只有3页,则使用第一种方法会更实惠。

这就表明数据表中的记录越多,使用索引就会得到越大的效益。

反之,使用索引就没有什么价值了。

5.1.2 索引的种类SQL Server和Oracle等大型数据库系统,按存储结构的不同将索引分为两类,即聚簇索引和非聚簇索引。

1.聚簇索引一个聚簇索引就是一个在物理上与表融合在一起的视图。

表和视图共享相同的存储区域。

聚簇索引在物理上以索引顺序重新整理了数据的行。

这种体系结构中的一个表只允许有一个聚簇索引。

在SQL Server中,删除和重建一个聚簇索引对于改造一个表来说是一个常用的技术,这是一种保证数据页在磁盘上邻近的方法,同时,也是重建表中一些空闲空间的好方法。

SQLServe实验5_索引和视图_

SQLServe实验5_索引和视图_

实验5 索引和视图1.实验目的(1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引的方法。

(2)掌握使用SQL Server管理平台查看索引的方法。

(3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引的方法。

(4)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。

(5)了解索引和视图更名的系统存储过程sp_rename的用法。

(6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。

(7)了解删除视图的Transact-SQL语句DROP VIEW的用法。

2.实验内容及步骤(1)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。

使用SQL Server管理平台:a. b.c.d.e.使用Transact-SQL语句:(2)使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。

(3)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。

使用SQL Server管理平台:使用SQL语句:use studentsdbgocreate index grade_indexon grade (分数)(4)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。

create index grade_id_c_indon grade (学号,课程编号)(5)分别使用SQL Server管理平台和系统存储过程sp_helpindex查看grade表和student_info表上的索引信息。

数据库实验五:视图的应用

数据库实验五:视图的应用

数据库实验五:视图的应用一、实验目的与要求:1.实验目的(1)理解视图的概念;(2)掌握视图的使用方法。

(3)理解视图和基本表的异同之处。

2.实验要求(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。

2)基于单个表按选择操作定义视图。

3)基于单个表按选择和投影操作定义视图。

4)基于多个表根据连接操作定义视图。

5)基于多个表根据嵌套操作定义视图。

6)定义含有虚字段的视图。

(2)分别在定义的视图设计一些查询(包括基于视图和基本表的连接或嵌套查询)。

(3)在定义的视图上进行插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。

(4)在实验报告中要给出具体的视图定义要求和操作要求,并针对各种情况做出具体的分析和讨论。

二、实验内容1、实验原理(1)视图是用SQL SELECT查询定义的,创建视图命令格式如下:CREATE VIEW <视图名> AS <SELECT-查询块>(2)删除视图的命令格式如下:DROP VIEW <视图名>2、实验步骤与结果(1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。

(2)输入自己编好的程序。

(3)检查已输入的程序正确与否。

(4)运行程序,并分析运行结果是否合理和正确。

在运行时要注意当输入不同的数据时所得到的结果是否正确。

(5)输出程序清单和运行结果。

(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。

create view v asselect教师编号,姓名from教师create view v_order asselect*from教师where职称='教授'3)基于单个表按选择和投影操作定义视图。

create view v_cuss asselect教师编号,姓名,职称from教师where职称='教授'4)基于多个表根据连接操作定义视图。

数据库实验报告 索引和视图

数据库实验报告 索引和视图

西北师范大学计算机科学与工程学院学生实验报告2、在student表的studentno和classno列上创建唯一索引UQ-stu,若该索引已存在,则删除后重建。

然后输出student表中的记录,查看输出结果的顺序。

SQL代码:USE teachingGOIF EXISTS(SELECT name FROM sysindexes WHERE name='UQ_stu')DROP INDEX student.UQ_stuGOCREATE NONCLUSTERED INDEX UQ_stu ON student(studentno,classno)GOSELECT*FROM student实验结果:3、修改UQ-stu的索引属性,当执行多行插入操作时出现重复键值,则忽略该记录,且设置填充因子为80%SQL代码:USEteachingGOALTER INDEX UQ_stu ON student REBUILDWITH(PAD_INDEX=ON,FILEFACTOR=80,IGNORE-DUP_KEY=ON)GO实验结果:4、创建一个视图v-teacher,查询“计算机学院”所有教师的信息SQL代码:USE teachingGOCREATE VIEW v_teacherASSELECT*FROM teacherWHERE department='计算机学院'GOSELECT*FROM v_teacher实验结果:5、创建一个视图v-avgstu,查询每个学生的学号、姓名及平均分,并且按照平均分降序排序SQL代码:USE teachingGOCREATE VIEW v_avgstuASSELECT TOP(100)PERCENT student.studentno,studnt.sname,AVG(score.final)AS 'average'FROM student,scoreWHERE student.studentno=score.studentnoAND score.final IS NOT NULLGROUP BY student.studentno,student.snameORDER BY AVG(score.final)DESCGOSELECT*FROM v_avgstu实验结果:6、修改v-avgstu的视图定义,添加WITH CHECK OPTION选项SQL代码:USE teachingGOALTER VIEW v_avgstuASSELECT*FROM teacherWHERE department='计算机学院'WITH CHECK OPTIONGO实验结果:7、通过视图v-avgstu向基表teacher中分别插入数据(‘05039’,‘张馨月’,‘计算机应用’,‘讲师’,‘计算机学院’)和(‘06018’,‘李诚’,‘机械制造’,‘副教授’,‘机械学院’),并查看插入数据的情况SQL代码:USE teachingGOINSERT INTO v_teacherVALUES('05039','张馨月','计算机应用','讲师','计算机学院')INSERT INTO v_teacherVALUES('06018','李诚','机械制造','副教授','机械学院')SELECT*FROM v_teacherSELECT*FROM teacher实验结果:8、通过视图v-teacher将基表teacher中教师编号为05039的教师职称修改为“副教授”SQL代码:USE teachingGOUPDATE v_teacherSET prof='副教授'WHERE teacherno='05039'GOSELECT*FROM teacher实验结果:实验总结:通过本次实验掌握了索引、统计信息和视图等数据库对象的基本概念和基本操作。

SQLserver数据库课件第5章视图及应用

SQLserver数据库课件第5章视图及应用
件变为“xh NOT IN(Select Distinct xh From sctab)”,并给视图加密。
Use Student Go Alter View st_view2 WITH ENCRYPTION AS Select xh , xm , rxsj , ssx From stab
Where xh NOT IN(Select Distinct xh From sctab ) Order By rxsj ASC Go
5.4.1 使用SQL Server Management Studio操作视图
3.删除或重命名视图或查看视图属性 (1)启动SQL Server Management Studio,并连接到SQL Server 2008
中的数据库,在“对象资源管理器”窗口中展开“数据库”节点,再 展开操作的视图所属的数据库名(比如Student),展开其“视图” 节点,右击要删除或重命名或查看属性的视图名,系统出现弹出菜单, 如上图5-6所示。 (2)执行弹出菜单中的【删除】命令,可删除视图。 (3)执行弹出菜单中的【重命名】命令,可重命名视图。 (4)执行弹出菜单中的【属性】命令,可查看视图的属性。 4.查看视图的内容 因为视图本身也是一个表,因此查看其内容同表操作一样,执行上图 5-6弹出菜单中的【编辑前200行】命令即可查看视图内容。
[WITH ENCRYPTION] AS
select_statement [ WITH CHECK OPTION ]
其中: • view_name指定视图的名称。 • column指定视图中的列名。若没有指定,其列名由SELECT命令指派,
即为SELECT命令中的列名。注意:视图中的列名个数得与SELECT 命令中的列项数相同。 • WITH ENCRYPTION表示 SQL Server 加密包含 CREATE VIEW 语 句文本在内的系统表列。 • select_statement用于创建视图的SELECT语句,利用SELECT命令 可以从表中或者视图中选择列构成新视图的列。 • WITH CHECK OPTION用于强制视图上执行的所有数据修改语句都 必须符合由 select_statement 设置的准则。

SQL Server 2005实用教程第5章 索引

SQL Server 2005实用教程第5章  索引
在图书中,目录是内容和相应页码的列表清单。 在数据库中,索引是表中数据和相应存储位置的列表。
索引
在数据库的管理中,为了迅速地从庞大的数据库中找到所 需要的数据,提供了类似书籍目录作用的索引技术。通过 在数据库中对表建立索引,可以大大加快数据的检索速度。
在数据查询时,如果表的数据量很大且没有建立索引, SQL Server将从第一条记录开始,逐行扫描整个表,直 到找到符合条件的数据行。这样,系统在查询上的开销将 很大,且效率会很低。如果建立索引,SQL Server将根 据索引的有序排列,通过高效的有序查找算法找到索引项, 然后通过索引项直接定位数据,从而加快查找速度。
索引的分类
索引类别
物理顺序
表中各行的物理 顺序与索引中行 的物理顺序是相 同的 不相同
数据排列
创建
个数
聚集索引
数据完全重 创建主键时, 每个表一个 新排列 自动创建 创建前要创 每个表249 建一个聚集 个 索引
非聚集索引
数据不重新 排列
5.1 建立索引
使用SSMS图形工具 使用create index命令创建索引 create [ unique ] [ clustered | nonclustered ] index 索引名 on { 表名 | 视图名 } (列名[ asc | desc ] [ ,…n ] ) [ with [ pad_index ] [ [,]fillfactor=填充因子值 ] [ [,]sort_in_tempdb ] [ [,]statistics_norecompute ] [ [,]drop_existing ] ] [ on 文件组名]
1.索引的概念 索引是与表或视图关联的磁盘上结构,可以加快从表或视 图中检索行的速度。 它由某个表或视图中的一列或者若干列的值,以及这些值 的记录在表中存储位置的物理地址所组成。 索引包含由表或视图中的一列或多列生成的键。这些键存 储在一个结构中,使 SQL Server 可以快速有效地查找与 键值关联的行。

实验5数据库的索引和视图

实验5数据库的索引和视图

韶关学院
学生实验报告册
实验课程名称:数据库技术与应用
实验项目名称:数据库的索引和视图
实验类型(打√):(基础☑
设计
院系:教育学院专业班级:11教育技术学姓名:学号:
指导老师:林育曼
韶关学院教务处编制
一、实验预习报告内容
二、实验原始(数据)记录实验时间:2013年11月5日(星期二第五六节)
三、实验报告内容
6.使用企业管理器的“向导”工具对grade表创建一个聚集索引和唯一索引。

根据实验指导老师要求另附相同规格的纸张并粘贴在相应的“实验报告册”中。

2、实验报告册属教学运行材料,院系(中心)应按有关规定归档保管。

《SQL server 2016数据库应用教程》实训指导书05索引

《SQL server 2016数据库应用教程》实训指导书05索引

实验五索引一、实验目的1.掌握索引的使用方法;2.掌握在对象资源管理器中创建和管理索引;3.掌握T-SQL语句创建和管理索引;二、实验准备1.将第五章的XSGL数据库恢复到DBMS,数据库中包含有以下表:1)学生表 Student ( Sno , Sname , Sex , Sbirthday , Sdept )2)课程表 Course ( Cno , Cname , Ccredit )3)学生选课表 Score ( Sno , Cno , Grade )2.注意恢复后检查表中的约束和数据。

三、实验要求1.了解索引的作用、分类及创建方法;2.在对象资源管理器中创建、修改、删除和使用索引。

3.利用T-SQL语句创建、修改、删除和使用索引。

4.完成实验报告。

四、实验内容1.启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法创建和管理下列索引:1)对数据表Student中字段Sname建立非聚集索引idx_name;2)针对Student表的Sno和Sname列创建复合索引idx_no_name;3)修改索引idx_name,使其成为唯一索引(考虑是否能够修改成功,如不能则需要将原数据表数据进行怎样修改后可以建立);4)删除数据表Student的唯一索引idx_name;2. 利用T-SQL语句创建和管理以下索引:1)对Course表的Cname列创建非聚集索引idx_cname;2)对Score表的Sno和Cno列创建复合索引idx_sno_cno;3)将idx_cname进行修改,使其成为唯一索引;(使用T-SQL语句进行修改索引的操作实际上是先将索引进行删除,然后再重新定义索引。

最后使用“ALTER INDEX索引名ON数据表REBUILD ”语句重置索引完成修改。

)4)利用系统存储过程sp_helpidex查看索引idx_cname信息;5)删除索引idx_cname。

网络数据库SQL Server 2012教程第5章 索引及视图

网络数据库SQL Server 2012教程第5章 索引及视图

关系图的创建及管理
视图的概念(view)
Page 2
目录
视图的基本操作
本章小结
实训项目四
课后习题
Page 3
5.1 索引的概念
5.1.1 索引的概述 索引是一种可以加快检索的数据库结构,它包含从表 或视图的一列或多列生成的键,以及映射到指定数据存储位 置的指针。
Page 4
5.1 索引的概念
5.1.2 索引的分类 聚集索引:
基于数据行的键值,在表内排序和存储这些数据行。 每个表只能有一个聚集索引,因为数据行只能按一个顺序 存储。在聚集索引中,表中各行的物理顺序与索引键值的 索引顺序相同。
非聚集索引: 根据键值的大小对行进行逻辑排序,表中的数据并不按照 非聚集索引列的顺序存储,但非聚集索引的索引行中保存 了非聚集键值和行定位器,可以快捷地根据非聚集键的值 来定位记录的存储位置。
Page 9
5.2 索引的创建及管理
5.2.1 使用SSMS创建索引 创建以学生姓名进行查询的索引,在数据库“StuInfo”中 为表“Student”创建一个非聚集,唯一索引“StuIndex”, 索引键为“姓名”,升序排列。 1.打开[对象资源管理],左键单击展开“[数据库][StuInfo]-[dbo.Student]-[索引]”节点,右键弹出菜单“[ 新建索引]-[非聚集索引]”命令。 2.在弹出的[新建索引]窗口输入索引名称“StuIndex”,选 中“唯一”。
Page 7
5.1 索引的概念
5.1.3 索引的优缺点及创建原则 创建原则:
1.索引数量要合理,一个表中如果有大量的索引,不仅占 用大量的磁盘空间,同时也会影响INSERT、DELETE、 UPDATE等语句的性能。 2.对经常更新的表,索引尽可能少。而对经常用于查询的 字段应该创建索引,但要避免添加不必要的字段。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL-Serve实验5-索引和视图-
实验5 索引和视图
1.实验目的
(1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引的方法。

(2)掌握使用SQL Server管理平台查看索引的方法。

(3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引的方法。

(4)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。

(5)了解索引和视图更名的系统存储过程sp_rename的用法。

(6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。

(7)了解删除视图的Transact-SQL语句DROP VIEW的用法。

2.实验内容及步骤
(1)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。

使用SQL Server管理平台:
a. b.
c.
d.
e.
使用Transact-SQL语句:
(2)使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。

(3)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。

使用SQL Server管理平台:
使用SQL语句:
use studentsdb
go
create index grade_index
on grade (分数)
(4)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。

create index grade_id_c_ind
on grade (学号,课程编号)
(5)分别使用SQL Server管理平台和系统存储过程
sp_helpindex查看grade表和student_info表上的索引信息。

使用SQL Server管理平台:
右击表grade/表student_info==》修改==》索引/键
使用SQL语句:
use studentsdb
go
sp_helpindex grade
use studentsdb
go
sp_helpindex student_info
(6)使用SQL Server管理平台对grade表创建一个聚集索引和唯一索引。

对grade表创建一个聚集索引:
对grade表创建一个唯一索引:
(7)使用系统存储过程sp_rename将索引grade_index更名为grade_ind。

use studentsdb
go
sp_rename'grade.grade_index','grade_ind','index'
(8)分别使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引grade_ind。

再次使用系统存储过程sp_helpindex查看grade表上的索引信息。

使用SQL Server管理平台:
表grade==》索引grade_ind==》右击删除
使用SQL语句:
use studentsdb
go
drop index grade.grade_ind
(9)在studentsdb数据库中,以student_info表为基础,使用SQL Server管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。

(10)在studentsdb数据库中,使用Transact-SQL语句CREATE VIEW建立一个名为v_stu_c的视图,显示学生的
学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。

(11)基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。

使用视图v_stu_g查询学号为0001的学生的所有课程与成绩,如图1-9所示。

《网络数据库应用》实验指导书—SQL Server 2005 20
图1-9 学号为0001的学生的视图信息
使用SQL Server管理平台:
(12)分别使用SQL Server管理平台和Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。

使用SQL Server管理平台:
使用SQL Server语句:
(13)使用Transact-SQL语句ALTER VIEW修改视图v_stu_i,使其具有列名学号、姓名、性别。

(14)使用系统存储过程sp_rename将视图v_stu_i更名为
v_stu_info。

(15)利用视图v_stu_i为student_info表添加一行数据:学号为0015、姓名为陈婷、性别为女。

(16)利用视图v_stu_i删除学号为0015的学生记录。

(17)利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。

(18)使用Transact-SQL语句DROP VIEW删除视图
v_stu_c和v_stu_g。

3.实验思考
(1)是否可以通过视图v_stu_g修改grade表中学号列数据?
不可以。

因为视图包含了三个个基础表,学生表,课程表,成绩表,且要更改的学号列为成绩表和学生表的公共列,所以不能通过视图更改对应的基础表的列数据。

(2)比较视图和基表操作表中数据的异同。

(1)相同点:视图作为一个查询结果与基表具有相似的结构,对视图的操作与对表的操作一样,通过视图可以完成某些和基础表相同的一些数据操作,如数据的检索、添加、修改和删除(2)不同点:视图是一种数据库对象,是从一个或多个表或视图中导出的虚拟表。

视图所对应的数据并不正在地存储在视图中,而是存在其所引用的基表中,视图的结构和数据是对基表进行查询的结果
(3)可更新视图必须满足哪些条件?
(1)任何修改(包括 UPDATE、INSERT 和 DELETE 语句)都只能引用一个基本表的列。

(2)视图中被修改的列必须直接引用表列中的基础数据。

不能通过任何其他方式对这些列进行派生,如通过聚合函数、计算(如表达式计算)、集合运算等。

(3)被修改的列不受 GROUP BY、HAVING、DISTINCT 或 TOP 子句的影响。

(4)什么是索引?SQL Server 2005中有两种形式的索引:聚集索引和非聚集索引,简单叙述它们的区别?
索引是对数据库表中一列或多列的值进行排序的一种结构。

一个表中只能有一个聚集索引,但是可以有249个非聚集索引。

聚集索引查找数据比非聚集索引要快很多,但是会比非聚集索引所占空间要大很多。

(5)能否在视图上创建索引?
不可以的!
索引只能建立在一个表的列上
注意:请同学们自行保存相关代码,以备下次实验使用,实验完成后,要及时撰写实验报告。

相关文档
最新文档