数据库存储过程与触发器实验报告

合集下载

存储过程及触发器实验报告

存储过程及触发器实验报告

存储过程及触发器实验报告实验目的:1、了解存储过程及其应用;2、了解触发器及其应用;3、掌握使用存储过程及触发器完成数据操作的方法。

实验过程:1、存储过程存储过程是指一组为了完成特定功能的SQL语句集合。

存储过程可以接收传入参数并返回处理结果。

存储过程的好处是可以减少网络流量,提高性能,增加安全性。

在本次实验中,我们将学习如何创建存储过程。

首先,在MySQL中打开MySQL Workbench,进入我们的实验数据库。

然后我们就可以创建一个存储过程了。

创建存储过程的语法如下:CREATE PROCEDURE procedure_name ()BEGIN-- SQL statementsEND;在这个语法中,procedure_name是我们想要创建的存储过程的名称。

在BEGIN和END 之间,我们可以输入一组SQL语句,这些语句将组成存储过程的主体内容。

我们可以以一个创建一个简单的存储过程作为例子,这个存储过程的作用是输出一条信息。

我们将这个存储过程命名为print_message。

在上面的语句中,我们定义了一个存储过程,它被命名为print_message。

它只包含一条SELECT语句,这条语句将输出Hello, World!这个字符串。

创建完存储过程之后,我们可以通过CALL语句来调用它:CALL print_message();执行这个语句后,我们将会看到Hello, World!这个字符串输出到屏幕上。

2、触发器触发器是一种被动的对象,它是由数据库管理系统在数据表上自动执行的一些操作。

当数据表中发生某些指定的操作时,触发器就会被调用执行。

触发器通常用于数据表中的数据变更操作,比如插入、更新和删除。

在本次实验中,我们将学习如何创建和使用触发器。

在MySQL中创建触发器的语法如下:CREATE TRIGGER trigger_name{BEFORE | AFTER} trigger_event ON table_nameFOR EACH ROW trigger_body;在这个语法中,trigger_name是我们想要创建的触发器的名称。

存储过程和触发器(数据库实验5)

存储过程和触发器(数据库实验5)

数据库基础与实践实验报告实验五存储过程和触发器班级:惠普测试142学号:**********姓名:***日期:2016-11-141 实验目的:1)掌握SQL进行存储过程创建和调用的方法;2)掌握SQL进行触发器定义的方法,理解触发器的工作原理;3)掌握触发器禁用和重新启用的方法。

2 实验平台:操作系统:Windows xp。

实验环境:SQL Server 2000以上版本。

3 实验内容与步骤利用实验一创建的sch_id数据库完成下列实验内容。

1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。

存储过程定义代码:CREATE PROCEDURE JSXX_PROCASSELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND o=o存储过程执行语句与执行结果截图:EXECUTE JSXX_PROC2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。

存储过程定义代码:CREATE PROCEDURE XM_PROC @sname VARCHAR(100)ASBEGINIF EXISTS(SELECT NULL FROM S WHERE sn=@sname)SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE o=o AND SC.sno=S.sno ANDS.sn=@snameELSEPRINT'无该姓名的同学。

'END运行截图:3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业),统计并显示该专业各年龄段男、女生人数。

如果没有该专业,则显示“无此专业”。

存储过程定义代码:CREATE PROCEDURE XBNL_PROC@departName VARCHAR(30)='计算机',@begin INT,@end INTASDECLARE @numOfBoys INTDECLARE @numOfGirls INTDECLARE @d# VARCHAR(3)DECLARE @result VARCHAR(50)BEGINSELECT @d# = dno FROM D WHERE dn=@departNameIF @d# IS NOT NULLBEGINSELECT @numOfBoys =COUNT(sno)FROM S WHERE age BETWEEN @begin AND @end AND dno=@d# AND sex='男'SELECT@numOfGirls =COUNT(sno)FROM S WHERE age BETWEEN@begin AND@end AND dno=@d# AND sex='女'SET @result = @departName+'专业年龄在'+CAST(@begin AS VARCHAR(3))+'-'+CAST(@end AS VARCHAR(3))+'之间的男生有'+CAST(@numOfBoys AS VARCHAR(3))+'人,'+'女生有'+CAST(@numOfGirls AS VARCHAR(3))+'人'ENDELSESET @result='无此专业。

数据库 存储过程和触发器 实验报告

数据库 存储过程和触发器 实验报告

实验报告课程名称:数据库原理与应用上机实验名称:存储过程和触发器专业班级:计算机科学与技术1103 指导教师:卫凡学生姓名:贾梦洁学期:2013-2014学年第一学期实验报告课程名称数据库原理与应用实验名称存储过程和触发器姓名贾梦洁学号 201107010330专业班级计1103实验日期2013年12月5日成绩指导教师卫凡一、实验目的1.加深和巩固对存储过程和触发器概念的理解。

