大数据库原理课程设计实验【创建存储过程与触发器】
《数据库原理与应用》实验存储过程和触发器(部分答案)

实验6存储过程和触发器1.实验目的(1)掌握通过SQL Server管理平台和Transact-SQL语句CREATE PROCEDURE创建存储过程的方法和步骤。
(2)掌握使用Transact-SQL语句EXECUTE执行存储过程的方法。
(3)掌握通过SQL Server管理平台和Transact-SQL语句ALTER PROCEDURE修改存储过程的方法。
(4)掌握通过SQL Server管理平台和Transact-SQL语句DROP PROCEDURE删除存储过程的方法。
(5)掌握通过SQL Server管理平台和Transact-SQL语句CREATE TRIGGER创建触发器的方法和步骤。
(6)掌握引发触发器的方法。
(7)掌握使用SQL Server管理平台或Transact-SQL语句修改和删除触发器。
(8)掌握事务、命名事务的创建方法,了解不同类型的事务的处理情况。
2.实验内容及步骤请先附加studentsdb数据库,然后完成以下实验。
(1)在查询设计器中输入以下代码,创建一个利用流控制语句的存储过程letters_print,该存储过程能够显示个小写字母。
语句:CREATE PROCEDURE letters_printASDECLARE@count intSET@count=0WHILE@count<26BEGINPRINT CHAR(ASCII('a')+@count)SET@count=@count+1ENDexec letters_print(2)输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名对应的学生的各科成绩。
语句:create proc stu_info@name char(10)asbeginSELECT姓名,g.课程编号,分数FROM dbo.student_info s JOIN grade gON s.学号=g.学号WHERE s.姓名=@nameEndexec stu_info'马东'(3)使用系统存储过程sp_rename将存储过程stu_grade更名为stu_g。
存储过程及触发器实验报告

存储过程及触发器实验报告实验目的: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是我们想要创建的触发器的名称。
数据库原理课程设计报告报告实验创建存储过程与触发器

存储过程与触发器实验日期和时间:2016 年 5 月13 日、星期五第节实验室:DJ2-信息管理实验室班级:学号:姓名:实验环境:1.硬件:笔记本电脑2.软件:SQL Server 2012实验原理:存储过程概念:存储过程是事先编好的,存储在数据库中的一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。
存储过程可以接受用户的输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言(DDL)和数据操作语言(DML)语句,然后返回输入参数。
触发器概念:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。
触发器经常用于加强数据的完整性约束和业务规则等。
实验任务:此作业成绩得分根据你完成的任务的难度和数量评分,完成后在实验室给老师演示验收,课后提交电子版报告。
如额外完成自拟题目应当事先将所拟题目提交给老师或在报告中明确标注题意。
假定有学校的图书馆管理信息系统,可以用于日常管理书库和同学们的借还书工作。
以下列出参考的库表情况:根据管理的业务需求来分析,该管理信息系统的数据库应至少包括如下数据表:(打★号的是必须有的表)1.★图书现有库存表。
作用:记录图书的现有库存情况。
至少包括:书号、书名、作者、简介、类别、价格、出版社、出版日期、现有库存数量、最小库存量、库存总量、库存位置等。
2.★读者信息表。
作用:记录读者信息。
至少包括:读者编号、证件类型、证件号码、姓名、性别、职业(可填写教师、学生、教工、其它……)、所属单位、地址、联系电话等。
3.★借书记录表。
作用:记录借书情况,以及是否归还。
至少包括:借阅ID(主键,可设置为自动编号)、书号、读者编号、借阅数量、借阅日期、是否归还、管理员编号……等。
创建存储过程与触发器

创建存储过程与触发器存储过程和触发器是SQL Server中的两个非常重要的数据库对象。
它们能够帮助开发人员更好地组织和管理数据库中的数据和代码。
本文将为读者提供有关存储过程和触发器的详细介绍,包括如何创建和使用它们以及它们在数据管理中的作用。
一、创建存储过程存储过程是一组SQL语句的集合,可在一次执行中调用,以执行客户端请求的任务。
存储过程可以返回结果集,也可以不返回结果集。
下面是创建一个简单的存储过程的示例:CREATE PROCEDURE [dbo].[sp_GetOrders] ASBEGINSELECT * FROM [dbo].[Orders]END在这种情况下,存储过程被命名为sp_GetOrders,并且只包含一个SQL查询语句。
调用该存储过程后,将返回Orders 表中的所有行。
存储过程是可以通过参数传递值的。
下面是一个接受参数的存储过程的示例:CREATE PROCEDURE [dbo].[sp_GetOrderDetails] @OrderID int ASBEGINSELECT * FROM [dbo].[Orders] WHERE [OrderID] =@OrderIDEND在这种情况下,存储过程被命名为sp_GetOrderDetails,并且它接受一个参数,也就是OrderID。
调用该存储过程后,将只返回具有指定OrderID的订单的详细信息。
二、创建触发器触发器是可以在特定表上创建的一种特殊类型的存储过程。
它们会在指定的数据库表中的特定事件发生时自动触发。
下面是创建一个简单的触发器的示例:CREATE TRIGGER [dbo].[tr_InsertEmployee] ON[dbo].[Employees] FOR INSERT ASBEGININSERT INTO[dbo].[EmployeeAudit] ([EmployeeID], [Action], [ActionDate])SELECT [EmployeeID], 'Insert', GETDATE() FROM insertedEND在这种情况下,触发器被命名为tr_InsertEmployee,并在Employees表中的插入操作发生时自动触发。
存储过程与触发器实验报告

存储过程与触发器实验报告一、引言存储过程和触发器是数据库中常用的高级功能,它们能够提高数据库的性能、数据一致性和安全性。
本实验报告将详细介绍存储过程和触发器的概念、用途以及实际应用。
二、存储过程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等操作,并在这些操作发生时自动触发执行一段预定义的代码。
创建存储过程与触发器

2.创建可以按“类别”(参数)进行某类产品库存信息查询的存储过程原代码:创建存储过程: create procedure chanpinleibie@123nchar(10)asbeginselect*from产品表where类别=@123end;测试方案及数据:在新建查询中输入:exec@result=chanpinleibie@123='电'select'result'=@result测试结果:(文字说明、原代码、结果贴图)3.创建可以按产品名称或产品名称打头字符串(参数)进行产品库存信息查询的存储过程。
创建存储过程: create procedure chanpinmingcheng@123nchar(10)asbeginselect*from产品表where产品名称=@123end;在新建查询中输入:exec@result=chanpinmingcheng@123='电'select'result'=@result测试结果:(文字说明、原代码、结果贴图)4.创建可以按“供应商编号”(参数)进行产品库存信息查询的存储过程。
创建存储过程: create procedure gongyingshang@123nchar(10)asbeginselect*from产品表where供应商编号=@123end;在新建查询中输入:exec@result=gongyingshang@123='102'select'result'=@result测试结果:(文字说明、原代码、结果贴图)我的选题2:(描述题目和欲实现的功能)1.创建“现有库存”表的DELETE触发器,禁止删除库存信息原代码:create trigger库存_信息删除on现有库存量for deleteasdeclare@123nchar(10)beginIF EXISTS(SELECT*FROM现有库存量WHERE产品编号=@123) PRINT'禁止删除库存信息!'ROLLBACK;ROLLBACK TRANSACTIONEND;use zwgodeletefrom现有库存量where产品编号='004'go测试方案及数据:use zwgodelete from现有库存量where产品编号='004'Go测试结果:(文字说明、原代码、结果贴图)2.创建“出库单”表的INSERT触发器。
数据库原理 实验四 存储过程与触发器、函数
《数据库原理》实验报告题目:实验四 存储过程与触发器、函数 学号: 成 绩班级: 计算12 日期:2014.05 姓名: 指导老师:林颖贤一、实验目的:1、掌握创建存储过程的方法和步骤;2、掌握创建触发器的方法和步骤;3、掌握用户自定义函数的类型及使用方法。
二、实验使用环境:Windows 7 x64、SQL Server 2005三、实验内容与完成情况:1、增加一张库存表Inventoy,包括:商品编号、价格、库存数量、入库时间(默认值为系统时间)。
create table Inventory (Goo_no char (8) not null, Inv_num int null, Inv_date datetime not null, primary key (Goo_no ,Inv_date ));ALTER TABLE Inventory ADD CONSTRAINT Inv_datedefault getdate () for Inv_date ;select * from Inventory2、从Purchase (进货表)和Sell(销售表)中备份空记录表: PurchaseBak 和Sell1Bak 。
if (not exists(select name from sysobjects where name ='PurchaseBak')) ( select * into PurchaseBak from Purchase where (1=0))if (not exists(select name from sysobjects where name ='SellBak')) ( select * into SellBak from Sellwhere (1=0))3、创建一个触发器。
向进货表中插入一条记录时,这个触发器都将更新库存表。
如果库存有该类商品时,那么该商品的进价即为两次进价的平均值(因为每次的进价可能会不相同),库存量为原有库存加该次进货数量;(算法为:(库存商品进价*库存量+进货价*进货量)/(库存量+进货量);如果没有该商品,则插入到库存表中。
5 实验五 创建存储过程和触发器
实验五创建存储过程和触发器
一、实验目的
1.通过对常用系统存储过程的使用,了解存储过程的类型;通过创建和执行存储过程,了解存储过程的基本概念,掌握使用企业管理器及查询分析器执行T-SQL语句创建存储过程。
2.通过创建触发器,了解触发器的基本概念,理解触发器的功能,掌握使用企业管理器及查询分析器执行T-SQL语句创建触发器。
二、实验要求
1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;
2.能认真独立完成实验内容;
3.实验后做好实验总结,根据实验情况完成总结报告。
三、实验学时
2学时
四、实验内容
1、使用sp_helptext查看byroyalty存储过程的文本,该存储过程在数据库pubs中。
2、在实验二创建的factory数据库中执行以下操作:
(1)创建一个为worker表添加职工记录的存储过程addworker。
执行并验证存储过程的正确性。
最后删除该存储过程。
(2)在depart表上创建一个触发器depart_update,当更改部门号时同步更改worker 表中对应的部门号。
执行并验证触发器的正确性。
最后删除该触发器。
(3)在worker表上创建一个触发器worker_delete,当删除职工记录时同步删除salary表中对应职工的工资记录。
执行并验证触发器的正确性。
最后删除该触发器。
数据库实验存储过程、触发器和函数实验
存储过程、触发器和用户自定义函数实验实验内容一练习教材中存储过程、触发器和用户自定义函数的例子。
教材中的BookSales数据库,在群共享中,文件名为BookSales.bak。
实验内容二针对附件1中的教学活动数据库,完成下面的实验内容。
1、存储过程(1)创建一个存储过程,该存储过程统计“高等数学”的成绩分布情况,即按照各分数段统计人数。
执行存储过程:exec countpeople(2)创建一个存储过程,该存储过程有一个参数用来接收课程号,该存储过程统计给定课程的平均成绩。
执行存储过程:exec avg_score'C602'(3)创建一个存储过程,该存储过程将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。
执行存储过程:exec alterscore(4)创建一个存储过程,该存储过程有一个参数用来接收学生姓名,该存储过程查询该学生的学号以及选修课程的门数。
执行存储过程:exec select_courses'李强'(5)创建一个存储过程,该存储过程有两个输入参数用来接收学号和课程号,一个输出参数用于获取相应学号和课程号对应的成绩。
执行存储过程:declare@score smallintexec select_socre'98601','C602',@score outputprint'成绩是'+convert(char(2),@score)+'分'2、触发器(1)为study表创建一个UPDATE触发器,当更新成绩时,要求更新后的成绩不能低于原来的成绩。
创建完触发器尝试进行更新数据:update study set score=60 where sno='98601'and cno='C601'执行完之后查询结果发现成绩仍然是90select score from study where sno='98601'and cno='C601'再更新一个高于90分的成绩则可以成功update study set score=91 where sno='98601'and cno='C601'select score from study where sno='98601'and cno='C601'(2)为study表创建一个DELETE触发器,要求一次只能从study表中删除一条记录。
存储过程与触发器 实验报告
信息工程学院实验报告课程名称:《数据库原理》实验项目名称:存储过程与触发器一、实验目的:(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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我的存储过程选题:(描述题目和欲实现的功能)
1.创建可以按“书号”(参数)进行图书库存信息查询的存储过程。
能够使得用户输入书号,就可以查询这本书的信息
原代码:
创建存储过程按照书号进行查询(ashcx),参数为shuhao 定义为char(20)create proc ashcx shuhao char(20)
as
begin
select*from图书现有库存表where书号=shuhao
end
调用存储过程,查询书号为‘30001’图书的信息
exec ashcx shuhao=30001
测试方案及数据:
创建存储过程,并查询书号为30001的图书信息
exec ashcx shuhao=30001
测试结果:(文字说明、原代码、结果贴图)
查询书号为3001书的信息
第二次测试插入数据:借书记录表(书号,读者编号, 借阅数量 )values('30002','0001',55) 输出结果“库存量不足!!”
use图书管理系统
select*from借书记录表
go
select*from图书现有库存表
go
insert into借书记录表(书号,读者编号,借阅数量)
values('30002','0001',55)
go
select*from借书记录表
go
select*from图书现有库存表
go
本实验总结:
1.创建、修改、删除、调用存储过程的语法。
创建存储过程语法:
CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]
修改存储过程语法:
ALTER PROC [ EDURE ] procedure_name [ ; number ]
1.本文件以“学号班级--数据库原理课程设计-实验
2.docx”命名。
文件保存
并关闭后打包成RAR文件,提交到我bbwhs.。
注意:你的学号放在前。
打包时先关闭被打包的文件,以免提交的容丢失或打不开。
2.提交时间:从发布任务时间起两周完成。
3.报告格式和容要求:
a. 容和格式整齐。
大标题采用黑体四号字加粗,小标题采用小四号字加粗。
正文
文字不小于五号,建议采用宋体,单倍行距。
b. 贴图时请剪裁到适当大小,要保证打印时可以看清,但也不要太大以免“越界”。
c. 不要在报告中写与实验容无关的话,容要有条理、完整、并能突出重点,要将
遇到的主要问题说明。
4.主动查阅资料,坚持自己亲手完成实验,弄清每个步骤和相关原理。