《数据库系统概论》实验报告

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

《数据库系统概论》实验报告

题目:实验三存储过程/触发器/ODBC编程

姓名班级学号日期

郭智超10010507 052626 2007-10-14

一. 实验内容和步骤结果

1.在查询分析器中使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。(5分)

源程序:create view V_SPJ

as select jno,sno

from spj

where jno='j2'

exec sp_rename 'V_SPJ','V_SPJ_三建'

执行结果:

变为

2.存储过程的创建与使用:(45分)

(1)使用SPJ数据库中的S表、P表、J表、SPJ表,创建一个带参数的存储过程—jsearch。

该存储过程的作用是:当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME)

源程序:create procedure jsearch

@jno char(4)

as select sname,pname,jname

from spj,s,p,j

where j.jno=@jno

and spj.jno=j.jno

and spj.sno=s.sno

and spj.pno=p.pno

(2) 执行jsearch存储过程,查询“J1”对应的JNAME,SNAME和PNAME。

源程序:exec jsearch j1

执行结果:

(3)使用系统存储过程sp_helptext查看存储过程jsearch的文本信息。

源程序:sp_helptext jsearch

执行结果:

(4)使用SPJ数据库中的S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作用是:当执行该存储过程时,将返回北京供应商的所有信息。

源程序:create procedure jmsearch with encryption

as select sno,sname,status,city

from s

where s.city='北京'

(5)执行jmsearch存储过程,查看北京供应商的情况。

源程序:exec jmsearch.

执行结果:

(6)删除jmsearch存储过程。

源程序:drop proc jmsearch

执行结果:jmsearch被删除。

3.触发器的创建与使用:(40分)

(1)在student数据库中建立一个名为insert_sdept的INSERT触发器,存储在S 表中。该触发器的作用是:当用户向S表中插入记录时,如果插入的sdept值

为’CS’,’IS’,’MA’以外的值,则提示用户“不能插入记录这样的纪录”,否

则提示“记录插入成功”。触发器创建成功之后,在企业管理器中向S表插入

记录,验证触发器是否正常工作。

源程序:

create trigger insert_sdept

on s

for insert

as declare @sdept char(2)

select @sdept=sdept

from inserted

if (@sdept='CS'or @sdept='IS'or @sdept='MA')

print ('记录插入成功!')

else print('不能插入这样的纪录')

begin

rollback tran

end

执行结果:当在企业管理器中插入sdept不是要求的时,无法插入。

(2)为student数据库中的S表创建一个名为dele_s1的DELETE触发器,该触发器的作用是禁止删除S表中的记录。触发器创建成功之后,在企业管理器中删除

S表中的记录,验证触发器是否正常工作。

源程序:

Create trigger dele_s1

On s

instead of delete

as

print('禁止删除!!!')

执行结果:s表中的记录无法删除!!!

(3)为student数据库中的S表创建一个名为dele_s2的DELETE触发器,该触发器的作用是禁止删除S表中的记录时删除SC表中该学生的选课纪录。触发器创

建成功之后,在企业管理器中删除S表中的记录,验证触发器是否正常工作(SC 表中的数据被正常删除)。

源程序:

create trigger dele_s2

on s

for delete

as

delete

from sc

where sno in (select sno from deleted)

执行结果:当s表中95001记录被删除时

Sc表中相应记录也被删除。

(4)为student数据库中的S表创建一个名为update_s的UPDATE触发器,该触发器的作用是禁止更新S表中“sdept”字段的内容。触发器创建成功之后,在

企业管理器中更新S表中“sdept”字段的内容,验证触发器是否正常工作。

源程序:

create trigger update_s

on s

instead of update

as if update (sdept)

print('禁止更新')

begin

rollback tran

end

执行结果:s表中开始纪录是:

相关文档
最新文档