2. 掌握触发器的简单应用。

3. 掌握存储过程的简单应用。

二、实验环境硬件环境:PC机软件环境:操作系统为Microsoft Windows 2000或以上版本。

数据库管理系统为Microsoft SQL Server 2000标准版或企业版。

三、实验内容1. 熟悉运用SQL Server企业管理器和查询分析器进行存储过程的创建和删除。

2. 熟悉运用SQL Server企业管理器和查询分析器进行触发器的创建和删除。

四、实验步骤1.建立存储过程class_info ,当执行该过程时,只要给出学生的姓名,就能查到他们的班级名称。

使用存储过程class_info查找学生“张强”的信息。

2.删除存储过程 class_info3.使用触发器实现S,SC表的级联删除删除前:删除后:4.在数据库中创建一个触发器,当向S表中插入一条记录时,检查该记录的学号在S表中是否存在,如果有则不允许插入。

5.创建基于学生表的插入触发器,当向学生表插入一条记录时,返回一条信息:“欢迎新同学”。

6.为S表创建触发器s_insert,当向S表中插入数据时,要求学号必须以"2002"开头,否则取消插入操作。

五、实验总结这次的实验总体来说较前两次简单,因为很多题目都是书上的例题。

不过通过这次实验,也把上课没有认真听讲的部分给补上了。

至少让我不要在见到这些题目的时候觉得陌生,我觉得对我的数据库期末考试是有一定帮助的。

虽然数据库对我来说真的好苦手,但是我相信只要努力了总能做到的。

数据库原理课程设计报告报告实验创建存储过程与触发器

数据库原理课程设计报告报告实验创建存储过程与触发器

存储过程与触发器实验日期和时间:2016 年 5 月13 日、星期五第节实验室:DJ2-信息管理实验室班级:学号:姓名:实验环境:1.硬件:笔记本电脑2.软件:SQL Server 2012实验原理:存储过程概念:存储过程是事先编好的,存储在数据库中的一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。

存储过程可以接受用户的输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言(DDL)和数据操作语言(DML)语句,然后返回输入参数。

触发器概念:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。

触发器经常用于加强数据的完整性约束和业务规则等。

实验任务:此作业成绩得分根据你完成的任务的难度和数量评分,完成后在实验室给老师演示验收,课后提交电子版报告。

如额外完成自拟题目应当事先将所拟题目提交给老师或在报告中明确标注题意。

假定有学校的图书馆管理信息系统,可以用于日常管理书库和同学们的借还书工作。

以下列出参考的库表情况:根据管理的业务需求来分析,该管理信息系统的数据库应至少包括如下数据表:(打★号的是必须有的表)1.★图书现有库存表。

作用:记录图书的现有库存情况。

至少包括:书号、书名、作者、简介、类别、价格、出版社、出版日期、现有库存数量、最小库存量、库存总量、库存位置等。

2.★读者信息表。

作用:记录读者信息。

至少包括:读者编号、证件类型、证件号码、姓名、性别、职业(可填写教师、学生、教工、其它……)、所属单位、地址、联系电话等。

3.★借书记录表。

作用:记录借书情况,以及是否归还。

至少包括:借阅ID(主键,可设置为自动编号)、书号、读者编号、借阅数量、借阅日期、是否归还、管理员编号……等。

存储过程和触发器(实验报告)

