您的当前位置:首页正文

视图和索引的创建和使用实验报告

来源:榕意旅游网


信息工程学院实验报告

课程名称:《数据库原理》 实验项目名称:视图与索引得创建与使用 一、实 验 目 得:

(1)掌握创建视图得SQL语句得用法。 (2)掌握修改视图得方法、

(3)熟悉视图更新与基本表更新得区别与联系;认识视图得作用。 (4)熟悉索引得作用,以及不同类型索引得区别。 (5)学会用T—SQL语句对表创建与删除索引 二、实 验 设 备 与 器 件

Win7 +Sql server 2008 三、实 验 内 容 与 步 骤

利用备份文件school,还原数据库,然后完成以下实验内容: (1)用T—SQL语句,定义信息系学生基本情况视图V_IS。

(2)用T—SQL语句,将Student,Course 与SC表中学生得学号,姓名,课程号,课程名,成绩定义为视

图V_S_C_G。

(3)用T—SQL语句,将各系学生人数,平均年龄定义为视图V_NUM_AVG。 (4)用T—SQL语句,定义一个反映学生出生年份得视图V_YEAR。

(5)用T-SQL语句,将各位学生学号、选修课程得门数及平均成绩定义为视图V_AVG_S_G、 (6)用T—SQL语句,将各门课程得课程号、选修人数及平均成绩定义为视图V_AVG_C_G。 (7)用T-SQL语句完成以下视图操作,查瞧结果,并分析原因。

①通过视图V_IS,将学号为“200215125\"得学生姓名更改为“张小立”,并查瞧结果;

②通过视图V_IS,新增加一个学生记录 ('200215126',’黄笑',19, '男',’IS'),并查瞧结果。

③通过视图V_IS,新增加一个学生记录 ('200215127’,’李霞',19, '女','MA'),并查瞧结果。 ④通过视图V_IS,删除学号为“200215126”得学生信息,并查瞧结果。

⑤通过视图V_S_C_G,将学号“200215122”得姓名改为“刘晓晨”,能否实现?若无法实现说明原因。

⑥通过视图V_AVG_S_G,将学号“200215121”得平均成绩改为90,能否实现?若无法实现说明原因。

⑦修改视图V_IS定义,添加WITH CHECK OPTION语句,然后用update语句修改“200215125”得学生所在系,改为’MA’, 能否实现?若无法实现说明原因。 ⑧修改视图V_YEAR,对其进行加密处理,并查瞧结果、

(8)写出T—SQL语句:利用表与前面所建视图,查询平均成绩为90分以上得学生学号、姓名与成绩; (9)写出T-SQL语句:利用表与前面所建视图,查询成绩大于课程平均成绩得学生学号、课程号与成绩; (10)写出T—SQL语句:利用表与前面所建视图,按系分组统计平均成绩80分以上得人数,按降序排列。 (11)为student表创建一个复合索引i_sdept_sno,以院系升序、学号降序。 (12)在student表得sname列上建立普通降序索引。 (13)在course表得cname列上建立唯一索引。

成 绩: 指导老师(签名):

(14)将sc表得原先在sno,cno列上得聚集索引,改为在sno列上建立、 (15)用系统过程sp_helpindex查瞧表student中得索引信息。 (16)用系统过程sp_rename,将索引i_sdept_sno得名称改为i_s。 (17)删除索引i_s、

四、实 验 总 结:

(1)用T-SQL语句,定义信息系学生基本情况视图V_IS、

CREATE VIEW V_IS AS

SELECT* FROM student WHERE sdept='IS'

(2)用T-SQL语句,将Student,Course 与SC表中学生得学号,姓名,课程号,课程名,成绩定义为

视图V_S_C_G。 ﻩCREATE VIEW V_S_C_G ﻩAS

SELECT STUDENT、SNO,SNAME,COURSEO,CNAME,SC、GRADE FROM Student,Course,SC

WHERE student、SNO=SC。sno AND SC.CNO=COURSE。CNO

(3)用T—SQL语句,将各系学生人数,平均年龄定义为视图V_NUM_AVG、 ﻩCREATE VIEW V_NUM_AVG

(4)用T—SQL语句,定义一个反映学生出生年份得视图V_YEAR、 ﻩCREATE VIEW V_YEAR

(5)用T-SQL语句,将各位学生学号、选修课程得门数及平均成绩定义为视图V_AVG_S_G。

CREATE VIEW V_AVG_S_G AS

SELECT STUDENT。SNO ’学号’,SNAME '姓名',COUNT(*) '选修门数',AVG(GRADE) ’平均成绩’ FROM student,course,SC

WHERE Student、SNO=SC.SNO AND SCO=COURSE。CNO GROUP BY STUDENT、SNO,SNAME

AS

FROM Student

ﻩSELECT COUNT(SNO)DEPTNUM,AVG(SAGE)AGE,SDEPT ﻩGROUP BY SDEPT

AS

FROM Student

ﻩSELECT SNAME,2014-SAGE ‘出生年份’

(6)用T—SQL语句,将各门课程得课程号、选修人数及平均成绩定义为视图V_AVG_C_G。

CREATE VIEW V_AVG_C_G

AS

SELECT SC。CNO'课程号’,AVG(GRADE)'平均成绩',COUNT(CNO)'选修人数’ FROM SC

GROUP BY CNO

(7)用T-SQL语句完成以下视图操作,查瞧结果,并分析原因。

①通过视图V_IS,将学号为“200215125\"得学生姓名更改为“张小立”,并查瞧结果; UPDATE V_IS SET SNAME='张小立’ WHERE SNO=200215125 视图结果:

Student 表

结果显示在视图操作,会影响到建立视图时用得STUDENT 这张表格、

②通过视图V_IS,新增加一个学生记录 ('200215126',’黄笑',19, '男’,'IS’),并查瞧结果。 INSERT INTO V_IS(SNO,SNAME,SSEX,SAGE,SDEPT) VALUES(‘200215126','黄笑’,'男',19,’IS’) SELECT* FROM V_IS

WHERE SNO='200215126’

③通过视图V_IS,新增加一个学生记录 (’200215127','李霞',19, '女','MA'),并查瞧结果、

INSERT INTO V_IS(SNO,SNAME,SSEX,SAGE,SDEPT) VALUES(‘200215127',’李霞',’女’,19,’MA') SELECT* FROM V_IS

WHERE SNO=’200215127'

但就是视图没有此条数据

④通过视图V_IS,删除学号为“200215126”得学生信息,并查瞧结果。 DELETE FROM V_IS

WHERE SNO=’200215126’

⑤通过视图V_S_C_G,将学号“200215122”得姓名改为“刘晓晨”,能否实现?若无法实现说明原因。

UPDATE V_S_C_G SET SNAME='刘晓晨’ WHERE SNO=’200215122’ 可实现此次操作

⑥通过视图V_AVG_S_G,将学号“200215121\"得平均成绩改为90,能否实现?若无法实现说明原因。

UPDATE V_AVG_S_G

SET [平均成绩]='90'

WHERE [学号]=’200215121’

不能实现,原因就是系统无法修改各科成绩,以使平均成绩为90,所以V_AVG_S_G视图时不可更新得。

⑦修改视图V_IS定义,添加WITH CHECK OPTION语句,然后用update语句修改“200215125”得学生所在系,改为’MA’, 能否实现?若无法实现说明原因。 ALTER VIEW V_IS AS

SELECT * FROM STUDENT WHERE SDEPT=’IS’ WITH CHECK OPTION UPDATE V_IS SET SDEPT='MA’

WHERE SNO=’200215125’

无法实现此操作,原因就是目标视图所跨越得某一视图指定了WITH CHECK OPTION,而该操作得一个或多个结果又不符合WITH CHECK OPTION约束得条件。 ⑧修改视图V_YEAR,对其进行加密处理,并查瞧结果。 ALTER VIEW V_YEAR WITH ENCRYPTION AS

SELECT SNAME,2014—SAGE ‘出生年份' FROM STUDENT

(8)写出T-SQL语句:利用表与前面所建视图,查询平均成绩为90分以上得学生学号、姓名与成绩;

SELECT V_AVG_S_G、学号,student、sname,V_AVG_S_G、平均成绩

from student,V_AVG_S_G

where student。sno=V_AVG_S_G.学号 and V_AVG_S_G。平均成绩>90

(9)写出T-SQL语句:利用表与前面所建视图,查询成绩大于课程平均成绩得学生学号、课程号与成绩;

select sc。sno 学号,sc.cno 课程号,sc、grade 成绩

from sc,V_AVG_C_G

where sco=V_AVG_C_G、课程号 and sc、grade>V_AVG_C_G、平均成绩

心得体会:对语句不熟悉,有得操作花了很多时间,所以之做到这步,争取下次老师布置得实验按时完成。

因篇幅问题不能全部显示,请点此查看更多更全内容