实验三 索引和视图

合集下载

实验3视图和索引的创建与使用

实验3视图和索引的创建与使用

学号:710301114辽宁师范大学海华学院上机实验报告2011~ 2012 第 1 学期课程名称:数据库原理与应用实验学时: 2实验项目:视图和索引的创建与使用专业班级:实验人:指导教师:2011年10月19日实验日期:2011 年10 月19 日第08 教学周实验目的:1、掌握创建视图的方法2、掌握修改和使用视图的方法3、掌握创建索引的方法4、掌握修改和使用索引的方法实验内容:一、视图的创建视图是查看数据库对象表中的数据的一种方法。

视图存储了预定义的查询语句,作为数据库的对象存储在数据库中以备以后使用。

熟土本身没有存放真正的数据,实际数据仍在基本表中。

1、用CREATE VIEW语句创建视图格式:create view 视图名称[(列[,…])][with encryption] 将视图源代码加密AsSelect 语句[with check option] 在更新视图数据时,检查添加、更新数据是否符合视图本身的定义1、利用资源管理器创建新建一个名为user_view1视图,在该视图中查询成绩高于80的学生的学号和姓名。

运行结果如下:代码如下:select Student.Sno,Student.Sname,Sc.Gradefrom Student,Scwhere(Student.Sno=Sc.Sno and Sc.Grade>80)视图的修改1、利用企业管理器查看视图属性来修改;2、用T-SQL语句修改。

给user_view1视图增加列名代码如下:Alter view user_view(Sno,Sname,Grade,Cno) asselect Student.Sno,Student.Sname,SC.Grade,o from Student, SC, Coursewhere(Student.Sno= SC.Sno and SC.Grade>80and o=o)删除视图Drop view 视图名1,视图名2,…重命名视图Sp_rename 旧视图名,新视图名二、关系图。

实验三_视图和索引

实验三_视图和索引

实验三视图和索引一、实验目的使学生掌握SQL SERVER中的视图创建、查看、修改和删除的方法;索引的创建和删除方法二、实验内容在学生-课程数据库中(1)用图形工具和T-SQL两种方法创建视图,取名为view_stu_grade,要求查看学生的学号,姓名,课程名和成绩。

(2)若发现视图定义的结构不能很好满足要求,还可以对它进行修改。

(3)删除视图(4)尝试分别为student表的每一个属性列添加一个惟一索引,将出现的现象和原因分析一下。

(5)删除索引三、实验过程要求个人填写(要求有文字描述和适当的图片辅助说明)注:图片需要上机运行SQL Server软件之后,可用QQ的抓图工具把运行窗口抓下来,粘贴在word文档中。

(1)①用图形工具创建视图:展开stud_course数据库,右键单击“视图”,在弹出的快捷菜单中有“新建视图”菜单项,单击“新建视图”,就会出现新建视图对话框,保存视图,给视图取名为view_stu_grade.②用T-SQL创建视图:查看结果:(2)若发现视图定义的结构不能很好满足要求,还可以对它进行修改。

如需要修改则点击视图选中view_stu_grade右键修改例如将视图修改为显示出计算机科学系男生的情况,并要求加密(3)删除视图①用图形工具删除视图②用T-SQL删除视图(4)①选中Student表打开索引,右键新建索引,如图操作②创建索引问题1(未选择要添加到索引键的表列)解决办法问题2(记录相同不能建立唯一索引)解决办法:不建立唯一结果(5)删除索引①图形工具删除索引单击鼠标右键要删除的索引,选择“删除”命令,然后弹出“删除对象”对话框,单击确定按钮,即可删除索引。

②用T-SQL语句删除索引四、实验总结要求个人填写(实验中发现的问题和解决的办法)本次实验练习了视图创建、查看、修改和删除的方法;索引的创建和删除方法。

通过这次实验我认识到视图的作用,能够简化用户的操作,视图使用户能以多钟角度看待同一数据,适当的利用视图可以更清晰的表达查询。

实验三 数据库中的数据查询及视图操作实验报告

实验三  数据库中的数据查询及视图操作实验报告

实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。

通过本实验,我们可以掌握使用SQL语句进行数据查询和创建视图的方法,进一步提高对数据库的操作能力。

二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统下进行实验。

三、实验内容本实验主要包括以下内容:1. 数据查询:使用SELECT语句查询数据库中的数据,并进行排序、过滤和聚合操作。

2. 视图操作:创建和删除视图,以及对视图进行查询和更新操作。

四、实验步骤与结果1. 数据查询首先,我们需要连接到数据库,并选择要查询的表。

假设我们选择的表名为"students",包含以下字段:学号、姓名、性别、年龄、班级。

a. 查询所有学生的信息:```sqlSELECT * FROM students;```执行以上SQL语句后,我们可以得到所有学生的信息,包括学号、姓名、性别、年龄和班级。

b. 查询男生的信息:```sqlSELECT * FROM students WHERE 性别 = '男';```执行以上SQL语句后,我们可以得到所有性别为男的学生的信息。

c. 查询年龄小于20岁的学生的姓名和班级:```sqlSELECT 姓名, 班级 FROM students WHERE 年龄 < 20;```执行以上SQL语句后,我们可以得到年龄小于20岁的学生的姓名和班级。

d. 查询学生按照年龄降序排列的结果:```sqlSELECT * FROM students ORDER BY 年龄 DESC;```执行以上SQL语句后,我们可以得到按照年龄降序排列的学生信息。

e. 查询学生按照班级分组,并统计每个班级的人数:```sqlSELECT 班级, COUNT(*) AS 人数 FROM students GROUP BY 班级;```执行以上SQL语句后,我们可以得到每个班级的人数统计结果。

索引和视图实验报告

索引和视图实验报告

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。

实验三:索引和视图的操作()

实验三:索引和视图的操作()

实验三:索引和视图的操作实验日期:2014年5月14日姓名:李怀彬一、实验目的1、掌握使用SQL语句创建索引和视图;2、掌握在视图上对表中的数据进行操作:查询、修改等。

3、看懂SQL Server的查询执行计划,了解通过建立索引来改善查询的执行性能。

二、实验要求1.使用T-SQL 语句创建索引和视图,通过视图操作表中的数据。

2.请将试验内容中的每道题的T-SQL语句写在实验报告中。

3.独立完成实验内容,并提交书面实验报告。

三、实验内容本实验所使用的数据库为实验二创建的数据库jdglsys。

1、在客房业务表上查找在2010年2月10日后有客户入住的客房号,入住时间;查看相应的select语句的查询执行计划并分析SELECT客房号,入住时间FROM客房业务WHERE (入住时间>'2010-02-10 00:00:00')分析:通过比较执行计划,只有I/O和CPU的开销发生了变化,其他没变。

具体见下图:2、在客房业务表上创建以“入住时间”为索引关键字升序排序的非聚集索引index_time ;USE[jdglsys]CREATE NONCLUSTERED INDEX[index_time]ON[dbo].[客房业务]([入住时间]ASC)3、执行问题1中的select语句,再查看此时的查询执行计划,查询执行计划是否有变化?分析:I/O和CPU的开销发生了变化,其他没变。

具体见上图所示:4、在客房业务表上查找在2010年2月10日后有客户入住的所有入住时间;查看select 语句的查询执行计划并分析。

SELECT入住时间FROM客房业务WHERE (入住时间>CONVERT(DATETIME,'2010-02-10 00:00:00', 102))分析:select语句后对客房业务表进行扫描时物理运算方式为索引查找。

如下图所示5、查找客户入住的客房的客房号、入住客户身份证号、姓名、入住时间、该客房对应的类型编号、客房面积、客房名称以及客房价格。

数据库原理 实验三 数据查询、索引与视图

数据库原理 实验三 数据查询、索引与视图

《数据库原理》实验报告
一、目的
1.掌握SELECT语句的基本语法;
2.掌握子查询的表示;
3.掌握连接查询的表示;
4.掌握SELECT语句的统计函数的作用和使用方法;
5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。

6.掌握使用创建、删除索引的基本方法
7.掌握视图的定义(创建和删除),查询,更新(注意更新的条件);
8.掌握索引分析与维护的常用方法。

二、实验使用环境:
WindowXP SP2 SQL Server 2005
三、实验内容与设计思想
根据自已所选的题目,完成对表的查询、统计、视图的创建。

1
2
3
4
5
6
7
8
9
10
11
12
13
14.1
14.2
四、出现问题及解决方案
1.函数名字不正确,大小写错误导致无效
2.标点符号在中文状态下打的,出现语法错误
五、实验小结
学会了建立视图,视图加密,更新的方法,创建索引,为一个表创建聚集索引和非聚集索引。

这次实验对sql基本的语法进一步的巩固了解,主要学到了SELECT语句的基本用法,子查询、连接查询的使用方法,还有select语句中group by、order by、compute等字句的用法,以及基本的SQL函数。

数据库实验报告3

数据库实验报告3

数据库实验报告课程:数据库原理及应用正文:一、实验目的1.理解索引和视图的概念。

2.掌握索引的使用方法。

3.掌握视图的定义和使用方法。

4.理解存储过程的概念,掌握存储过程的使用方法。

5.学习触发器的使用,体会触发器执行的时机,加深对触发器功能和作用的理解。

6.理解SQL Server2000验证用户身份的过程,掌握设置身份验证模式的方法。

7.理解登陆账号的概念,掌握混合认证模式下登陆账号的建立与取消方法。

8.掌握混合认证模式下数据库用户的建立与取消。

9.掌握数据库用户权限的设置方法。

10.理解角色的概念,掌握管理角色技术。

11.学会配制ODBC数据源。

了解使用ODBC来进行数据库应用程序设计,通过ODBC接口访问数据库并对数据库进行操作。

学习在Visual Basic中使用ADO控件访问后台的SQL Server数据库。

二、实验内容1.建立索引。

对JWGL数据库的学生选课表SC建立索引,要求按照Cno升序、Grade降序建立一个名为SC_ind的索引。

USE JWGLIF EXISTS(SELECT name FROM sysindexes WHERE name = 'SC_ind')DROP INDEX SC.SC_ind;GOUSE JWGLCREATE INDEX SC_ind ON SC (Cno,Grade DESC);2.视图的定义和操作,(1)在JWGL数据库里,完成第三章例3.54~例3.61例题中视图的定义和视图上的查询、更新操作。

(2)在Market数据库中,完成第三章习题11中(1)中建立视图的操作,然后在视图上完成第三章习题11(2)的查询操作。

3.在数据库JWGL中,完成第四章例1,例3~7中例题的创建存储过程的操作,并使用EXEC语句调用这些存储过程执行,观察他们的执行结果。

4.在Market数据库中,完成第四章习题5中(1)~(4)创建存储过程的操作。

索引和视图实验答案

索引和视图实验答案

《索引和视图》实验一、实验目的与要求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、操作系统:Windows XP或Windows 20032、数据库管理系统:SQL Server 2005三、实验内容1.分别使用SQL Server管理平台和Transact-SQL语句为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。

(1) 使用SQL Server管理平台为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。

(2) 使用Transact-SQL语句为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。

USE教务管理系统GOcreate unique nonclustered index学生信息_idxon学生信息(学号)GOUSE教务管理系统GOcreate unique nonclustered index课程信息_idxon课程信息(课程编号)GO2.使用SQL Server管理平台按《课程信息》的课程编号列创建唯一性索引。

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

(1)使用SQL Server管理平台为教务管理系统数据库的《成绩表》的“分数”字段创建一个非聚集索引,命名为《成绩_index》。

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

实验三索引和视图
一、实验目的
1.掌握利用SSMS和T—SQL语句创建和删除索引的两种方法。

2.掌握利用SSMS和T—SQL语句创建、查询、更新及删除视图的方法。

ssex char(3)constraint ssex_ch check (ssex in('男','女')),
sage int not null constraint sage_ch check (sage between 15 and 30),
sdept char(10))
values('C02','数据结构','C05',2) insert into course
values('C03','数据库','C02',2) insert into course
values('C04','DB_设计','C03',3)
insert into course
values('C05','C++',null,3)
insert into course
values('C06','网络原理','C07',3)
create table sc(sno char(5)not null,
cno char(5)not null,
grade int constraint grade_ch check(grade between 0 and 100),
primary key(sno,cno),
constraint fk_sno foreign key (sno)references student(sno),
constraint fk_cno foreign key (cno)references course(cno))
insert into sc
values('S01','C01',92)
insert into sc
values('S01','C03',84)
insert into sc
values('S02','C01',90)
insert into sc
values('S02','C02',94)
insert into sc
values('S02','C03',82)
insert into sc
values('S03','C01',72)
insert into sc
values('S03','C02',90)
insert into sc
values('S04','C03',75)
2.索引的建立、删除
①用SSMS的方式为Student表按Sno(学号)升序建唯一索引
②用T—SQL语句为Course表按Cno(课程号)升序建唯一索引,
create unique index course_cno
on course(cno asc)
③用T—SQL语句为SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。

