数据库存储器与触发器实验报告(互联网+)

合集下载

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

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

存储过程及触发器实验报告实验目的: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='无此专业。

触发器实验报告-互联网类

触发器实验报告-互联网类

触发器实验报告-互联网类关键信息项:1、实验目的2、实验环境3、实验步骤4、实验结果5、结果分析6、问题与解决7、总结与展望1、实验目的11 深入理解触发器的工作原理和应用场景。

12 掌握在互联网环境中创建、使用和调试触发器的技能。

13 通过实验,探究触发器对数据库操作的影响以及在保证数据一致性和完整性方面的作用。

2、实验环境21 数据库管理系统:选用了广泛应用于互联网领域的具体数据库名称,版本为具体版本号。

22 操作系统:操作系统名称及版本。

23 开发工具:使用了开发工具名称及版本,用于编写和执行 SQL 语句。

3、实验步骤31 创建数据库和相关表311 首先,创建一个名为数据库名称的数据库。

312 在该数据库中,创建了两张相关联的表,分别是表 1 名称和表2 名称。

313 表 1 名称表包含了列 1 名称、列 2 名称等列,用于存储具体数据描述。

314 表 2 名称表包含了列 3 名称、列 4 名称等列,用于存储具体数据描述。

32 定义触发器321 为了实现特定的业务逻辑,在表 1 名称表上创建了一个触发器名称 1触发器。

322 该触发器在触发事件 1(如插入、更新、删除等)发生时被触发。

323 触发器的执行逻辑是详细的执行步骤和逻辑判断。

33 进行数据操作331 执行一系列的插入、更新和删除操作,对表 1 名称和表 2 名称中的数据进行修改。

332 记录每次操作的数据和执行结果。

34 观察触发器的触发情况341 在执行数据操作的过程中,密切观察触发器是否按照预期被触发。

342 检查触发器执行后对相关表数据的影响。

4、实验结果41 成功创建了数据库、表和触发器,并按照预定的逻辑执行了数据操作。

42 在数据操作过程中,触发器在相应的触发事件发生时被正确触发。

43 触发器的执行结果符合预期,对相关表的数据进行了正确的修改和维护。

5、结果分析51 对实验中触发器的触发时机和执行效果进行详细分析。

52 比较预期结果和实际结果,评估触发器的准确性和可靠性。

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

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

实验报告课程名称:数据库原理与应用上机实验名称:存储过程和触发器专业班级:计算机科学与技术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"开头,否则取消插入操作。

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

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

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

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

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

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

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

二、实验目的1. 掌握存储过程的创建,修改,使用,删除;2. 掌握触发器的创建,修改,使用,删除。

三、实验步骤及参考源代码1.创建过程代码:CREATEPROCEDURI_P_Proc( @ccna varchar (10), @cnochar (4) OUTPU,T@cna varchar (10) OUTPU,T@pnavarchar (20) OUTPU,T@numint OUTPUTASSELECT@cna=cna, @cno=cp. cno, @pna=pna, @num=numFROMcp , customer , paperWHEREcustomer . cno=cp. cno ANDpaper . pno=cp. pno ANDcna =@ccna;6.执行存储过程C_P_Pro,实现对李涛,钱金浩等不同顾客的订阅信息查询execute C_P_Proc @nam=e' 李涛'execute C_P_Proc @nam=e' 钱金浩'7,删除存储过程C_P_PrccDROPPROCEDURCE_P_PROC(4)在DingBao数据库中针对PAPER创建插入触发器TR_PAPER_I删除触发器TR_PAPER_D修改触发器TR_PAPER_J具体要求如下。

<1>对PAPER的插入触发器:插入报纸记录,单价为负值或为空时,设定为10 元。

CREATE TRIGGER TR_PAPER_I ON paperFOR INSERT ASDECLARE @ippr FLOAT;declare @ipno int;SELECT @ippr=ppr,@ipno=pno from insertedbeginif @ippr<0 or @ippr is NULLbeginraiserror(' 报纸的单价为空或小于零!',16,1)update paper set ppr=10where paper.pno=@ipnoendendINSERTINTO paper ( pno, pna, ppr ) VALUES( '000007' ,' 青年报' ,- 2)select * from paper<2>对PAPER勺删除触发器:要删除的记录,若正在被订阅表CP参照时,级联删除订阅表中相关的订阅记录。

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

存储过程和触发器(实验报告)
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创建触发器的方法和步骤;

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

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

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

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

二、存储过程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等操作,并在这些操作发生时自动触发执行一段预定义的代码。

数据库触发器实验实训报告

数据库触发器实验实训报告

一、实验背景随着信息技术的飞速发展,数据库技术在各行各业中的应用越来越广泛。

数据库触发器作为数据库管理系统的重要组成部分,具有强大的功能,能够帮助用户实现复杂的数据操作和业务逻辑。

为了提高学生对数据库触发器的理解与应用能力,我们开展了数据库触发器实验实训。

二、实验目的1. 掌握触发器的概念、作用及分类;2. 熟悉触发器的创建、修改和删除操作;3. 学会使用触发器实现业务规则和数据完整性;4. 提高数据库编程能力,为以后的实际工作打下基础。

三、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 编程语言:Python四、实验内容1. 触发器的基本概念触发器是一种特殊的存储过程,它在特定事件发生时自动执行。

触发器可以分为两大类:DML触发器和DDL触发器。

DML触发器包括INSERT、UPDATE和DELETE触发器,用于在数据操作时执行特定的逻辑;DDL触发器用于在数据定义语言操作时执行特定的逻辑。

2. 触发器的创建以MySQL为例,创建触发器的语法如下:DELIMITER //CREATE TRIGGER 触发器名称BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名BEGIN-- 触发器逻辑END;//DELIMITER ;例如,创建一个名为before_insert_trigger的触发器,在向bookinfo表插入数据之前执行:DELIMITER //CREATE TRIGGER before_insert_triggerBEFORE INSERT ON bookinfoFOR EACH ROWBEGINIF NEW.price > 100 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Book price should not exceed 100';END IF;END;//DELIMITER ;3. 触发器的修改修改触发器的语法与创建触发器类似,只需要使用ALTER TRIGGER语句:ALTER TRIGGER 触发器名称BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名BEGIN-- 触发器逻辑END;例如,修改上述触发器,限制书籍价格不超过50元:DELIMITER //ALTER TRIGGER before_insert_triggerBEFORE INSERT ON bookinfoFOR EACH ROWBEGINIF NEW.price > 50 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Book price should not exceed 50';END IF;END;//DELIMITER ;4. 触发器的删除删除触发器的语法如下:DROP TRIGGER IF EXISTS 触发器名称;例如,删除上述触发器:DROP TRIGGER IF EXISTS before_insert_trigger;5. 触发器与存储过程的区别触发器和存储过程都是数据库编程的重要工具,但它们之间存在一些区别:(1)触发器在特定事件发生时自动执行,而存储过程需要手动调用;(2)触发器只能包含一个语句块,而存储过程可以包含多个语句块;(3)触发器不能返回结果集,而存储过程可以返回结果集。

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

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

数据库技术与应用实验报告七班级:机械因材学号: 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中创建的存储过程。

DELETE语句在执行被取消。

插入记录并显示:“sal不符合规定.无法插入此记录!”;在插入或修改教师表的数据”.要求触发触发器的DELETE、UPDATE语句被执行。

数据库触发器实验报告

数据库触发器实验报告

数据库触发器实验报告一、引言随着信息技术的发展,数据处理已经成为了各种科学技术领域中至关重要的一环。

在数据处理系统中,数据库是必不可少的组成部分之一。

而数据库中的触发器就是实现数据库自动化的重要手段之一。

本文对数据库触发器的实验进行了详细的分析和总结,以期为大家提供一些有关数据库的实际应用经验和理论指导。

二、实验开展过程本次实验选择的是MySQL 5.0版本数据库,我们通过多个实验案例来了解和掌握触发器的实际应用。

1.定义触发器我们首先通过定义触发器的方法来了解触发器的基本概念和语法结构。

通过设置一些触发器的触发条件和执行程序,我们可以实现对数据库的自动化维护和更新。

2. 插入触发器然后我们通过插入触发器的实验案例来掌握数据库自动插入数据的具体实现方法。

这样,无须手动输入每一条数据,数据库就可以自动将新的数据插入到数据库中去。

这样做的好处在于可以减少人为错误的发生,并且提高了数据处理的效率。

3. 修改触发器接下来,我们又进行了修改触发器的实验案例。

通过设置一些修改触发器的触发条件和执行程序,可以在数据库中修改一些指定数据,或者将一些数据更新到数据库中。

4. 删除触发器最后,我们还进行了删除触发器的实验案例。

通过设置一些删除触发器的触发条件和执行程序,可以将数据库中的指定数据逐一删除掉,从而实现数据库的自动化维护和更新。

三、实验结果分析通过本次实验,我们加深了对数据库触发器的理解和掌握。

同时,我们也发现在实际应用中,触发器设计的精细度和实现的合理度对于数据库的使用效果有着十分重要的影响。

因此,我们应该在实际操作过程中,注重考虑实际应用场景和条件,来设计和优化触发器的应用方案。

四、总结本文主要介绍了数据库触发器的基本概念、使用步骤和实验案例。

触发器的应用范围非常广泛,在实际应用中有着极为重要的作用。

通过对本次实验的掌握和总结,我们可以更好地理解并掌握数据库触发器的应用方法和原理,为后续在实际工作中使用数据库打下了基础。

触发器——实验报告

触发器——实验报告

触发器——实验报告本次实验主要针对的是数据库的触发器,触发器可以在数据库中对指定的事件进行响应,可以在事件发生前或发生后对相关的SQL语句进行处理,从而实现对数据的限制、约束等相关操作。

本次实验的目标是通过实例了解什么是触发器,如何创建触发器以及触发器的应用。

一、实验环境本次实验使用MySQL数据库作为实验环境。

二、实验步骤1. 创建数据库和表结构首先,需要创建一个新的数据库,并新建一张表来进行触发器的测试。

这里,我们创建一个名为“students”的数据库和“grades”表。

表结构如下:CREATE TABLE grades(id int(11) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;2. 创建触发器接下来,我们要创建一个触发器来对数据进行限制。

比如,我们想对成绩的输入进行限制,限制只能输入0-100之间的分数。

创建触发器的语法如下:CREATE TRIGGER trigger_name{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_nameFOR EACH ROWBEGIN-- 触发器的处理END;以上语法中,trigger_name是触发器的名称,table_name是触发器所作用的表名,BEFORE或AFTER关键字表明触发器是在事件发生前还是发生后进行处理的,在本次实验中,我们使用BEFORE关键字,表示在事件发生前进行处理。

触发器可以应用在INSERT、UPDATE、DELETE事件上,我们用INSERT事件做例子,表示在插入数据之前实现相应的数据限制。

触发器中的处理代码可以是任何合法的SQL语句,其中可以使用NEW和OLD关键字来引用触发器作用的记录,NEW表示要插入或者修改的记录,OLD表示删除的记录。

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

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

信息工程学院实验报告课程名称:《数据库原理》实验项目名称:存储过程与触发器一、实验目的:(1)了解存储过程的概念(2)掌握创建、执行存储过程的方法(3)了解查看、修改和删除存储过程的方法(4)了解触发器的概念(5)掌握创建触发器的方法(6)掌握查看、修改、删除触发器信息的方法二、实验设备与器件Win7 +Sql server 2008三、实验内容与步骤(一)存储过程运行实验四附录中的SQL语句,准备实验数据。

然后创建下列存储过程,并调试运行存储过程,查看运行结果。

1.在企业管理器中创建一个名为StuInfo的存储过程,完成的功能是在student表中查询系号为D2的学号、姓名、性别、年龄、系号的内容。

CREATE PROCEDURE StuInfoASSELECT SNO AS学号,SNAME AS姓名,SSEX AS性别,SAGE AS年龄,DNO AS系号FROM studentWHERE DNO='D2'结果:stuinfo2.使用T_SQL语句创建存储过程,完成的功能是在表student,course和study中查询以下字段:学号、姓名、性别、课程名称、考试分数。

use mydb--查询是否已存在此存储过程,如果存在,就删除它if exists(select name from sysobjectswhere name='StuScoreInfo'and type='P')drop procedure StuScoreInfogo--创建存储过程CREATE PROCEDURE StuScoreInfoasselect student.sno as学号,sname as姓名,ssex as性别,ame as课程名称,study.grade as考试分数from student,course,studywhere student.sno=study.sno and o=o结果:StuScoreInfo3.使用T_SQL语句创建一个带有参数的存储过程stu_sno_info,该存储过程根据传入的学生编号,在student表中查询此学生的信息。

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

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

存储过程与触发器实验报告本实验旨在探究存储过程与触发器的概念、作用、使用范围和创建过程,并且通过编写相关的示例代码来展示它们的实际应用。

一、实验原理1. 存储过程存储过程是一组预定义好的 SQL 语句,可以重复使用并且可以直接被调用。

它类似于程序中的函数,可以接受参数、返回值、流程控制等。

2. 触发器触发器是与数据库表相关的事件响应机制,可以在数据库表上定义一些触发条件,当满足这些条件时就会触发执行一些操作,比如插入、更新或删除数据。

二、实验步骤1. 存储过程的创建与使用(1)创建一个用于统计某个用户的订单数量的存储过程。

```DELIMITER //CREATE PROCEDURE `getOrderCount`(IN p_userid INT, OUTp_count INT)BEGINSELECT COUNT(*) INTO p_count FROM orders WHERE user_id = p_userid;END//DELIMITER ;```(2)调用这个存储过程,并输出结果。

```CALL getOrderCount(123, @count);SELECT @count AS 'order_count';```2. 触发器的创建与使用(1)创建一个在用户表中插入新记录时自动生成一个账户记录的触发器。

```DELIMITER //CREATE TRIGGER `insert_user_account` AFTER INSERT ON `users` FOR EACH ROWBEGININSERT INTO accounts (user_id, balance) VALUES (NEW.id, 0);END//DELIMITER ;```(2)在用户表中插入一条新记录,触发器会自动执行并在账户表中生成一条新记录。

```INSERT INTO users (name, email) VALUES ('Alice','***************');SELECT * FROM accounts WHERE user_id =LAST_INSERT_ID();```三、实验结论通过实验我们发现,存储过程可以将一些常用的 SQL 语句封装为一个可以重复调用的函数,使得程序更加简洁和高效。

实验八存储过程与触发器的应用实验报告

实验八存储过程与触发器的应用实验报告

实验八:存储过程与触发器的应用实验报告实验任务:1、存储过程的创建、执行和删除。

(1)使用学生选课数据库中的student 表、course 表;sc 表创建一个带参数的存储过程—cjjicx 。

该存储过程的作用是:该存储过程的作用是:当任意输入一个学生的姓名时,当任意输入一个学生的姓名时,当任意输入一个学生的姓名时,将从三个表中返回该学生的学号、将从三个表中返回该学生的学号、将从三个表中返回该学生的学号、选选修的课程名称和课程成绩。

Cjjicx 的创建语句:create procedure [dbo].[cjjicx]@sname nchar (1010) ) asselect s .sno ,c .cname ,sc .gradefrom student as s inner join sc as sc on s .sno =sc .sno inner join course as c on c .cno =sc .cno wheresname =@sname(2)执行cjjicx 存储过程,查询“XXX XXX””(自己选个名字)的学号、选修课程和课程成绩。

执行语句:execute cjjicx '李勇'结果描述:(3)使用系统存储过程sp_helptext查看存储过程cjjicx的文本信息。

使用系统存储过程sp_depends查看存储过程cjjicx中所涉及的对象信息。

中所涉及的对象信息。

执行语句:执行语句:(i)EXEC sp_helptext cjjicx(ii)EXEC sp_depends cjjicx查看结果描述:查看结果描述:(i)(ii)(4)使用学生选课数据库中的student表,为其创建一个存储过程—jmxs。

该存储过程的作用是:当执行该存储过程时,将返回计算机系学生的所有信息。

是:当执行该存储过程时,将返回计算机系学生的所有信息。

Jmxs创建语句:创建语句:CREATE PROCEDURE jmxsASSELECTStudent.Sno,Student.Sname,Student.Ssex,Student.Sage,Student.Sdept FROM StudentWHERE Sdept='CS'GO结果描述:存储过程jmxs已成功建立:右侧“系统存储过程”下拉列表中显示(5)执行jmxs存储过程,查看计算机系学生的情况。

触发器功能测试实验报告

触发器功能测试实验报告

触发器功能测试实验报告引言触发器是数据库中一种强大的功能,用于在特定条件满足时自动触发某些操作。

本实验旨在测试触发器在数据库管理系统中的功能和效果。

通过本实验,我们将深入了解触发器的工作原理,并验证其可靠性和效率。

实验环境为了进行本实验,我们使用了以下软件和工具:•数据库管理系统:MySQL 5.7•开发环境:Visual Studio Code•编程语言:SQL•操作系统:Windows 10实验步骤步骤一:创建测试数据库首先,我们需要创建一个测试数据库,用于存储我们后续实验所需的表和数据。

在MySQL中,我们可以使用以下SQL语句来创建一个名为test_db的数据库:CREATE DATABASE test_db;步骤二:创建测试表接下来,我们需要在测试数据库中创建一些表,用于模拟实际应用中的数据操作。

假设我们要创建一个名为users的表,用于存储用户信息。

该表包含以下字段:id(整型,主键)、name(字符串,用户姓名)、age(整型,用户年龄)。

使用以下SQL语句可以在test_db数据库中创建users表:CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(255),age INT);步骤三:创建触发器在本实验中,我们将创建一个简单的触发器,用于在users表中插入新记录时自动更新一个计数器表。

假设我们要创建一个名为counter的表,用于存储插入users表的记录总数。

首先,我们需要在test_db数据库中创建counter表:CREATE TABLE counter (count INT);然后,我们可以使用以下SQL语句创建触发器:DELIMITER $$CREATE TRIGGER user_insert_trigger AFTER INSERT ON usersFOR EACH ROWBEGINUPDATE counter SET count=count+1;END;$$DELIMITER ;步骤四:测试触发器现在,我们已经完成了触发器的创建,可以进行测试了。

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

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

存储过程与触发器实验报告存储过程与触发器实验报告概述:本实验旨在探究数据库中存储过程与触发器的概念、作用以及使用方法。

通过编写实例代码并进行实验,深入理解存储过程与触发器在数据库管理系统中的重要性和应用场景。

一、存储过程存储过程是一组预定义的SQL语句集合,可以被多次调用。

存储过程通常用于执行一系列复杂的数据库操作,如数据的插入、更新、删除等。

它们可以被视为一种封装了业务逻辑的数据库对象,提供了更高效、更安全的数据处理方式。

在实验中,我首先创建了一个名为"AddEmployee"的存储过程,用于向员工表中插入新的员工信息。

该存储过程接受参数,包括员工姓名、性别、年龄等。

在存储过程中,我使用了INSERT INTO语句将参数值插入到员工表中。

通过调用该存储过程,可以方便地插入新员工的信息,减少了编写重复SQL语句的工作量。

二、触发器触发器是与数据库表相关联的特殊类型的存储过程,当表中的数据发生变化时,触发器会自动执行相应的操作。

触发器可以在数据的插入、更新、删除等操作前后触发,用于实现数据的自动验证、补充以及其他业务逻辑的处理。

在本次实验中,我创建了一个名为"UpdateStock"的触发器,用于在产品表中更新库存信息时自动更新库存变动记录表。

当产品表中的库存字段发生变化时,触发器会自动将相关信息插入到库存变动记录表中。

这样,无论是手动更新库存还是通过其他方式更新库存,库存变动记录都能够及时准确地被记录下来,方便后续的数据分析和追溯。

三、实验结果与总结通过本次实验,我深入学习了存储过程与触发器的概念、作用和使用方法。

通过编写实例代码并进行实验验证,我进一步认识到存储过程与触发器在数据库管理系统中的重要性和应用场景。

存储过程的使用可以提高数据库操作的效率和安全性,尤其适用于需要执行复杂业务逻辑的场景。

通过将一系列SQL语句封装成存储过程,可以减少网络传输的开销,提高数据库操作的性能。

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

数据库实验报告  之触发器和存储过程
(2)了解创建存储过程和触发器的SQL语句的基本语法。
(3)了解查看、执行、修改和删除存储过程的SQL语句的用法。
(4)了解查看、修改和删除触发器的SQL语句。
实验目的:
(1)掌握创建存储过程和触发器的方法和步骤。
(2)掌握存储过程和触发器的使用方法。
(3)掌握SQL Server 2005中数据库关系图的创建和管理。
③为S表创建一个名称为my_trig的触发器,当用户成功删除该表中的一条或多条记录时,触发器自动删除SC表中与之有关的记录。在S表中执行删除操作,验证触发器my_trig。
实验过程如下图所示:创建S表中的触发器:
验证触发器my_trig:
④创建一个名称为s_trig的触发器,当S表中的记录被更新时,显示表中所有的记录。验证触发器s_trig。
实验过程如下图所示:
验证触发器:
3.实验小结
实验总结:
(1)通过本次试验,对触发器和存储结构有了基本的了解,
(2)通过本次实验,了解了触发器的概念,掌握了触发器的创建及应用,存储过
程的创建及应用,查看触发器信息。
(3)对存储过程和触发器的使用方法以及SQL Server 2005中数据库关系图的创
建和管理。
实验步骤:在对象资源管理器窗口,点击可编程性,右击存储过程,点击新建存储过程,具体如下图所示:
④执行存储过程XSXK,查询“信息”系学生的学号、姓名、年龄、课程名、成绩。
实验步骤:在sql窗口输入如下代码:
exec xsxl ‘is’
点击执行,实验结果如下所示:
⑤使用系统存储过程查看存储过程XSXK的文本信息。
三:实验内容
(1)存储过程
①使用“学生-课程”数据库中的S表,创建一个不带参数的存储过程XS,查看学号为S1的学生的信息,包括该学生的学号、姓名、年龄。

数据库实验6触发器实验报告

数据库实验6触发器实验报告

淮海工学院计算机工程学院实验报告书课程名:《数据库原理及应用》题目:存储过程和触发器班级:软件132学号: 2013122907姓名:孙莹莹一.目的与要求1.掌握存储过程的创建方法;2.掌握存储过程的执行、修改和删除等操作;3.掌握触发器的创建方法;4.掌握触发器的使用、修改和删除等相关内容二.实验内容基于前面建立的factory数据库,使用T-SQL语句完成如下各小题的功能:1.创建一个为worker表添加职工记录的存储过程Addworker;2.创建一个存储过程Delworker删除worker表中指定职工号的记录。

3.显示存储过程Delworker;4.删除存储过程Addworker和Delworker.三.实验步骤1 .(1)建立存储过程USE factoryGOCREATE PROCEDURE Addworker@no int=NULL,@name char(10)=NULL,@sex char(2)=NULL,@birthday datetime=NULL,@na char(2)=NULL,@wtime datetime=NULL,@depno int=NULLASIF @no IS NULL OR @name IS NULL OR @sex IS NULL OR@birthday IS NULL OR @depno IS NULLBEGINPRINT '请重新输入该职工信息!'PRINT '你必须提供职工号、姓名、性别、出生日期、部门号'RETURNENDBEGIN TRANSACTIONINSERT INTO workerVALUES(@no,@name,@sex,@birthday,@na,@wtime,@depno)IF @@error<>0BEGINROLLBACK TRANRETURNENDCOMMIT TRANSACTIONPRINT '职工'+@name+'的信息成功添加到表worker中'(2)验证存储过程USE factoryGOAddworker 20,'陈立','女','55/03/08','否','75/10/10',4GOSELECT 职工号,姓名,性别,党员否 FROM workerGO2.(1)建立存储程序USE factoryGOCREATE PROCEDURE Delworker@no int=NULLASIF @no IS NULLBEGINPRINT '必须输入职工号!'RETURNENDBEGIN TRANSACTIONDELETE FROM worker WHERE 职工号=@noIF @@error<>0BEGINROLLBACK TRANRETURNENDCOMMIT TRANSACTIONPRINT '成功删除职工号为'+CAST(@no AS CHAR(2))+'的职工记录' 执行下列语句,可验证存储过程的正确性:USE factoryGODelworker 20GOSELECT 职工号,姓名,性别,党员否 FROM workerGO3.USE factoryGOEXEC sp_helptext DelworkerGO4.USE factoryGOIF EXISTS (SELECT name FROM sysobjectsWHERE name = 'Addworker' AND type ='P') DROP PROCEDURE AddworkerGOIF EXISTS (SELECT name FROM sysobjectsWHERE name = 'Delworker' AND type ='P') DROP PROCEDURE DelworkerGO5.建立触发器depart_update的程序如下:USE factoryGOIF EXISTS (SELECT name FROM sysobjectsWHERE type='TR' AND name='depart_update')DROP TRIGGER depart_updateGOCREATE TRIGGER depart_update ON departAFTER UPDATEASDECLARE @olddepno int,@newdepno intSELECT @olddepno=部门号FROM deletedSELECT @newdepno=部门号FROM inserted UPDATE workerSET 部门号=@newdepnoWHERE 部门号=@olddepnoGO执行下列语句,可验证存储过程的正确性:USE factoryGOPRINT '将部门号改为'UPDATE departSET 部门号=105WHERE 部门号=101GOSELECT 职工号,姓名,部门号FROM workerGOPRINT '将部门号改为'UPDATE departSET 部门号=101WHERE 部门号=105GOSELECT 职工号,姓名,部门号FROM workerGO6.建立触发器worker_delete的程序如下:USE factoryGOIF EXISTS(SELECT name FROM sysobjectsWHERE type='TR'AND name='worker_delete')DROP TRIGGER worker_deleteGOCREATE TRIGGER worker_delete ON workerFOR DELETEASDECLARE @no intSELECT @no=职工号FROM deletedDELETE FROM salaryWHERE职工号=@noGO执行下列语句,可验证存储过程的正确性:USE factoryGOPRINT'删除前的工资记录'SELECT*FROM salaryGODELETE FROM workerWHERE职工号=15GOPRINT'删除职工号为的职工记录后的工资记录'SELECT*FROM salaryGO7.删除触发器depart_update的程序如下:USE factoryGODROP TRIGGER depart_updateGO8.删除触发器worker_delete的程序如下:USE factoryGODROP TRIGGER worker_deleteGO四.测试数据与实验结果第1题图第2题图第3题图第5题图第6题图五.结果分析与实验体会CREATE PROCEDURE语句允许创建、编译并在MS-SQL Server上保存存储过程。

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

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

数据库存储器与触发器实验报告文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]南昌航空大学实验报告二0一七年 5 月 3 日课程名称:数据库概论实验名称:存储器与触发器班级: xxx 姓名: xxx 同组人:指导教师评定:签名:一、实验环境1.Windows2000或以上版本;2.SQLServer2000或2005。

