SQL Serve实验5_索引和视图_
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 表名. 索引名完成删除。
SQLServer中在视图上使用索引(转载)
SQLServer中在视图上使用索引(转载)在SQL Server中,视图是一个保存的T-SQL查询。
视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全。
但是,它并不占用数据库的任何空间。
实际上,在你查询它之前,视图并不做任何事情。
索引视图在SQL Server 2000和2005中,你能够给视图增加索引。
但是,如果视图只是一个保存在数据库中的查询定义,在运行前没有自己的数据,你如何给那个定义建立一个索引呢?嗯,这比较麻烦。
索引视图是一个已被物化或保存在数据库中的视图。
当基本表更新时,给视图建立的索引由数据库引擎保存和更新。
当你的结果集返回许多行并且需要求总数时,索引视图十分有用。
这是因为数据库引擎必须在基表数据更新时维持视图索引,这可能会降低事务的性能。
要给一个视图建立一个索引,视图定义必须遵守某组条件和会话设置,同时要求把基表和视图定义联系起来。
如果你确定你的视图满足这些标准,你给视图建立的第一个索引必须是一个唯一的聚集索引,之后你可以给视图建立多个非聚集索引。
建立的第一个视图必须在一组栏上,并且被聚集,以便索引被物化。
列表A说明如何建立一个索引视图。
其中的脚本将建立SalesHistory表,并给它加载数据。
下面的代码将建立一个视图来概括表中的数据:CREATE VIEW vw_salesbyproductASSELECTProduct,COUNT_BIG(*) as ProductCount,SuM(SalePrice) as TotalSalesFROMdbo.SalesHistoryGROUP BY Product由于它只是一个T-SQL查询定义,建立这个视图不用多少时间。
建立好视图后,你就可以像对一个表一样对它进行查询。
SELECT Product, T otalSales, ProductCountFROM vw_SalesByProductWHERE product ='Computer'如果你在SQL Server Management Studio或Query Analyzer 中设置选项来查看查询的“执行计划”(Execution Plan),你会注意到上面的查询使用一个表扫描来找出Computer产品的总计结果。
实验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视图创建好,就可以利用它进行查询信息了。
如果发现视图的结构不能很好地满足要求,还可以对它进行修改。
实验五数据库的索引和视图
研究与
探讨
评语
如图,表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索引和视图Ø 索引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 索引
索引基础索引的创建和使用索引的删除除表以外,索引可能就是大型数据库系统中最重要的对象了。
索引是一种树型结构,如果使用正确,可以减少定位和查询数据所需的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中,删除和重建一个聚簇索引对于改造一个表来说是一个常用的技术,这是一种保证数据页在磁盘上邻近的方法,同时,也是重建表中一些空闲空间的好方法。
实验5 索引和视图
实验5 索引和视图一、实验目的1.学会使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引。
2.学会使用SQL Server管理平台查看索引。
3.学会使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引。
4.掌握使用SQL Server管理平台、向导等创建、管理和删除全文索引,并使用全文索引查询信息的方法。
5. 掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。
6.掌握系统存储过程sp_rename的用法。
7.掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。
二、实验准备1.了解聚集索引和非聚集索引的概念。
2.了解使用Transact-SQL语句CREATE INDEX创建索引的语法。
3.了解使用SQL Server管理平台创建索引的步骤。
4.了解Transact-SQL语句DROP INDEX删除索引的用法。
5.了解创建视图的Transact-SQL语句CREATE VIEW的语法格式及用法。
6.了解修改视图的Transact-SQL语句ALTER VIEW的语法格式。
7.了解视图更名的系统存储过程sp_rename的用法。
8.了解删除视图的Transact-SQL语句DROP VIEW的用法。
三、实验内容1.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的《学生表》和《课程表》创建主键索引。
2.使用SQL Server管理平台按《课程表》的课程编号列创建唯一性索引。
3.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的《成绩表》的“分数”字段创建一个非聚集索引,命名为《成绩_index》。
4.为studentsdb数据库的《成绩表》的“学号”和“课程编号”字段创建一个复合唯索引,命名为《成绩表_id_c_ind》。
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表上的索引信息。
数据库实验报告 索引和视图
西北师范大学计算机科学与工程学院学生实验报告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章视图及应用
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 设置的准则。
数据库实验报告:视图 和索引
一、实验步骤(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。
(二)练习创建和管理视图1、使用管理控制台创建一个名为“计算机系借阅信息_VIEW”的视图,要求显示计算机系读者2011-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段。
打开sql server管理控制台窗口,打开新建视图对话框。
在添加表中添加tb_borrow和tb_reader表,在选中输出复选框中选中:读者编号,图书编号,借阅日期。
use db_library goselect * from 读者借阅信息_VIEWwhere 所在系='计算机'and 借阅日期>'2011_1_1'2、使用T-SQL语句创建一个名为“读者借阅信息_VIEW”的视图,要求显示所有的读者借阅信息,包括“读者编号”、“姓名”、“系部”、“图书编号”、“图书名称”和“借阅日期”等字段。
use db_library gocreate view 读者借阅信息_VIEW asselect tb_readder.读者编号,tb_reader.姓名,tb_reader所在系,tb_book.图书编号,tb_book.书名,tb_borrow.借阅日期 from tb_reader,tb_borrow,tb_bookwhere tb_reader.读者编号=tb_borrow.读者编号and tb_book.图书编号=tb_borrow.图书编号Select * from读者借阅信息_VIEW3、使用管理控制台查看“读者借阅信息_VIEW”视图的定义信息和依赖的对象。
打开管理控制台,在数据库“db_Library”下的“视图”对象;在左边窗口右击“读者借阅息_VIEW”该视图,在在窗口中选中“查看依赖关系”选项。
4、使用系统存储过程查看“计算机系续借阅信息_VIEW”视图的定义信息和依赖的对象。
新SQL——SERVER实验练习答案
SQL-Server实验答案上海师范大学计算机系目录第一部分企业管理器的使用 (3)试验一注册服务器.................................................................................. 错误!未定义书签。
试验二创建数据库.................................................................................. 错误!未定义书签。
试验三创建表.......................................................................................... 错误!未定义书签。
实验四数据输入...................................................................................... 错误!未定义书签。
实验五登录到数据库服务器.................................................................. 错误!未定义书签。
第二部分SQL语言 (3)第二部分SQL语言 (3)试验一数据库创建 (3)试验二创建表 (3)试验三创建数据完整性 (5)试验四数据完整性试验 (6)试验五索引 (10)试验六更新数据 (11)试验七 Sql 查询语句 (12)试验八视图 (15)试验九安全性控制实验 (16)试验十存储过程 (17)试验十二触发器 (21)试验十二恢复技术 (25)试验十三事务 (26)试验十四锁 (27)第一部分企业管理器的使用第二部分SQL语言试验一数据库创建目的:1掌握利用SQL语言进行数据库的创建、维护。
2 sp_helpdb 命令要求:1 创建数据库 2 修改数据库 3 删除数据库一建立school 数据库1 使用查询分析器创建数据库 schoolCreate DataBase school2 使用 SP_helpdb 查询数据库 School 的信息3 使用SQL-Server 的企业管理器查看数据库 school 的信息。
网络数据库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.对经常更新的表,索引尽可能少。而对经常用于查询的 字段应该创建索引,但要避免添加不必要的字段。
实验5数据库的索引和视图
韶关学院
学生实验报告册
实验课程名称:数据库技术与应用
实验项目名称:数据库的索引和视图
实验类型(打√):(基础☑
设计
院系:教育学院专业班级:11教育技术学姓名:学号:
指导老师:林育曼
韶关学院教务处编制
一、实验预习报告内容
二、实验原始(数据)记录实验时间:2013年11月5日(星期二第五六节)
三、实验报告内容
6.使用企业管理器的“向导”工具对grade表创建一个聚集索引和唯一索引。
根据实验指导老师要求另附相同规格的纸张并粘贴在相应的“实验报告册”中。
2、实验报告册属教学运行材料,院系(中心)应按有关规定归档保管。
数据库实验报告.5
SQL数据实验报告
实验5 SQL server 索引和视图
班级 2010级文秘姓名学号
实验内容:
1、在xs表中,以学号列创建非聚集唯一索引,索引名称为IX_xh
步骤:1)、在对象资源管理器中找到xsgl数据库/在表下找到xs表/找到索引/新建索引
2)、在索引名称后输入IX_xh/索引类型选择非聚集/选择唯一/添加/选择学号/确定
2、在cj表中,以学号和课程编号两列创建聚集索引,索引名称为
IX_XHKC
步骤:对象资源管理器下/在表下找到cj表/找到索引/新建索/在索引名称输入IX_XHKC/选择聚集/添加/选择课程编号和学号/确定
3、用命令查看表中所有的索引情况
步骤:新建查询/输入命令 exec sp_helpindex xs/执行
4、基于xs,kc,cj三个表,建立一个名为V_STU_Z的视图,该视图中具有所有学生的学号、姓名、课程名称、成绩
步骤:1)、在对象资源管理器中表下/右键视图/新建视图/添加xs,kc,cj三个表/把cj中的课程编号和kc中的课程编号连接起来/把cj中的学号和xs中的学号连接起来/把学号、成绩、课程编号、课程名称、姓名都打勾/执行
2)、在对象管理器中视图下找到新建的V-STU_Z视图/右键V-STU_Z/打开视图
5、修改学号为0002,课程编号为0001,成绩为84
步骤:新建查询/输入命令 alter view V-STU_Z as select 学号=0002,课程编号=0001,成绩=84/执行
6、总结:1)要熟悉基本的一些操作
2)掌握与索引和视图有关的一些命令 3)了解视图和索引的作用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验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语句:
使其具有列名学号、姓名、性别。
(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)能否在视图上创建索引?
不可以的!
索引只能建立在一个表的列上
注意:请同学们自行保存相关代码,以备下次实验使用,实验完成后,要及时撰写实验报告。