存储过程和触发器(实验报告)
CREATE PROCEDURE stu_en
WITH ENCRYPTION AS
SELECT*
FROM student_info
WHERE性别='男'
EXEC stu_en
DROP PROCEDURE stu_en
4.使用grade表。
(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生各门课程的平均成绩。
CREATE PROC stu_g_r @stu_no varchar(8)=NULL,
@stu_score real OUTPUT
AS
SELECT@stu_score=AVG(分数)
FROM grade
WHERE (学号=@stu_no)
(2)执行存储过程stu_g_r,输入学号0002。
DECLARE @score real
WHERE (a.姓名=@stu_name)
EXEC stu_g_p ‘刘卫平’
sp_helptext stu_g_p
3.使用student_info表。
(1)创建一个加密的存储过程stu_en,查询所有男学生的信息。
(2)执行存储过程stu_en,查看返回学生的情况。
(3)使用Transact-SQL语句DROP PROCEDURE删除存储过程stu_en。
(3)掌握通过SQL Server管理平台和Transact-SQL语句Alter procedure修改存储过程的方法;
(4)掌握通过SQL Server管理平台和Transact-SQL语句Drop procedure删除存储过程的方法;
(5)掌握通过SQL Server管理平台和Transact-SQL语句Create trigger创建触发器的方法和步骤;

存储过程-触发器-ODBC数据库编程-实验报告

存储过程-触发器-ODBC数据库编程-实验报告

《数据库系统概论》实验报告题目:实验四存储过程/触发器/ODBC 数据库编程姓名 班级学号 日期2010-10-25一. 实验内容和步骤结果1. 使用系统存储过程(sp_rename)将视图“V_SPJ ”更名为“V_SPJ_三建”: sp_rename 'V_SPJ','V_SPJ_三建'2.存储过程的创建与使用:(共计45分)(1) 使用SPJ 数据库中的S 表、P 表、J 表、SPJ 表,创建一个带参数的存储过程—jsearch 。

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

执行jsearch 存储过程,查询“J1”对应的信息。

(10分)CREATE Procedure jsearch (@SPJ_JNO char (10)) AS BEGINSELECT SNAME ,PNAME ,JNAME FROM SPJ ,S 表,P 表,J 表WHERE @SPJ_JNO =SPJ .JNO AND SPJ .JNO =J 表.JNO ANDSPJ.PNO=P表.PNO AND SPJ.SNO=S表.SNO END;jsearch'J1'(2)创建一个带有输出游标参数的存储过程jsearch2,功能同1),执行jsearch2,查询“J1”对应信息,并且将得到的结果用print语句输出到控制台。

(10分)CREATE PROCEDURE jsearch2(@jno char(10),@SPJ_CURSOR CURSOR VARYING OUTPUT)ASset @SPJ_CURSOR=CURSORFORSELECT J表.JNAME,P表.PNAME,S表.SNAMEfrom S表,P表,J表,SPJwhere SPJ.JNO=@jno andS表.SNO=SPJ.SNO andJ表.JNO=SPJ.JNO andP表.PNO=SPJ.PNOopen @SPJ_CURSORdeclare @jname char(10),@sname char(10),@pname char(10)declare @SPJ_CURSOR cursorexec jsearch2 'J1',@SPJ_CURSOR outputfetch next from @SPJ_CURSOR into @jname,@pname,@snamewhile(@@FETCH_STATUS=0)beginprint(@jname+@pname+@sname)fetch next from @SPJ_CURSOR into @jname,@pname,@sname endclose @SPJ_CURSORdeallocate @SPJ_CURSORgo(3)使用SPJ数据库中的S表,为其创建一个加密的存储过程—jmsearch。

存储过程与触发器实验报告

存储过程与触发器实验报告

存储过程与触发器实验报告一、引言存储过程和触发器是数据库中常用的高级功能,它们能够提高数据库的性能、数据一致性和安全性。

本实验报告将详细介绍存储过程和触发器的概念、用途以及实际应用。

二、存储过程2.1 概念存储过程是一组预定义的SQL语句集合,它们被命名并存储在数据库中,可以作为一个单元来调用和执行。

存储过程可以接受参数,并返回一个或多个结果集。

存储过程可以在应用程序层面减少网络传输,提高数据库性能。

2.2 用途存储过程的应用非常广泛,主要用于以下几个方面: 1. 数据库业务逻辑封装:将复杂的业务逻辑封装到存储过程中,使应用程序只需调用存储过程而不需要编写大量的SQL语句,简化应用程序的开发。

2. 数据库性能优化:通过存储过程可以减少网络传输,提高数据库性能。

3. 数据库安全性:通过存储过程,可以实现对数据库的访问权限控制,提高数据库的安全性。

2.3 示例下面以一个简单的示例来说明存储过程的使用。

2.3.1 创建存储过程CREATE PROCEDURE `get_employee_by_department` (IN department_id INT)BEGINSELECT * FROM employee WHERE department_id = department_id;END2.3.2 调用存储过程CALL `get_employee_by_department`(1);2.4 优化技巧为了进一步提高存储过程的性能,可以采用以下优化技巧: 1. 减少存储过程的参数:过多的参数会增加网络传输的负担,应尽量减少存储过程的参数数量。

2. 避免长时间占用资源:存储过程应尽量快速执行,避免长时间占用数据库资源。

三、触发器3.1 概念触发器是与表相关联的特殊类型的存储过程,它在表的数据发生变化时自动执行。

触发器可以监视INSERT、UPDATE或DELETE等操作,并在这些操作发生时自动触发执行一段预定义的代码。

存储过程及触发器实验报告

存储过程及触发器实验报告

数据库技术与应用实验报告七班级:机械因材学号: 16 姓名:高永吉一:实验名称:存储过程及触发器二,实验目的:⑴ 使用系统常用的存储过程;⑵ 掌握存储过程的创建及应用(3) 理解触发器的概念;(4) 掌握触发器的创建及应用。

三.实验内容、过程和结果:存储过程1创建一个存储过程,查看学号为1(根据实际情况取)的学生的信息,包括该学生的学号,班级编号,姓名。

(提示:查询涉及到表Student)2执行1中创建的存储过程。

3使用输入参数创建题1中的存储过程。

题1中所创建的存储过程只能学号为1的学生信息进行查看,要想对其他学生进行查看,需要进行参数传递。

4执行3中创建的存储过程,(1)按位置传递参数;(2)通过参数名传递参数;5触发器1)在课程表Course上创建一个触发器,该触发器被操作DELETE所触发,且要求触发触发器的DELETE语句在执行被取消。

2)在表Student中建立插入触发器, 插入一条记录时,若年龄>100或者年龄<=0,拒绝插入记录并显示:“年龄不符合规定,无法插入此记录!”;3)创建一个触发器,如果在Student表中添加或更改数据,向客户端显示一条消息“你正在插入或修改学生表的数据”,要求触发触发器的DELETE、UPDATE语句被执行。

4 )为Course表创建一个名称为my_trig的触发器,当用户成功删除该表中的一条或多条记录时,触发器自动删除Student表中与之有关的记录。

5 )使用系统存储过程查看创建的触发器。

图一:创建一个存储过程,查看Tno为1(根据实际情况取)的教师的信息,包括该教师的姓名,sal图二执行1中创建的存储过程。

图三使用输入参数创建题1中的存储过程。

图四执行3中创建的存储过程,(按位置传递参数)图五执行3中创建的存储过程通过参数名传递参数;图六使用系统存储过程查看3中创建的存储过程图七删除3中创建的存储过程。

图八在Teacher上创建一个触发器,该触发器被操作DELETE所触发,且要求触发触发器的DELETE语句在执行被取消。

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

南昌航空大学实验报告
二00 年月日
课程名称:数据库概论实验名称:数据库存储过程与触发器
班级:122031 姓名:同组人:
指导教师评定:签名:
一、实验环境
1.Windows2000或以上版本;
2.SQLServer 2005。

二、实验目的
熟悉不同数据库的存储过程和触发器,重点实践SQL Server2005,掌握SQL Server2005中有存储过程与触发器的相关知识。

三、实验要求
完成实验指导书中p115-7和p132 -4。

四、实验步骤及参考源代码
1.创建与执行存储过程
create procedure C_P_Proc as
select distinct o,cna,pna,num
from paper,customer,cp
where o=o and paper.pno=cp.pno and cna='李涛' or cna='钱金浩' go
execute C_P_Proc
2.删除存储过程
drop procedure C_P_Proc
3.创建插入触发器
create trigger TR_PAPER_I ON PAKER12203125
FOR INSERT AS
DECLARE @appr float
DECLARE @apno int
SELECT @appr=ppr,@apno=pno from inserted
begin
if @appr<0 or @appr is null
begin
raiserror('报纸的单价为空或小于!',16,1)
update paper set ppr=10
where paper.pno=@apno
end
end
4.创建删除触发器
create Trigger TR_PAPER_D on PAKER12203125
after delete as
declare @ipno char(6)
declare @icount int;
select @icount= count(*) from deleted,cp
where deleted.pno=cp.pno
if @icount>=1
begin
select @ipno=pno
from deleted
raiserror('级联删除cp表中的数据',16,1)
delete from cp where cp.pno=@ipno
end
5.创建修改触发器
create trigger TR_PAPER_U ON PAKER12203125
for update as
declare @ippr float
select @ippr=ppr from inserted
if @ippr<0 or @ippr is null
begin
raiserror('输入单价不正确',16,1)
rollback transaction
end
6. 分别对PAKER12203125表进行插入、修改、删除操作
insert into PAKER12203125 (pno,pna,ppr)values('000006','江西日报','1') insert into PAKER12203125 (pno,pna,ppr)values('000007','江南都市报','15.5') delete from PAKER12203125 where pno='000001'
update PAKER12203125 set ppr=12.5 where pno='000002'
update PAKER12203125 set ppr=-2 where pno='000004'
五、实验结果
12
3.4.56
六、实验体会
试验过后,巩固了自己在课堂上所学的知识,并加深了记忆与了解,对以后的使用有很大作用
在实验过程中,遇到一些困难,经过自己不断查找书籍并询问老师来解决问题,提高了自己的逻辑思维能力和动手能力。

相关文档
最新文档