create unique index sc_sno_cno
on sc(sno asc,cno desc)
④能否用T—SQL语句再为表Students的Sname(姓名)和Sno(学号)列上建立一个聚簇索引?
若不能说明原因?
不能,因为student表中主键sno唯一,则已默认存在聚集索引,而每个表只能有一个聚集索引,故不能再建立另一个聚集索引。

⑤用T—SQL语句删除基本表SC上的唯一索引。

drop index sc_sno_cno
on sc
3.用T—SQL完成如下视图的建立、查询、修改及删除
1)建立数学系学生的视图C_Student,并要求进行修改和插入操作时仍需保证该视图只有
数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。

create view c_student
as select sno,sname,sage,sdept
from student
where sdept='数学'
with check option
2) 用SSMS的方式建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)
的视图Student_CR。

3) 定义一个反映学生出生年份的视图Student_birth(Sno, Sname, Sbirth)。

create view student_birth
as select sno,sname,2013-sage as'sbirth' from student
go
4)建立先修课程为空的课程视图v_course
create view v_course
as select cno,cname
from course
where cpno is null
go
5) 建立成绩高于90分的女生成绩视图v_F_grade(包括学号,姓名,课程号及成绩列)create view v_f_grade
as select student.sno,sname,o,grade
from student,sc,course
where student.sno=sc.sno and o=o
and ssex='女'and grade>90
go
6)建立视图S_AVGAGE(其中包括性别SSEX与平均年龄AVG_AGE两列)用以反映男生、女
生的平均年龄
create view s_avgage
as select ssex,avg(sage)as'avg_age'
from student
group by ssex
7)对前面创建的视图S_AVGAGE执行更新操作:
UPDATE S_AVGAGE
SET AVG_AGE = 85
WHERE ssex = '女'
上述语句能否成功执行?为什么?
对视图或函数'S_AVGAGE' 的更新或插入失败,因其包含派生域或常量域。

8) 在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄
(Sage)。

select sname,sage
from c_student
where sage<20
9) 在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称
(Cname)。

select sno,sname,cname
from student_cr
where grade>85
10) 将数学系学生视图C_Student中学号为S05的学生姓名改为“黄海”。

update c_student
set sname='黄海'
where sno='S05'
11) 向数学系学生视图C_Student中插入一个新的学生记录,其中学号为“S09”,姓名为
“王海”,年龄为20岁。

insert into c_student(sno,sname,sage,sdept)
values('S09','王海',20,'数学')
12) 删除数学系学生视图C_Student中学号为“S09”的记录。

delete
from c_student
where sno='S09'
实验三索引和视图徐龙琴、刘双印设计制作
四、思考题
1.在一个表中可以有多个聚簇索引吗?为什么?
聚簇索引也叫簇类索引,是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。

由于聚簇索引的索引页面指针指向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。

每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。

2.视图有哪些优点?
使用视图的优点如下:
查询的简单性:将复杂的查询(如多表的连接查询)定义为视图,保留了用户所关心的数据内容,剔除了那些不必要的冗余数据,使其数据环境更加容易控制,从而达到简化用户浏览和操作的目的;
安全保护:数据库管理员可以在限制表用户的基础上进一步限制视图用户,可以为各种不同的用户授予或撤销在视图上的操作权限,这样,视图用户只能查询或修改他们各自所能见到的数据,从而保证数据库中数据的安全;
掩盖数据库的复杂性:使用视图可以把数据库的设计和用户的使用屏蔽开来,当基本表发生更改或重新组合时,只需要修改视图的定义即可。

用户还能够通过视图获得和数据库中的表一致的数据。

3.总结创建视图的方法有几种,各种方法实现的步骤,各举一例实现。

两种。

一种是SSMS创建,另一种是T—SQL语句创建。

相关文档
最新文档