二、实验目的1.掌握存储过程的创建,修改,使用,删除;2.掌握触发器的创建,修改,使用,删除。

三、实验步骤及参考源代码1.创建过程代码:CREATE PROCEDURE C_P_Proc(@ccna varchar(10),@cno char(4) OUTPUT,@cna varchar(10)OUTPUT,@pna varchar(20)OUTPUT,@num int OUTPUT) ASSELECT @cna=cna,@cno=,@pna=pna,@num=numFROM cp,customer,paperWHERE=AND=AND cna=@ccna;6.执行存储过程C_P_Pro,实现对李涛,钱金浩等不同顾客的订阅信息查询execute C_P_Proc@name='李涛'execute C_P_Proc@name='钱金浩'7,删除存储过程C_P_PrccDROP PROCEDURE C_P_PROC(4)在DingBao数据库中针对PAPER创建插入触发器TR_PAPER_I、删除触发器TR_PAPER_D、修改触发器TR_PAPER_U。

具体要求如下。

<1>对PAPER的插入触发器:插入报纸记录,单价为负值或为空时,设定为1 0元。

CREATE TRIGGER TR_PAPER_I ON paperFOR INSERT ASDECLARE @ippr FLOAT;declare @ipno int;SELECT @ippr=ppr,@ipno=pno from insertedbeginif @ippr<0 or @ippr is NULLbeginraiserror('报纸的单价为空或小于零!',16,1)update paper set ppr=10where =@ipnoendendINSERTINTO paper(pno,pna,ppr)VALUES('000007','青年报',-2)select*from paper<2>对PAPER的删除触发器:要删除的记录,若正在被订阅表CP参照时,级联删除订阅表中相关的订阅记录。

数据库-存储过程触发器和函数实验报告参考模板

数据库-存储过程触发器和函数实验报告参考模板

存储过程、触发器和用户自定义函数实验兰州大学数据库实验报告实验内容一练习教材中存储过程、触发器和用户自定义函数的例子。

教材中的BookSales数据库,在群共享中,文件名为BookSales.bak。

实验内容二针对附件1中的教学活动数据库,完成下面的实验内容。

1、存储过程(1)创建一个存储过程,该存储过程统计“高等数学”的成绩分布情况,即按照各分数段统计人数。

CREATE Proc MATH_NUM@MATH CHAR(20)='高等数学'ASSELECT@MATH as canme,count(case when score>=90 then 1 end)as[90以上], count(case when score>=80 and score<90 then 1end)as[80-90],count(case when score>=70 and score<80 then 1end)as[70-80],count(case when score>=60 and score<70 then 1end)as[60-70],count(case when score<60 then 1 end)as[60以下]FROM study,courseWHERE o=o and ame=@MATHGROUP BY ame运行结果:(2)创建一个存储过程,该存储过程有一个参数用来接收课程号,该存储过程统计给定课程的平均成绩。

CREATE Proc AVG_SCORE@cno CHAR(5)ASSELECT@cno as课程号,ame as课程名,STR(AVG(score),5,2)as平均成绩FROM study,courseWHERE o=o and o=@cnoGROUP BY ame运行结果:(3)创建一个存储过程,该存储过程将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。

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

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

二、实验目的
1.掌握存储过程的创建,修改,使用,删除;
2.掌握触发器的创建,修改,使用,删除。

三、实验步骤及参考源代码
1.创建过程代码:
CREATE PROCEDURE C_P_Proc(@ccna varchar(10),@cno char(4)OUTPUT,@cna varchar(10)OUTPUT,@pna varchar(20)OUTPUT,@num int OUTPUT)
AS
SELECT @cna=cna,@cno=o,@pna=pna,@num=num
FROM cp,customer,paper
WHERE o=o AND paper.pno=cp.pno AND cna=@ccna;
6.执行存储过程C_P_Pro,实现对李涛,钱金浩等不同顾客的订阅信息查询execute C_P_Proc@name='李涛'
execute C_P_Proc@name='钱金浩'
7,删除存储过程C_P_Prcc
DROP PROCEDURE C_P_PROC
(4)在DingBao数据库中针对PAPER创建插入触发器TR_PA PER_I、删除触发器TR_PAPER_D、修改触发器TR_PAPER_U。

具体要求如下。

<1>对PAPER的插入触发器:插入报纸记录,单价为负值或为空时,设定为10元。

CREATE TRIGGER TR_PAPER_I ON paper
FOR INSERT AS
DECLARE @ippr FLOAT;
declare @ipno int;
SELECT @ippr=ppr,@ipno=pno from inserted
begin
if @ippr<0 or @ippr is NULL
begin
raiserror('报纸的单价为空或小于零!',16,1)
update paper set ppr=10
where paper.pno=@ipno
end
end
INSERT
INTO paper(pno,pna,ppr)VALUES('000007','青年报',-2)
select*from paper
<2>对PAPER的删除触发器:要删除的记录,若正在被订阅表CP参照时,级联删除订阅表中相关的订阅记录。

create trigger TR_Paper_D on paper
instead of delete as
declare @icount int;
select @icount=count(*)from deleted,Cp where
deleted.pno=Cp.pno
if @icount>=1
begin
declare @ipno int
select @ipno=deleted.pno
from deleted
delete from cp
where pno=@ipno
end
delete from paper
where pno ='000007'
select*from paper
<3>对PAPER的修改触发器:当报纸的单价修改为负值或为空时,提示“输入单价不正确!”的信息,并取消修改操作。

create trigger TR_Paper_U on paper。

相关文档
最新文档