数据库应用报告
学 院:计算机学院班 级:姓 名: 学 号:课程名称:数据库应用(实验四)
第八章存储过程与触发器
1.实验目的
1)理解存储过程和触发器的作用。
2)学会使用对象资源管理器和SQL编辑器创建存储过程。 3)学会使用对象资源管理器和SQL编辑器创建触发器。 4)学会存储过程和触发器的管理方法。
2.实验准备
1)在服务器上创建好student数据库。 2)在数据库中创建好各个表。 3)对表中输入数据。
3.实验内容和步骤
1)独立实践:编写一个存储过程来对stud_info表进行检索、插入、修改、删除操作,然后调用这个存储过程。
createprocedurestud_proc(
@stud_idchar(10), @name nvarchar(4), @birthday datetime, @gender nchar(1),
@address nvarchar(20), @telcodechar(12), @zipcodechar(6), @mark decimal(3) )as begin
select*fromstud_infowherestud_id= @stud_id insertintostud_info
values(N'0401010812', @name, @birthday, @gender,
@address,@telcode, @zipcode, @mark )
updatestud_info
set name = @name,
birthday = @birthday, [address] = @address, telcode= @telcode, zipcode= @zipcode, mark = @mark
wherestud_id= @stud_id
deletefromstud_infowhere @stud_id=N'0401010812' end
2) 独立实践:编写一个触发器,在对Student数据库中的表stud_info执行插入、更新、和删除3种操作后给出响应的提示。 createtriggerstud_trigger on stud_info
fordelete,update,insert as begin
print('There comes change') end
第九章事务与游标
1.实验目的
1)了解SQL SEVER程序设计的方法。
2)学会使用批处理、流程控制、事务处理、锁、游标的使用方法。
2.实验准备
1)在服务器上创建好student数据库。 2)在数据库中创建好各个表。 3)对表中输入数据。
3.实验内容和步骤
1、 事务处理:运用事务处理将Student数据库中课程表lesson_info中的多媒体技术课程标号course_id有040101006改成0401010116。 begintranstud_transaction
updatelesson_infosetcourse_id=N'0401010116'wherecourse_id=N'0401010106'savetranstud_savepoint
updateteach_schedulesetcourse_id=N'0401010116'wherecourse_id=N'0401010106'
updatestud_gradesetcourse_id=N'0401010116'wherecourse_id=N'0401010106'
updateteacher_info setcourse_id=N'0401010116'wherecourse_id=N'0401010106' rollbacktranstud_savepoint
2、 ①、制造死锁:在SQL编辑器中输入并执行如下操作。 setdeadlock_priority low begintransaction
updatestud_infoset mark = 565 wherestud_id=N'0401030101' ②、新建一个查询,输入如下语句并执行: begintransaction
updatestud_gradeset grade = 65 wherestud_id=N'0401040112' ③、切换到①中,输入并执行如下语句 updatestud_gradeset grade = 67 wherestud_id=N'0401040112' 此时事物一和二都锁住了stud_grade表中的stud_id = N'0401040112'的记
录,第一个 事物被第二个事物阻止,但没有发生死锁。 ④、切换到②,输入并执行如下语句:
updatestud_infoset mark = 568 wherestud_id=N'0401030101' 此时由于事物一等待事物二释放stud_grade中的stud_id = N’0401040112’
的记录 锁, 而事物二有等待事物一释放stud_info中的stud_id =
N’0401030101’的记录锁,这样 相互等待而造成死锁。而因为第一个事物的deadlock_priority设置成low,SQL Server 能自动检测并能将其解除,所以第一个事物立即终止。 3、 游标的使用: ① 定义一个游标stud_cursor,逐行读取stud_info中的数据,
select*fromstud_info go
declarestud_cursorcursorforselect*fromstud_info openstud_cursor
fetchnextfromstud_cursor while@@FETCH_STATUS= 0 begin
fetchnextfromstud_cursor
end
closestud_cursor
deallocatestud_cursor ② 定义一个游标stud_cursor 删除stud_info中第一行数据。
select*fromstud_info go
declarestud_cursorcursorforselect*fromstud_info openstud_cursor
fetchnextfromstud_cursor deletefromstud_info while@@FETCH_STATUS= 0 begin
fetchnextfromstud_cursor end
closestud_cursor
deallocatestud_cursor ③ 定义一个游标stud_cursor,更新stud_info中的数据
select*fromstud_info go
declarestud_cursorcursorforselect*fromstud_info openstud_cursor
fetchnextfromstud_cursor updatestud_info
setbh= 111 wherecurrentofstud_cursor closestud_cursor
deallocatestud_cursor
实验体会
通过本次实验,我加深了对课本知识的理解。学习和实践了存储过程,触发器,事务和游标的使用。实验课就是自己动手去学习并掌握自己课堂所学到知识,实现对工具的熟练应用,但是我觉得仅仅靠这短短的实验课是不能达到所预期的目标的,我们应该在课下去多动手实践,才会取得更好的效果。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据库应用实验四在线全文阅读。
相关推荐: