南昌大学计算机数据库实验四_索引和视图
- 格式:docx
- 大小:17.00 KB
- 文档页数:4
7-1编程在teaching 数据库中的student 表的sname 列上创建唯一索引IDX_sname。
USE teachingGOCREATE UNIQUE INDEX IDX_sname ON student(sname)7-2 编程在teaching数据库中的student表的studentno和classno列上创建组合索引IDX_sc。
USE teachingIF EXISTS(SELECT name FROM sysindexes WHERE name='IDX_sc')DROP INDEX student.scGOCREATE INDEX IDX_sc ON student(studentno,classno)7-3 重新组织teaching 数据库中student 表上的IDX_sc 索引。
USE teachingALTER INDEX IDX_sc ON dbo.student REORGANIZE7-4 重新生成teaching 数据库中student 表上的IDX_sname 索引,设置填充索引,将填充因子设置为80%,设置将中间排序结果存储在tempdb中。
USE teachingALTER INDEX IDX_sname ON dbo.studentREBUILD WITH(PAD_INDEX =ON,FILLFACTOR= 80,SORT_IN_TEMPDB =ON)7-5 重新生成teaching 数据库中student 表上的C_studentno 索引,将其修改为聚集唯一索引,并指定该索引的叶级页的填充度为70%。
USE teachingGOCREATE UNIQUE CLUSTERED INDEX C_studentnoON dbo.student(studentno)WITH(PAD_INDEX =ON,FILLFACTOR= 70,DROP_EXISTING =ON)7-6 删除teaching 数据库中student 表上的聚集索引C_studentno 和非聚集索引UC_classno。
数据库的视图和索引的概念区别总结
数据库的视图和索引
视图
什么是视图:
视图是从⼀个或多个表中导出来的表,是⼀种不是⼀种真正存在的概念。
视图就像⼀个窗⼝,通过这个窗⼝可以看到系统专门提供的数据。
这样,⽤户可以不⽤看到整个数据库中的数据,⽽之关⼼对⾃⼰有⽤的数据。
数据库中只存放了视图的定义,⽽没有存放视图中的数据,这些数据存放在原来的表中。
使⽤视图查询数据时,数据库系统会从原来的表中取出对应的数据。
视图中的数据依赖于原来表中的数据,⼀旦表中数据发⽣改变,显⽰在视图中的数据也会发⽣改变。
⽬的
安全、⾼效、定制数据
索引
可以理解为是⼀本书的⽬录,它记录了数据在数据库中存放的位置,就像⼀本书的⽬录,记录了,某⼀页在这本书的那个位置。
相同地,索引是⼀个单独的、存储在磁盘上的数据库结构,它们包含着对数据库表⾥所有记录的引⽤指针。
⽬的
数据库索引是为了使查询数据效率快。
索引的分类和使⽤
按物理存储⾓度分:
聚集索引
表记录的排列顺序和索引的排列顺序⼀致,所以查询效率快,只要找到第⼀个索引值记录,其余连续性的记录在物理上⼀样连续存放.
聚集索引的缺点就是修改慢,因为为了使表记录和索引的排列顺序⼀致,在插⼊记录的时候,会对数据页重新排序
⾮聚集索引
表记录和索引的排列顺序不⼀定⼀致,两种索引都采⽤B+树的结构,⾮聚集索引的叶⼦层并不和实际数据页相重叠,⽽采⽤叶⼦层包含⼀个指向表记录的指针.⾮聚集索引层次多,不会造成数据重排
按逻辑⾓度分
主键索引
唯⼀索引
联合索引
普通索引。
实验四视图和索引的使用
实验四视图和索引的使用
一、实验目的
1.掌握视图的创建、修改和删除
2.掌握通过视图修改表中的记录
3.掌握索引的创建、修改和删除
二、实验内容
根据实验二创建的表进行如下的操作:
1、对表S,创建一个专业为“计算机应用”的视图,视图名为STUDENT_SDEPT1。
2、对表S,创建一个专业为“计算机软件”的视图,视图名为STUDENT_SDEPT2。
3、建立一个视图名S_C_SC,视图里包括每个学生每一门课的成绩(学号、
姓名、课程名和成绩)。
4、删除视图STUDENT_SDEPT2。
5、通过视图STUDENT_SDEPT1,往S表中插入一条记录,内容为(“9901”,
“王套”,22“男”,“计算机应用”)。
6、对表S,按SNAME字段创建一个惟一非聚集索引,索引名为INDEX_SNO。
7、对表C,按CNAME创建一个惟一聚集索引,索引名COURSE_INDEXCNO。
8、对表S,按SEX和SNAME字段创建一个复合索引,索引名为INDEX_SEX_SNAME。
9、删除索引INDEX_SEX_SNAME、COURSE_INDEXCNO。
三、思考题:
1、视图与表的区别是什么?
2、视图的作用是什么?
3、索引的作用?
4、惟一索引的含义是什么?。
实验训练4:视图和索引的构建与使用1. 简介在数据库中,视图是一种虚拟表,它是基于查询结果动态生成的。
视图可以看作是一个预定义的查询,通过视图可以方便地访问和组织数据。
本文将介绍在数据库中如何创建和使用视图,以及如何构建索引来提高查询性能。
2. 创建视图在数据库中,可以使用CREATE VIEW语句来创建一个视图。
视图的创建需要满足以下条件:•视图的名字必须唯一。
•视图的定义必须是一个有效的SELECT语句。
下面是一个创建视图的示例:CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition;其中,view_name是视图的名称,column1和column2是视图所包含的列名,table_name是数据来自的表名,condition是过滤条件。
创建视图之后,可以使用SELECT语句来查询视图的内容,就像查询表一样。
3. 修改视图在数据库中,可以使用ALTER VIEW语句来修改一个已经存在的视图。
修改视图可以包括添加、删除和修改列。
下面是一个修改视图的示例:ALTER VIEW view_name ADD column_name datatype;其中,view_name是要修改的视图的名称,column_name 是要添加的列名,datatype是列的数据类型。
4. 删除视图在数据库中,可以使用DROP VIEW语句来删除一个已经存在的视图。
下面是一个删除视图的示例:DROP VIEW view_name;其中,view_name是要删除的视图的名称。
5. 索引的构建与使用索引是一种数据结构,可以提高数据库的查询性能。
数据库中的索引可以分为以下几种类型:•B-Tree索引:适用于等值查询和范围查询。
•哈希索引:适用于等值查询。
•全文索引:适用于关键词搜索。
在数据库中,可以使用CREATE INDEX语句来创建索引。
《数据库原理》实验报告题目:实验四视图与索引学号班级日期2016.10.20一、实验内容、步骤以及结果1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。
(5分)2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)(10分,每种方法5分)。
--第一种方法CREATE VIEW V_SPJ ASSELECT sno,pno,qty FROM SPJWHERE jno=(SELECT jno FROM JWHERE jname ='');GO--删除建好的视图DROP VIEW V_SPJ;GO--第二种方法CREATE VIEW V_SPJ ASSELECT sno,pno,qtyFROM SPJ,JWHERE J.jno=SPJ.jno AND J.jname='';3.用SQL语句完成第五版教材第三章第11题中的视图查询(10分,每小题5分)。
11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
针对该视图VSP完成下列查询:(1)找出三建工程项目使用的各种零件代码及其数量。
(2)找出供应商S1的供应情况。
4.用SQL语句完成视图的数据更新。
(15分,每题5分)(1)给视图V_SPJ中增加一条数据。
提示:-SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO 为NULL,所以视图中没有该条数据。
-SPJ表中JNO不能为空时,可以使用instead of触发器实现。
(2)修改视图V_SPJ中的任意一条数据的供应数量。
(3)删除视图V_SPJ中的任意一条数据(注意所创建视图可以视图消解时,才能正常删除,否则会删除失败;也可以考虑用instead of触发器实现)。
一、实验名称
视图与索引
二实验目的
1.学会使用企业管理器建立视图与索引
2.掌握使用SQL语句建立视图与索引
三实验内容
1.使用企业管理器建立视图索引
2.使用SQL语句建立视图索引
四实验准备
1.复习与本次实验内容相关知识
2.对本次实验中要求自己完成的部分做好准备
五实验步骤
1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图
显示学号、姓名、课程、成绩
用查询分析器建立一个基于学生表、班级表的学生视图
自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示
课程编号、课程名、学分。
查看索引
2.为学生表按班级建立一个非簇集索引FK_U_STUDENTS,操作过程如下
实验心得
总的来说,这次实验因为在上面的几次试验中取得的一些经验,在做实验的时候,也不觉得有多么大的困难了。
相反,感觉有点轻车熟路。
这次实验的目的是学会使用企业管理器建立视图与索引,掌握使用SQL语句建立视图与索引。
在做实验的时候遇到的问题是发现自己建立的视图遇到与表的内容不符的情况,这是由于我对上次表的内容有些模糊,而导致后面做实验出现问题。
在查询了以前建的表后,我又认真做了修改,使得在建立视图的时候能够与表建立紧密的联系,从而不会孤立表的建立。
到了后期,视图的建立也简单多了。
其实,在我做完这个实验之后,明白这次实验都主要是围绕SQL语句,对于语句的熟悉和掌握,有助于我们对数据的应用。
在以后的工作中,也能够发挥到学到知识的作用。
实验4 视图与索引一、实验目的1.本实验的目的是使学生掌握视图与索引的使用方法,加深对视图与索引作用的的理解。
2.通过自行设计视图与索引,加强学生的数据库设计能力。
二、实验内容1.索引的定义和维护1)建立唯一索引,测试插入、修改记录时所受的影响。
2)建立聚簇索引,比较建立前后的记录顺序变化。
3)建立多重索引,观察执行select语句查询的结果记录顺序。
4)删除相关索引。
2.视图的定义、查询和更新1)为学生选课系统从不同用户角度出发设计相应的视图。
2)利用视图进行相关查询。
3)利用视图进行更新,注意哪些视图是不可更新的。
三、实验原理1.建立索引语句CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);⏹用<表名>指定要建索引的基本表名字⏹索引可以建立在该表的一列或多列上,各列名之间用逗号分隔⏹用<次序>指定索引值的排列次序,升序:ASC,降序:DESC。
缺省值:ASC⏹UNIQUE表明此索引的每一个索引值只对应唯一的数据记录⏹CLUSTER表示要建立的索引是聚簇索引(CLUSTERED)HAVING短语:筛选出只有满足指定条件的组⏹ORDER BY子句:对查询结果表按指定列值的升序或降序排序2.建立视图语句CREATE VIEW <视图名> [(<列名> [,<列名>]…)]AS <子查询> [WITH CHECK OPTION]四、实验步骤按实验目的和内容自行设计。
五、实验报告要求1)写出本实验中用到的SQL语句的使用说明;2)对每一实验结果进行分析;3)记录在查询实验中遇到的典型问题及你所采取的解决方法;。
实验四视图索引及数据更新一、实验目的:熟练掌握索引的建立与删除的方法,熟练掌握SQL的应用,熟练掌握数据插入、修改和删除的使用,为后继学习作准备。
二、实验属性(验证性)1.了解并掌握SQL查询分析器及企业管理器的使用;2.掌握基本表的定义、删除与修改。
三、实验仪器设备及器材1.安装有window操作系统计算机。
2.安装有Oracle11g和SQLServer的计算机。
3.安装有和Java编译器(eclipe、Netbean等)的编译器。
4.计算机具备网络环境。
四、实验要求(预习、实验前、实验中、实验后等要求)1.预习教材第三章,熟悉SQL语句。
2.熟悉.net、Java和Delphi开发环境。
3.能够熟练掌握.net、Java和Delphi环境下的数据库的编程。
4.掌握建立索引的二种方法,即在基本表中建立和用命令方式建立。
5.掌握删除索引的方法。
6.掌握ql视图建立、修改和删除;7.掌握ql视图查询。
8.掌握ql数据插入、修改和删除语句的一般格式及使用方法。
五、实验原理SQL语言应用。
六、实验步骤:(1)启动Oracle的SQLDeveloper或者SQLPlu,或者SQLServer查询分析器;(2)对于Oracle11g的SQLPlu需要进行登录,对于Oracle11g的SQLDeveloper需要进行建立连接。
如果选择SQLSERVER查询分析器,需要选择数据库;1建立索引建立唯一索引:例3.1为学生选课数据库中的Student,Coure,SC三个表建立索引。
其中Student表按Sname升序建唯一索引,Coure表按Cname升序建唯一索引,SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。
createuniqueinde某turing.myInde某onturing.Student(Sname);查看自己建立的索引:SQL>decdba_inde某e[或者SQL>decall_inde某e,SQL>decuer_inde某e]electinde某_name,inde某_type,table_nameFromuer_inde某eWhereinde某_name=’YOUR_INDE某_NAME’;electt.column_name,t.Inde某_name,i.inde某_typefromdba_ind_columnt,dba_inde某eiwhere(t.inde某_name=i.inde 某_name)and(t.table_name=i.table_name)and(t.table_name='STUDENT')建立位图索引:(选做,理解位图索引的意义,什么情况下才使用位图索引)例3.2为学生选课数据库中的Student的e某列上建立位图索引。
数据库原理及应用实验报告
实验名称数据库视图及索引的操作实验室502 实验日期
修改:在查询数据库中输入语句:
use 学生课程
go
alter view 数学系学生视图
as
select * from 学生where 性别='男' ,并运行如图
在学生表中的姓名和专业上建立唯一性索引和在学生表的姓名列上建立非聚集索引。
建立非聚集索引:
use 学生课程
go
create nonclustered index index_学生姓名on 学生(姓名)
五、调试过程及实验结果(详细记录程序在调试过程中出现的问题及解决方法;
记录程序执行的结果)
问题一:在视图中选择相应的属性时,遇到要添加函数属性,不能直接在表中直接点击,然后在SQL语句栏修改并添加相应的语句使之符合题意,题目中没有直接给出要分组,由于我没有分组,在运行时提示要分组,根据提示最后成功的运行视图。
问题二:聚集索引和非聚集索引的差别:聚集索引会对表和视图进行物理排序,所以这种索引对查询非常有效,在表和视图中只能有一个聚集索引。
键约束时,如果表中没有聚集索引,SQLServer会用主键列作为聚集索引键,可以在表的任何列或列的组合上建立索引,实际应用中一般为定义成主键约束的列建立聚集索引,而非聚集索引不会对表和视图进行物理排序,
存在聚集索引,则表是未排序的,在表或视图中,最多可以建立。
实验四视图和索引班级学号姓名一、实验目的使学生掌握SQL SERVER中的视图创建、查看、修改和删除的方法;索引的创建和删除方法二、实验内容在学生-课程数据库中(1)用图形工具和T-SQL两种方法创建视图,取名为view_stu_grade,要求查看学生的学号,姓名,课程名和成绩。
(2)若发现视图定义的结构不能很好满足要求,还可以对它进行修改。
(3)删除视图(4)尝试分别为student表的每一个属性列添加一个惟一索引,将出现的现象和原因分析一下。
(5)删除索引三、实验过程(1)用图形工具和T-SQL两种方法创建视图,取名为view_stu_grade,要求查看学生的学号,姓名,课程名和成绩。
①使用图形工具②使用T-SQL语句③ 视图(2)若发现视图定义的结构不能很好满足要求,还可以对它进行修改。
如需要修改则点击视图选中view_stu_grade右键修改(3)删除视图①图形工具②T-SQL语句(4)尝试分别为student表的每一个属性列添加一个惟一索引,将出现的现象和原因分析一下。
①选中Student表打开索引,右键新建索引,如图操作②创建索引问题1(未选择要添加到索引键的表列)解决办法问题2(记录相同不能建立唯一索引)解决办法:不建立唯一结果(5)删除索引①图形工具②T-SQL语句四、实验总结通过这节课练习,我进一步掌握了SQL SERVER中的视图创建、查看、修改和删除的方法以及索引的创建和删除方法,其实视图就是表的一个缩影,如果表的基本操作能够熟练运用的话,那视图也就不再话下,知识真的是相通的。
一、实验步骤(一)附加上次实验所创建的数据库“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”视图的定义信息和依赖的对象。
实验四索引和视图一、实验学时2学时二、实验目的(1)理解索引的概念与类型。
(2)掌握使用企业管理器创建与维护索引的方法。
(3)掌握T-SQL语句创建与维护索引的方法。
(4)理解视图的概念。
(5)掌握视图创建、更改的方法。
(6)掌握用视图管理数据的方法。
三、实验要求(1)硬件设备:奔腾II或奔腾II以上计算机,局域网。
SERVER、WINDOWS7、XP、WINDOWS9X/NT、WINDOWS(2)软件环境:WINDOWSSQL SERVER 2000/2005/2008中文版企业版或标准版。
(3)实验课前预习,课后及时完成实验内容。
(4)实验过程及记录按题目格式要求填写代码清单。
四、实验内容(一)索引索引分为两种:聚簇索引和非聚簇索引。
每张表只能有一个聚簇索引。
创建索引时的缺省设置是非聚簇索引。
1.使用企业管理器创建、管理索引(1)创建索引1)为Student表创建一个以Sno为索引关键字的惟一聚簇索引。
(若原已有,请删除,索引名为Sno_index)(提示:选择表后点击鼠标右键,选“设计”,窗口空白区域点击鼠标右键,选“索引/键”)基本步骤:2)为Student表创建以Sname,Sex为索引关键字的非聚簇索引(对Sname 以升序来排列,Sex以降序排列,并设置填充因子为70%)。
索引名为:SS_index。
(提示:填充因子为索引创建时索引里的数据页被填充的数量)基本步骤:(2)重命名索引将索引文件Sno_index重新命名为Sno_index1。
基本步骤:(3)删除索引将索引文件Sno_index1删除。
基本步骤:2.使用T-SQL语句创建、管理索引(1)创建索引1)为SC表创建一个非聚集索引Grade_index,索引关键字为Grade,升序,填充因子为80%。
(提示:with fillfactor=)T-SQL语句:create nonclustered index Grade_indexon SC(Grade)with fillfactor=80;2)为SC表创建一个唯一性聚集索引SC_index,索引关键字为Sno,Cno。
数据库实验报告题目:索引、视图的定义院系:计算机科学与工程学院班级:120404姓名:张杨学号:20124270第九周周六56节【实验设计】使用企业管理器(1)打开企业管理器,在树状目录中展开数据表"员工数据表"所在的数据库节点TestDB,并选择其下一级节点"表"。
(2)选择表"员工数据表",并单击鼠标右键。
在弹出菜单中选择命令"所有任务〉管理索引",打开"管理索引"对话框。
(3)在"管理索引"对话框中的"数据库"下拉菜单中选择数据库表。
(4)选择"新建"按钮,弹出"新建索引"对话框。
(5)在"新建索引"对话框的"索引名"文本框中输入索引名称"IDX_Name",然后选择字段"姓名"并设置索引属性。
【程序代码】USE TestDBGOCREATE VIEW员工项目(员工编号,员工姓名,项目名称,项目开始日期)ASSELECT a·编号,a·姓名,b·名称,b·开始日期,FROM员工数据表AS a INNER JOIN项目数据表AS bON a·编号=b·负责人WHERE a·编号=b·负责人GO(2)使用INSERT语句通过视图向员工数据表中添加一条记录,要求"姓名"字段值为"马中兴"。
USETestDBGOINSERTINTO 员工项目(员工姓名)VALUES('马中兴')GO(3)使用UPPDATE语句通过视图将第二步中插入记录的员工姓名改为"马中新"。
USETestDBGOUPDATE员工项目SET 项目负责人= '马中新’,WHERE 项目负责人=’马中兴’GO(4)执行系统存储过程 sp_rename将视图更名为"employee_project_VIEW "。
数据库原理及应⽤.实验4.视图和索引的创建和使⽤实验报告 课程名称:数据库原理及应⽤ 实验项⽬名称:视图和索引的创建和使⽤ 实验时间:2021年5⽉10⽇实验⽬的: (1)掌握创建视图的SQL语句的⽤法。
(2)掌握修改视图的⽅法。
(3)熟悉视图更新与基本表更新的区别与联系;认识视图的作⽤。
(4)熟悉索引的作⽤,以及不同类型索引的区别。
(5)掌握SQL语句对索引的创建使⽤和删除索引实验环境: MySQL、SQLyog实验内容及过程:⼀、创建课本P79页的学⽣-课程数据库,完成以下实验内容:复制DROP DATABASE STCREATE DATABASE STUSE STCREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));CREATE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40) NOT NULL,Cpno CHAR(4),Ccredit SMALLINT#FOREIGN KEY (Cpno) REFERENCES Course(Cno));CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY (Sno,Cno),FOREIGN KEY (Sno) REFERENCES Student(Sno),FOREIGN KEY (Cno) REFERENCES Course(Cno));INSERT Student(Sno, Sname, Ssex, Sage, Sdept)VALUES (201215121,'李勇','男',20,'CS'),(201215122,'刘晨','⼥',19,'CS'),(201215123,'王敏','⼥',18,'MA'),(201215125,'张⽴','男',19,'IS')INSERT Course(Cno,Cname,Cpno,Ccredit)VALUES ('1','数据库','5',4),('2','数学',' ',2),('3','信息系统','1',4),('4','操作系统','6',3),('5','数据结构','7',4),('6','数据处理',' ',2),('7','PASCAL语⾔','6',4)INSERT SC(Sno, Cno, Grade)VALUES (201215121,1,92),(201215121,2,85),(201215121,3,88),(201215122,2,90),(201215122,3,80)定义信息系学⽣基本情况视图V_IS,并查看视图结构,通过该视图可以将其他系学⽣信息屏蔽掉。
实验4 数据库的索引与视图定义实验一、实验目的本实验的目的是使学生掌握索引与视图的定义与维护操作,加深对索引与视图在关系数据库中的作用的理解。
二、实验时数2学时[相关知识]建立索引是加快查询速度的有效手段。
用户可以根据应用环境的需要,在基本表上建立一个或多个索引,以提供多个存取路径,加快查找速度。
视图是根据子模式建立的虚拟表。
一个视图可以由一个表构造,也可以由多个表构造。
查看和修改视图就如同对表的操作一样,非常容易。
三、实验内容㈠索引1.创建索引1)为PROJ表的PNAME列创建非聚集索引Pindex。
2)为DEPA表的DNAME(降序),ADDR两列创建唯一非聚集索引Dindex。
3)在PROJ表的PNAME列上创建唯一非聚集索引Pindex,若该索引已存在则删除后重建。
2.查看索引1)查看DEPA表的索引信息。
2)查看数据库COMPANY索引使用的空间信息3.索引更名1)将DEPA表的索引Dindex名更改为Dindex1。
4.删除索引1)删除DEPA表的索引Dindex1。
㈡视图1.创建视图1)创建14号部门员工的视图EMPL_14(ENO,ENAME,SALARY)。
2) 创建包含项目名与员工名及工作天数的视图Prjemp。
3)在视图EMPL_14上创建工资在3000以上的员工的视图EMPL_14H3。
4)创建每个部门的平均工资的视图E_AVG(DNO,SAVG)。
2.查询视图1)根据视图Prjemp查询做'设计系统'项目的所有员工及工作天数。
2)根据视图E_AVG查询‘客户中心’的平均工资。
3.更新视图1)在视图EMPL_14中将1042号员工的姓名改为‘李立春’。
2)向视图EMPL_14中插入一条新记录(1050,‘赵英’,3500)。
3)删除视图EMPL_14中1042号员工的记录。
4.删除视图1)删除视图Prjemp。
南昌大学计算机数据库实验四_索引和视图
实验四索引和视图
学号:6100410235 姓名:郑俊班级:计科103班实验日期:2012-11-15一实验目的
1、掌握创建视图的T-SQL语句的用法
2、掌握使用SQL Server Management Studio 创建视图和索引的方
法
3、掌握查看视图和索引的系统存储过程的用法
4、掌握修改视图的方法
5、掌握创建索引的命令
二实验内容
1.建立计算机系学生视图,该视图包含学生的学号、姓名和出生日期信息并查看视图定义
use[学生情况]
go
create view CS_Student
as
select学号,姓名,出生日期
from学生
where系别='计算机'
2.建立学生表中全体学生年龄的视图,该视图包含学生的学号、姓名、和年龄信息
use[学生情况]
go
create view Sage_Student
as
select学号,姓名,2012-year(出生日期)年龄
from学生
3建立选修“数据库”的学生的视图,该视图包含学生的学号和姓名信息
use[学生情况]
go
create view数据库_Student
as
select学生.学号,姓名
from学生,课程注册,学期成绩
where学生.学号=学期成绩.学号and课程注册.课程编号=学期成绩.课程编号and课程名称='数据库'
4.建立学生成绩视图,该视图包含学生的学号、姓名、课程名称和成绩信息,并进行加密
use[学生情况]
go
create view学生成绩
with encryption
as
select学生.学号,姓名,课程注册.课程名称,学期成绩.成绩
from学生,课程注册,学期成绩
where学生.学号=学期成绩.学号and课程注册.课程编号=学期成绩.课程编号
5.修改题目4中的学生成绩视图,该视图包含学生的学号、姓名、课程名称、成绩和班级信息
use[学生情况]
go
alter view学生成绩(学号,姓名,课程名称,成绩,班别)
with encryption
as
select学生.学号,姓名,课程注册.课程名称,学期成绩.成绩,学生.班别
from学生,课程注册,学期成绩
where学生.学号=学期成绩.学号and课程注册.课程编号=学期成绩.课程编号
6.在数据库中,为“课程”表创建一个基于“课程号,课程名称”组合列的非聚集、复合索引khh_kcmc_index
use[学生情况]
go
create unique index khh_kcmc_index on课程注册(课程编号,课程名称)
7.查看学生表的索引
8.建立学生表的姓名唯一性索引,并且填充因子为60%
use[学生情况]
go
create unique index khh_kcmc_index on学生(姓名)
with fillfactor=60
3.实验思考
(1)是否可以通过视图v_stu_g修改grade表中学号列数据?
答:不能
(2)比较视图和基表操作表中数据的异同。
答:表是实实在在得保存数据的实体,写入的数据都保存在表中;而视图是不保存数据的,也没有数据。
可以这样理解”视图就是一条语句,实际上视图从
表中去数据“。
只是给我们的感觉好像直接从表中取得一样。
表可以建立各种触发器,可以建立索引,可以建立主健、约束等。
但是视图不建立这些对象(视图可以建立替代触发器)。
表和视图可以更新,但是视图的更新受到约束。
(3)可更新视图必须满足哪些条件?
答:1)select子句中的目标列不能包含聚集函数
2)select子句中不能使用distinct关键字
3)不能包括group by子句
4)不能包括经算术表达式计算出来的列
5)视图必须是基于单表的,既由单个基本表使用选择、投影操作导出,并且要包含了基本表的主码
(4)什么是索引?SQL Server 2005中有两种形式的索引:聚集索引和非聚集索引,简单叙述它们的区别?
答:索引是对数据库表中一列或多列的值进行排序的一种结构
聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致,聚集索引表记录的排列顺序与索引的排列顺序一致(5)能否在视图上创建索引?
答:不能。