数据库第四次实验Word格式文档下载.docx
《数据库第四次实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库第四次实验Word格式文档下载.docx(13页珍藏版)》请在冰点文库上搜索。
![数据库第四次实验Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/c699e1e0-39ae-4a31-a5c3-229975d7dbcc/c699e1e0-39ae-4a31-a5c3-229975d7dbcc1.gif)
1.了解存储过程(系统存储过程以及用户自定义存储过程)基本概念和类型。
2.了解创建存、查看、执行、修改和删除储过程的SQL语句的基本语法。
3.了解触发器的基本概念和类型。
4.了解创建、查看、修改和删除触发器的SQL语句的基本语法。
5.了解ODBC数据库配置和编程知识。
5.3实验内容
1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。
T-SQL源码:
execsp_renamev_spj,v_spj_三建;
2.存储过程的创建与使用:
(1)使用SPJ数据库中的S表、P表、J表、SPJ表,创建一个带参数的存储过程—jsearch。
该存储过程的作用是:
当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME)。
createprocjsearch
@jnochar(4)
asselectsname,pname,jnamefroms,p,j,spj
wheres.sno=spj.snoandp.pno=spj.pnoandj.jno=spj.jnoandspj.jno=@jno;
执行:
execjsearch'
J1'
执行结果:
(2)创建一个带有输出游标参数的存储过程jsearch2,功能同),执行jsearch2,
--查询“J1”对应信息,并且将得到的结果用print语句输出到控制台。
(需要使用游标)
createprocjsearch2
@jnochar(10),@names_cursorcursorvaryingoutput
as
set@names_cursor=cursor
for
selects.sname,p.pname,j.jnamefroms,p,j,spj
wherespj.sno=s.snoandspj.pno=p.pnoandspj.jno=j.jnoandspj.jno=@jno
open@names_cursor
begin
declare@snamechar(10)
declare@pnamechar(10)
declare@jnamechar(10)
declare@mycursorcursor
execjsearch2'
j1'
@names_cursor=@mycursoroutput
fetchnextfrom@mycursorinto@sname,@pname,@jname
while(@@fetch_status=0)
begin
print'
sname:
'
+@sname+'
pname:
'
+@pname+'
jname:
+@jname
end
close@mycursor
deallocate@mycursor
end
(3)使用SPJ数据库中的S表,为其创建一个加密的存储过程—jmsearch。
当执行该存储过程时,将返回北京供应商的所有信息。
createprocjmsearchwithencryption
select*fromswheres.city='
北京'
;
sp_helptextjmsearch;
(4)使用系统存储过程sp_helptext查看存储过程jsearch,jmsearch的文本信息。
execsp_helptextjsearch;
(5)执行jmsearch存储过程,查看北京供应商的情况。
execjmsearch;
(6)删除jmsearch存储过程。
dropprocjmsearch;
3.触发器的创建与使用:
(1)在student数据库中建立一个名为insert_sdept的INSERT触发器,存储在S表中。
该触发器的作用是:
当用户向S表中插入记录时,如果插入的sdept值为’CS’,’IS’,’MA’以外的值,则提示用户“不能插入这样的纪录”,否则提示“记录插入成功”。
触发器创建成功后,
向S表插入记录,验证触发器是否正常工作。
droptriggerinsert_sdept
createtriggerinsert_sdeptons
forinsertas
if((selectsdeptfrominserted)in('
CS'
'
IS'
MA'
))
begin
记录插入成功'
else
rollbacktran
不能插入这样的纪录'
测试触发器
insertintosvalues('
95000'
'
Ricord'
男'
1986-1-1'
);
95008'
刘星'
1986/1/1'
BS'
(2)为student数据库中的S表创建一个名为dele_s1的DELETE触发器,该触发器的作用是禁止删除S表中的记录。
触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作。
createtriggerdele_s1ons
insteadofdelete
asprint('
不能删除'
)
deletefromswheres.sno='
95001'
(3)为student数据库中的S表创建一个名为dele_s2的DELETE触发器,该触发器的作用是删除S表中的记录时删除SC表中该学生的选课纪录。
触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作(SC表中的数据被正常删除)。
createtriggerdele_s2onsfordelete
asdeletefromscwheresc.snoin(selectsnofromdeleted)
(4)为student数据库中的S表创建一个名为update_s的UPDATE触发器,该触发器的作用是禁止更新S表中“sdept”字段的内容。
触发器创建成功之后,更新S表中“sdept”字段的内容,验证触发器是否正常工作。
createtriggerupdate_sonsforupdate
asifupdate(sdept)
print('
不能更新sdept字段'
rollbacktran
updatessetsdept='
wheresno='
执行结果:
(5)禁用update_s触发器。
禁用之后,更新S表中的“sdept”字段的内容,验证触发器是否还继续正常工作。
altertablesdisabletriggerupdate_s
(6)删除update_s触发器。
droptriggerupdate_s
4.ODBC配置以及程序调试(win8企业版系统):
(1)配置一个ODBC数据源,要求数据源名称:
student,其中包含s(学生信息)表。
1、
3、点击“添加按钮”,进入“创建新数据源向导”。
4、选择数据库驱动程序,因为是微软的SQLServer数据库,所以选择驱动为SQLServer。
点击完成。
5、进入如下页面,在名称,描述,和服务器三个位置分别自己写描述信息。
需要注意的是在输入服务器的时候,服务器的名称应该在启动SqlServer数据库管理程序时的服务器名称一样。
服务器名是Ricord为电脑名。
点击下一步。
6、用户登录验证,选择WindowsNT验证。
7、选择需要用到的数据库。
下拉列表列出了所有可以连接的数据库。
8、点击下一步。
其余选项默认,点击完成就可以。
结果出现已经测试画面,显示测试成功。
则我们的数据源DSN创建成功。
(2)阅读并运行实验给出的程序,理解ODBC编程,要求简单写出自己对这段程序的理解或者流程图,并且请给出程序运行结果示例图。
运行结果: