数据库视图和索引游标实验报告.docx
《数据库视图和索引游标实验报告.docx》由会员分享,可在线阅读,更多相关《数据库视图和索引游标实验报告.docx(8页珍藏版)》请在冰豆网上搜索。
数据库视图和索引游标实验报告
数据库视图和索引-游标实验报告
《数据库系统》实验报告
年级、专业、班级
2011级计科4班
姓名
XX
实验题目
视图和索引游标
实验时间
2013/10/25
实验地点
A主414
实验成绩
实验性质
□验证性□设计性□综合性
教师评价:
□算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;
□实验结果正确;□语法、语义正确;□报告规范;
其他:
评价教师签名:
一、实验目的
1.学习并掌握视图的创建、使用、修改和删除。
2.学习并掌握索引的创建和使用。
3.学习并掌握数据库的连接操作。
4.掌握transact-SQL的变量定义方法。
5.了解并掌握游标的定义。
6.了解并掌握声明、打开、提取、关闭和释放游标。
7.了解并掌握使用游标修改数据。
二、实验项目内容
实验三:
1.(改编自3.1a.)建立视图,它给出了名叫Einstein的教师所教的所有学生的信息,保证结果中没有重复。
2.用SQL查询语句写出下面的查询。
a.显示所有教师的列表,列出他们的ID,姓名以及所讲授的课程段的编号。
对于没有讲授任何课程段的教师,确保将课程段的编号显示为0。
在你的查询中应该使用外连接,不能使用标量子查询。
b.使用标量子查询,不能使用外连接写出上述查询。
c.显示2010年春季开设的所有课程的列表,包括讲授教程段的教师的姓名。
如果一个课程段有不止一位教师讲授,那么有多少位教师,此课程段在结果中就出现多少次。
如果一个课程段没有任何教授,他也要出现在结果中,相应的教师名设置为“—”。
d.显示所有系的列表,包括每个系中教师的总数,不能使用标量子查询。
确保正确处理没有教师的系。
4.2不使用SQL外连接运算也可以在SQL中计算外连接表达式。
为了阐明这个事实,不使用外连接表达式重写下面的SQL查询。
a.select*fromstudentnaturalleftouterjointakes
b.select*fromstudentnaturalfullouterjointakes
实验四:
1.用游标的方式完成,使用大学模式,给Comp.Sci.系的每位老师涨10%的工资。
2.(改编自3.1a.)用游标的方式完成,使用大学模式,找出名叫Einstein的教师所教的所有学生的表示,保证结果中没有重复,并将他们赋值给变量student1、student2、、、studentn
三、实验过程或算法(源程序)
实验三:
1.
CreateviewEinstein_student
As
Fromstudent,instructor,advisor
2.
a.
select*
frominstructorleftouterjointeaches
b.
selectID,name,
(selectcount(course_id)asbianhao
fromteacheswhereteaches.ID=instructor.ID)
frominstructor
c.
fromteaches,instructor
d.
select*
fromdepartmentleftouterjoininstructor
3.
a.
select*
fromstudentnaturaljointakes
union
selectID,name,dept_name,tot_cred,NULL,NULL,NULL,NULL,NULL,NULL
fromstudentwherenotexists
(selectIDfromtakeswheretakes.ID=student.ID)
b.
(select*
fromstudentnaturaljointakes)
union
(selectID,name,dept_name,tot_cred,NULL,NULL,NULL,NULL,NULL,NULL
fromstudent
wherenotexists
(selectIDfromtakeswheretakes.ID=student.ID))
union
(selectID,name,dept_name,tot_cred,NULL,NULL,NULL,NULL,NULL,NULL
fromtakes
wherenotexists
(selectIDfromstudentwheretakes.ID=student.ID))
实验四:
1.
begintran
declareupsacursorfor
select*
frominstructor
wheredept_name='Comp.Sci.'
openupsa
fetchnextfromupsa
updateinstructor
wherecurrentofupsa
while@@FETCH_STATUS=0
begin
fetchnextfromupsa
updateinstructor
wherecurrentofupsa
end
committran
closeupsa
deallocateupsa
2.
declarestudentcursorFor
frominstructor,student,advisor
forreadonly
declare@idchar(20),@namechar(20),@dept_namechar(20),@tot_credchar(20)
openstudent
fetchnextFromstudentinto@id,@name,@dept_name,@tot_cred
WHILE@@FETCH_STATUS=0
BEGIN
PRINT@id+@name+@dept_name+@tot_cred
fetchnextFromstudentinto@id,@name,@dept_name,@tot_cred
END
closestudent
DEALLOCATEstudent
四、实验结果及分析和(或)源程序调试过程
实验三:
1.执行结果如下:
命令成功完成。
命令成功完成。
命令成功完成。
命令成功完成。
实验四:
1.
命令成功完成。
2.命令成功完成。