数据库实验五 索引和视图

合集下载

中南大学数据库题库05索引与视图

中南大学数据库题库05索引与视图

不允许记录中出现重复值和NULL值的索引是( )。

A 主键索引、普通索引B 主键索引、候选索引和普通索引C 主键索引和候选索引D 主键索引、候选索引和唯一索引参考答案C有表student(学号, 姓名, 性别, 身份证号, 出生日期, 所在系号),在此表上使用()语句能创建建视图vst。

A CREATE VIEW vst AS SELECT * FROM studentB CREATE VIEW vst ON SELECT * FROM studentC CREATE VIEW AS SELECT * FROM studentD CREATE TABLE vst AS SELECT * FROM student参考答案ASQL SERVER中,可为数据表创建()的三种类型的索引。

A 聚集索引、稀疏索引、辅索引B 聚集索引、唯一性索引、主键索引C 聚集索引、类索引、主键索引D 非聚集索引、候选索引、辅索引参考答案B在数据库物理设计阶段,需要考虑为关系表建立合适的索引。

关于建立索引的描述,有下列说法:Ⅰ.对于经常在其上需要执行查询操作并且数据量大的表,可以考虑建立索引Ⅱ.对于经常在其上需要执行插入、删除和更新操作的表,可以考虑建立索引Ⅲ.对于经常出现在WHERE子句中的属性,可以考虑建立索引Ⅳ.对于经常出现在ORDER BY子句、GROUP BY子句中的属性,应尽量避免建立索引上述说法正确的是A Ⅰ、Ⅱ和ⅢB Ⅰ、Ⅱ和ⅣC Ⅰ和ⅢD Ⅱ和Ⅳ参考答案C下列哪些属性不适合建立索引?A 经常出现在GROUP BY字句中的属性B 经常参与连接操作的属性C 经常出现在WHERE字句中的属性D 经常需要进行更新操作的属性参考答案D有会员卡表TableCards(CardsID,StartDate,Score),CardID表示卡标识,Scord为卡积分,有视图:CREATE VIEW vCardASSELECT * FROM TableCardsWHERE Score BETWEEN 200 AND 500假设(´C0001´,´2008/5/6´,220)是TableCards表中的一个元组,下述说法正确的是( )。

数据库技术索引与视图

数据库技术索引与视图

实验报告
课程名称:数据库技术项目名称:索引和视图
姓名:专业:班级:学号同组成员
1注:1、实验预习部分包括实验环境准备和实验所需知识点准备。

2、若是单人单组实验,同组成员填无。

5.分别使用企业管理器和系统存储过程sp_helpindex查看grade
6.使用企业管理器的“向导”工具对grade表创建一个聚集索引和唯一索引。

10.在studentsdb数据库中,使用Transact-SQL
12.分别使用企业管理器和Transact-SQL语句修改视图每个学生所学课程数目。

15.利用视图v_stu_i为student_info表添加一行数据:学号为
16.利用视图v_stu_i删除学号为
实验报告成绩(百分制)__________ 实验指导教师签字:__________
3注:1、实验小结应包含实验所需知识点和实验方法的总结,实验心得体会等。

2、分组实验需包含同组讨论内容。

实验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视图创建好,就可以利用它进行查询信息了。

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

ex05索引与视图定义参考答案

ex05索引与视图定义参考答案

实验五索引与视图定义1 实验目的与要求(1) 掌握索引的建立和删除操作。

(2) 掌握视图的创建和查询操作。

2 实验内容(1) 根据基本表创建以下索引:①在图书表中按出版社号建立一个非聚集索引PublishingnoIdx。

②在读者表中按身份证号建立一个非聚集索引IdentifycardIdx。

③在读者表中,首先按工作单位的升序,然后按借书数量降序建立一个非聚集索引WorkunitCountIdx。

(2) 创建一个只含清华大学出版社信息的图书视图BookView。

(3) 创建一个包含读者编号、读者姓名、图书编号、图书名称、借阅日期、归还日期的视图BorrowView。

(4) 创建一个视图,要求显示至少借阅了3本书的读者信息ReaderView。

(5) 在视图BorrowView中查询2010年4月22日以前被借阅的图书。

(6) 在视图ReaderView中查询姓张的读者信息。

(7) 在视图BorrowView基础上再建一个只包含合生元有限公司读者所借图书信息的视图BorrowView1。

(8) 删除视图BorrowView。

参考答案(1) 根据基本表创建以下索引:①在图书表中按出版社号建立一个非聚集索引PublishingnoIdx。

create nonclustered index PublishingnoIdx on book(Publishingno)②在读者表中按身份证号建立一个非聚集索引IdentifycardIdx。

create nonclustered index IdentifycardIdx on reader(Identifycard)③在读者表中,首先按工作单位的升序,然后按借书数量降序建立一个非聚集索引WorkunitCountIdx。

create nonclustered index WorkunitCountIdx onreader(Workunit,borrowCount desc)(2) 创建一个只含清华大学出版社信息的图书视图BookView。

索引和视图实验报告

索引和视图实验报告

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。

实验5-视图

实验5-视图

实验五视图1实验目的(1)掌握SQL视图语句的基本使用方法,如CREATE VIEW、DROP VIEW。

(2)掌握视图更新、WITH CHECK OPTION等高级功能的使用。

2实验内容2.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。

(2)创建视图(不能省略列名的情况)。

(3)删除视图(RESTRICT / CASCADE)。

2.2 掌握视图更新和WITH CHECK OPTION的高级使用方法(1)创建视图(WITH CHECK OPTION),并利用INSERT、DELETE和UPDATE语句加以验证。

(2)创建一个行列子集可更新视图,并利用INSERT、DELETE和UPDATE语句加以验证。

(3)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。

3实验要求(1)深入复习教材第三章SQL有关视图语句。

(2)根据书上的例子,针对TPCH数据库模式设计各种视图语句,每种类型视图语句至少要设计一个,描述清楚视图要求,运行你所设计的视图语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。

也可以按照附1所列示例做实验。

(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。

(4)思考题:KingbaseES把视图的定义存储在那个系统表中?如何查看某个视图的定义?4实验步骤4.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。

(2)创建视图(不能省略列名的情况)。

(3)删除视图(RESTRICT / CASCADE)。

4.2 掌握视图更新和WITH CHECK OPTION的高级使用方法(4)创建一个行列子集可更新视图,并利用INSERT、DELETE和UPDATE语句加以验证。

(5)创建视图(WITH CHECK OPTION),并利用INSERT、DELETE和UPDATE语句加以验证。

(6)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。

数据库实验五 视图的创建与使用

数据库实验五 视图的创建与使用

实验五视图的创建与使用一、实验目的(1)理解视图的概念。

(2)掌握创建视图、测试、加密视图的方法。

(3)掌握更改视图的方法。

(4)掌握用视图管理数据的方法。

二、实验内容1.创建视图(1)创建一个名为stuview2的水平视图,从数据库Student_info的Student表中查询出性别为“男”的所有学生的资料。

并在创建视图时使用with check option。

(注:该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。

)create view stuview2asselectSno,Sname,Sex,Birth,Classno,Entrance_date,Homeaddr,Sdept,Postcode from Student_20103322where Sex='男'with check option(2)创建一个名为stuview3的投影视图,从数据库Student_info的Course表中查询学分大于3的所有课程的课程号、课程名、总学时,并在创建时对该视图加密。

(提示:用with ENCRYPTION关键子句)create view stuview3with ENCRYPTIONasselect Cno,Cname,Total_periorfrom Course_20103322where Credit>3with check option(3)创建一个名为stuview4的视图,能检索出“051”班所有女生的学号、课程号及相应的成绩。

create view stuview4asselect Student_20103322.Sno,Cno,Gradefrom Student_20103322,SC_20103322where Student_20103322.Sno=SC_20103322.Snoand Classno='051'and Sex='女'(4)创建一个名为stuview5的视图,能检索出每位选课学生的学号、姓名、总成绩。

数据库系统项目实践.第五讲:索引、视图其应用及

数据库系统项目实践.第五讲:索引、视图其应用及

Projects practice Of Database System
将表创建到指定区
1.创建分区函数。
2.创建映射到分区函数的分区方案。 3.创建使用分区方案的分区表。
Projects practice Of Database System
索引及应用
SQL Server 访问数据库的方式有两种:一种是扫描表的所有页,称之为“表扫描”, 另一种是使用索引技术。
Projects practice Of Database System
分区、数据页、文件组
SQL Server 中数据存储的基本单位是页。为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 读取或写入所有数据页。 区是八个物理上连续的页的集合,用来有效地管理页。所有页都存储在区中。 (1)页 在 SQL Server 中,页的大小为 8 KB。这意味着 SQL Server 数据库中每 MB 有 128 页。每页的开头是 96 字节的标头,用于存储有关页的系统信息。 此信息包括页码、页类型、页的可用空间以及拥有该页的对象的分配单元 ID。 注意: 日志文件不包含页,而是包含一系列日志记录。
唯一性索引的作用: 强制实施唯一性。 索引的目标将实现查询的效率,但这种索引将占据更多的空间。 主键与唯一性索引的差别: 主键一定是唯一性索引,但是唯一性索引不一定是主键 一个表可以有多个唯一性索引,但是主键只能够有一个。 主键不允许为空,但是唯一性索引允许为空。
Projects practice Of Database System

表扫描
SQL Server 扫描表的所有页
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华中科技大学
《数据库技术与应用》实验报告
专业班级:学生姓名:学号:
实验地点:指导教师:
实验日期时间:
一、实验项目名称:索引和视图
二、实验学时:
三、实验目的:
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的用法。

四、实验工具或环境五、实验内容、步骤、代码和结果:
0. 创建studentsdb数据库及其相应表,并录入数据。

在SQL Server管理平台上,点击“新建查询”打开查询编辑器窗口,复制粘贴附件“创建数据库代码”中的代码到查询编辑器窗口,运行即可生成相关数据库和表,并有相应的数据。

1.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和
curriculum表创建主键索引。

alter table student_info alter column学号char(4)not null;
alter table student_info
add primary key(学号)
alter table
curriculum alter column课程编号char(4)not null;
alter table curriculum
add primary key(课程编号)
2.使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。

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

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表上的
索引信息。

EXEC Sp_helpindex grade
EXEC Sp_helpindex student_info
6.使用SQL Server管理平台对grade 表创建一个聚集索引和唯一索引。

7.使用系统存储过程sp_rename将索引grade_index更名为grade_ind。

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

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

use studentsdb
go
drop index grade_ind on grade
9.在studentsdb数据库中,以student_info表为基础,使用SQL Server管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。

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

create view v_stu_c
as
select a.学号,姓名,b.课程编号from student_info a inner join grade b on a.学号=b.学号
select*from v_stu_c where学号='0003'
11.基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。

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

学号姓名课程名称分数
0001 刘卫平大学计算机基础80
0001 刘卫平C语言程序设计90
0001 刘卫平SQL Server数据库87
▶0001 刘卫平英语86
0001 刘卫平高等数学78
图5-1 学号为0001的学生的视图信息
create view v_stu_g
as
select student_info.学号,姓名,课程名称,分数from student_info,curriculum,grade where student_info.学号=grade.学号and curriculum.课程编号=grade.
课程编号
12.分别使用SQL Server管理平台和Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。

alter view v_stu_c as select student_info.学号,姓名,count(课程编号)as课程数目from grade inner join studentsdb.dbo.student_info
on grade.学号=student_info.学号
group by student_info.学号,姓名
13.使用Transact-SQL语句ALTER VIEW 修改视图v_stu_i,使其具有列名学号、姓名、性别。

alter view v_stu_i as select学号,姓名,性别
from studentsdb.dbo.student_info
14.使用系统存储过程sp_rename将视图v_stu_i更名为v_stu_info。

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

insert into v_stu_i values ('0015','陈婷','女')
16.利用视图v_stu_i删除学号为0015的学生记录。

delete from v_stu_i where学号='0015'
17.利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。

update v_stu_g
set分数='84'
where姓名='刘卫平'and课程名称='高等数学'
18.使用Transact-SQL语句DROP VIEW 删除视图v_stu_c和v_stu_g。

drop view v_stu_c,v_stu_g。

相关文档
最新文档