《SQL Server 数据库》数据库存储过程、触发器的创建于管理实验报告
存储过程及触发器实验报告
存储过程及触发器实验报告实验目的: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是我们想要创建的触发器的名称。
SQL server中的存储过程和触发器
实验六存储过程和触发器实验报告姓名:张娜成绩:__________【实验目的】1、掌握存储过程的创建。
2、掌握存储过程的执行。
3、掌握存储过程的修改和删除。
4、掌握触发器的创建和使用。
【实验内容】2、创建存储过程GetOrder_details的SQL语句。
create procedure getorder_details(@orderno char(4))with recompileasselect orderdate,deliverydate,addressofdelivery,name,price,qtyordered,price*qtyordered as allmoney from orders join orderdetailson orders.orderno=orderdetails.orderno join products on products.productno=orderdetails.productnowhere orders.orderno=@orderno3、(1)输入参数为‘1002’,调用存储过程的SQL语句。
(2)执行结果。
(抓图)declare @orderno char(4)set @orderno='1002'execute getorder_details @orderno4、(1)修改存储过程GetOrder_details后的SQL语句。
(2)输入参数为‘1003’,调用存储过程的SQL语句。
(3)执行结果。
(抓图)if exists(select name from sysobjects where name='getorder_details'and xtype='p')drop procedure getorder_detailscreate view getdetailsasselect orderno,price*qtyordered as allmoney from orderdetails join products on products.productno=orderdetails.productnocreate procedure getorder_details(@orderno char(4))with recompileasbeginselectorderdate,deliverydate,addressofdelivery,name,price,qtyordered,price*qtyordered as allmoney from orders join orderdetailson orders.orderno=orderdetails.orderno join products on products.productno=orderdetails.productnowhere orders.orderno=@ordernoselect orderno,sum(allmoney) as '总金额' from getdetails group by orderno having orderno=@ordernoenddeclare @orderno char(4)set @orderno='1003'execute getorder_details @orderno5、(1)说明触发器attention完成的功能。
数据库 存储过程和触发器 实验报告
实验报告课程名称:数据库原理与应用上机实验名称:存储过程和触发器专业班级:计算机科学与技术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(主键,可设置为自动编号)、书号、读者编号、借阅数量、借阅日期、是否归还、管理员编号……等。
数据库存储器与触发器实验报告
南昌航空大学实验报二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参照时,级联删除订阅表中相关的订阅记录。
存储过程和触发器(实验报告)
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创建触发器的方法和步骤;
SQL Server数据库的管理(实验报告)
五﹑调试和测试清单
六﹑教师批语与成绩评定
(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句Create database创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
(5)在查询设计器中使用Transact-SQL语句Alter database修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。
打开studentsdb数据库的属性对话框在文件选项卡中的数据库文件列表中修改studentsdb数据库文件的分配的空间大小为2mb指定最大文件大小为5mb修改studentsdb数据库的日志文件的大小在每次填满时自动递增5
长沙理工大学
计算机与通信工程学院
实验报告
课程名称数据库技术与应用
实验项目名称SQL Server数据库的管理
班级
学号姓名
实验日期年月日
指导教师签字
一﹑特点;
(2)掌握使用SQL Server管理平台对数据库进行管理的方法;
(3)掌握使用Transact-SQL语句对数据库进行管理的方法。
二﹑实验平台
操作系统:Windows xp
DBMS:SQL Server 2005
(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。
(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据库文件的“分配的空间”大小为2MB,指定“最大文件大小”为5MB,修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
实验九 存储过程和触发器
实验九存储过程和触发器一、实验目的1.通过对常用系统存储过程的使用,了解存储过程的类型;2.通过创建和执行存储过程,了解存储过程的基本概念,掌握使用存储过程的操作技巧和方法;3.通过创建触发器,了解触发器的基本概念,理解触发器的功能,掌握使用触发器的操作技巧和方法;二、实验要求1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;2.能认真独立完成实验内容;3.实验后做好实验总结,根据实验情况完成总结报告。
三、实训操作及流程分析1、创建与执行存储过程(1)用T-SQL语句创建存储过程可以使用CREATE PROCEDURE语句来创建存储过程。
例9.1在学生成绩库中创建一个名为sp_StuCourseInfo的存储过程,产生一个学生选课情况列表,其中包括学号、姓名、性别、课程号、课程名、成绩、学分等。
分析:要产生一个学生选课情况列表,包含学号、姓名、性别、课程号、课程名、成绩、学分等字段信息,其Select语句如下:SELECT tStudent.Sno as 学号, name as 姓名, age as 性别, o as 课程号, Cname as 课程名, Grade as 成绩, Ccredit as 学分FROM Student, SC, CourseWHERE Student.Sno = SC.Sno AND o = o那么,完整的创建存储过程proc_8_2的T-SQL语句如下:CREATE PROCEDURE sp_StuCourseInfoASSELECT tStudent.Sno as 学号, name as 姓名, age as 性别, o as 课程号, Cname as 课程名, Grade as 成绩, Ccredit as 学分FROM Student, SC, CourseWHERE Student.Sno = SC.Sno AND o = oGO上述T-SQL语句执行后,在学生成绩库中就存在了名为sp_StuCourseInfo的存储过程。
存储过程与触发器实验报告
存储过程与触发器实验报告一、引言存储过程和触发器是数据库中常用的高级功能,它们能够提高数据库的性能、数据一致性和安全性。
本实验报告将详细介绍存储过程和触发器的概念、用途以及实际应用。
二、存储过程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等操作,并在这些操作发生时自动触发执行一段预定义的代码。
SQL实验报告
SQL Server 实验3 存储过程和触发器的使用
一、实验目的
(1)掌握创建和执行存储过程的方法。
(2)掌握创建和执行触发器的方法
二、实验内容
注意:使用第二次实验中所创建的“Students”数据库来完成本实验。
1、使用不带参数的存储过程
(1)创建一个存储过程my_proc,查询“学生表”中所有计算机系女生的学号、姓名、性别、年龄和所在院系。
(2)执行存储过程
(3)修改存储过程,使其能够查询计算机系女生的所有基本信息
2、带输入参数的存储过程
(1)创建一个存储过程my_procgender,使其能够查询“学生表”中男学生或女学生的学号、姓名、性别、年龄和所在院系
(2)执行存储过程
3、带输入/输出参数的存储过程
(1)创建一个存储过程my_procclass,使其能够根据学生姓名,查询学生所在班级。
(考虑当学生不存在时给出提示信息)
(2)执行存储过程
4、返回状态值的存储过程
(1)创建一个存储过程my_procstatus,使其能够根据学生学号,查询学生的选课信息。
(如果没有输入学生学号,返回状态码55;如果输入的学生学号不存在,则返回状态码-155)
(2)执行存储过程:接收存储过程返回的状态码,如果返回的状态码为55则输出提示信息“没有输入学号!!”;如果返回的状态码为-155,则输出“没找到!!”。
(3)删除存储过程
Drop proc my_procstatus。
《SQL Server 数据库》数据库存储过程、触发器的创建于管理实验报告
北华航天工业学院《数据库系统管理》实验报告报告题目:存储过程、触发器的创建于管理所在系部:计算机科学与工程系所在专业:网络工程专业学号:姓名:教师姓名:完成时间:2011 年10 月19 日北华航天工业学院教务处制存储过程、触发器的创建与管理一、实验目的1、掌握存储过程的概念、优点、特点及用途;2、掌握创建、执行、查看、修改和删除存储过程的方法;3、了解触发器和一般存储过程的区别、概念及优点;4、掌握创建、查看、修改和删除触发器的方法。
二、实验内容(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。
(二)练习创建和管理存储过程1、使用管理控制台创建一个名为“计算机系借阅信息_PROC”的无参存储过程,要求显示计算机系读者2011-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段,并执行该存储过程,查看显示结果。
2、使用T-SQL语句创建一个名为“读者借阅信息_PROC”的带参数的存储过程,要求根据输入的读者的编号显示读者的所有借阅信息,包括“读者编号”、“姓名”、“系部”、“图书编号”、“图书名称”和“借阅日期”等字段,并执行该存储过程,查看显示结果。
create proc读者借阅信息_PROC1@dzbh char(10)asbeginselect tb_reader.读者编号,姓名,系部,tb_book.图书编号,书名,借阅日期from tb_book,tb_reader,tb_borrowwhere tb_book.图书编号=tb_borrow.图书编号and tb_reader.读者编号=tb_borrow.读者编号and tb_reader.读者编号=@dzbhend--declare @srcs char(10),@fhzt intset @srcs='R10009'exec @fhzt=读者借阅信息_PROC1 @srcsprint'执行状态值为'+cast(@fhzt as varchar(10))3、使用T-SQL语句创建一个名为“图书借阅信息_PROC”的带参数的存储过程,要求根据输入的图书编号计算该图书的借阅数量,并根据程序执行结果返回不同的值,执行成功返回0,不成功返回错误号,并执行该存储过程,输出图书编号、借阅数量和程序结果返回值。
存储过程与触发器 实验报告
信息工程学院实验报告课程名称:《数据库原理》实验项目名称:存储过程与触发器一、实验目的:(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 语句封装为一个可以重复调用的函数,使得程序更加简洁和高效。
007-实验七存储过程与触发器(实验报告内容)
实验七存储过程与触发器(实验报告)一、目的1.掌握存储过程和触发器的基本概念和功能。
2.掌握创建、管理存储过程的方法。
3.掌握创建、管理触发器的方法。
二、实验内容(1)完成下列操作1.利用SQL Server Management Studio创建一个查询过程ProNum,查询每个班级中学生的人数,按班级号升序排列。
2.利用Transact-SQL语句创建一个带有参数的存储过程ProInsert,向score表插入一条选课记录,并查询该学生的姓名、选修的所有课程名称、平时成绩和期末成绩。
3.利用Transact-SQL语句创建一个存储过程ProAvg,查询指定班级指定课程的平均分。
班级号和课程名称由输入参数给定,计算出的平均分通过输出参数返回。
若该存储过程存在,则删除后重建。
4.利用SQL Server Management Studio创建一个AFTER触发器trigsex,当插入或修改student表中性别字段sex时,检查数据是否只为‘男’或‘女’。
5.利用Transact-SQL语句创建一个AFTER数据库trigforeign,当向score表中插入或修改记录时,如果插入或修改的数据与student表中数据部匹配,即没有对应的学号存在,则将此记录删除。
6.利用Transact-SQL语句创建一个AFTER触发器trigclassname,当向class表中插入或修改数据时,如果出现班级名称重复则回滚事务。
若该触发器存在,则删除后重建。
(2)完成实验报告三、实验环境SQL2005。
四、实验原理1.理解存储过程。
2.掌握触发器的使用。
五、实验报告将实验内容作为实验报告完成。
六、实验小结。
存储过程和触发器(数据库实验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='无此专业。
数据库存储过程与触发器实验报告
南昌航空大学实验报告二00 年月日课程名称:数据库概论实验名称:数据库存储过程与触发器班级:122031 姓名:同组人:指导教师评定:签名:一、实验环境1.Windows2000或以上版本;2.SQLServer 2005。
二、实验目的熟悉不同数据库的存储过程和触发器,重点实践SQL Server2005,掌握SQL Server2005中有存储过程与触发器的相关知识。
三、实验要求完成实验指导书中p115-7和p132 -4。
四、实验步骤及参考源代码1.创建与执行存储过程create procedure C_P_Proc asselect distinct o,cna,pna,numfrom paper,customer,cpwhere o=o and paper.pno=cp.pno and cna='李涛' or cna='钱金浩' goexecute C_P_Proc2.删除存储过程drop procedure C_P_Proc3.创建插入触发器create trigger TR_PAPER_I ON PAKER12203125FOR INSERT ASDECLARE @appr floatDECLARE @apno intSELECT @appr=ppr,@apno=pno from insertedbeginif @appr<0 or @appr is nullbeginraiserror('报纸的单价为空或小于!',16,1)update paper set ppr=10where paper.pno=@apnoendend4.创建删除触发器create Trigger TR_PAPER_D on PAKER12203125after delete asdeclare @ipno char(6)declare @icount int;select @icount= count(*) from deleted,cpwhere deleted.pno=cp.pnoif @icount>=1beginselect @ipno=pnofrom deletedraiserror('级联删除cp表中的数据',16,1)delete from cp where cp.pno=@ipnoend5.创建修改触发器create trigger TR_PAPER_U ON PAKER12203125for update asdeclare @ippr floatselect @ippr=ppr from insertedif @ippr<0 or @ippr is nullbeginraiserror('输入单价不正确',16,1)rollback transactionend6. 分别对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'五、实验结果123.4.56六、实验体会试验过后,巩固了自己在课堂上所学的知识,并加深了记忆与了解,对以后的使用有很大作用在实验过程中,遇到一些困难,经过自己不断查找书籍并询问老师来解决问题,提高了自己的逻辑思维能力和动手能力。
存储过程与触发器实验报告
存储过程与触发器实验报告存储过程与触发器实验报告概述:本实验旨在探究数据库中存储过程与触发器的概念、作用以及使用方法。
通过编写实例代码并进行实验,深入理解存储过程与触发器在数据库管理系统中的重要性和应用场景。
一、存储过程存储过程是一组预定义的SQL语句集合,可以被多次调用。
存储过程通常用于执行一系列复杂的数据库操作,如数据的插入、更新、删除等。
它们可以被视为一种封装了业务逻辑的数据库对象,提供了更高效、更安全的数据处理方式。
在实验中,我首先创建了一个名为"AddEmployee"的存储过程,用于向员工表中插入新的员工信息。
该存储过程接受参数,包括员工姓名、性别、年龄等。
在存储过程中,我使用了INSERT INTO语句将参数值插入到员工表中。
通过调用该存储过程,可以方便地插入新员工的信息,减少了编写重复SQL语句的工作量。
二、触发器触发器是与数据库表相关联的特殊类型的存储过程,当表中的数据发生变化时,触发器会自动执行相应的操作。
触发器可以在数据的插入、更新、删除等操作前后触发,用于实现数据的自动验证、补充以及其他业务逻辑的处理。
在本次实验中,我创建了一个名为"UpdateStock"的触发器,用于在产品表中更新库存信息时自动更新库存变动记录表。
当产品表中的库存字段发生变化时,触发器会自动将相关信息插入到库存变动记录表中。
这样,无论是手动更新库存还是通过其他方式更新库存,库存变动记录都能够及时准确地被记录下来,方便后续的数据分析和追溯。
三、实验结果与总结通过本次实验,我深入学习了存储过程与触发器的概念、作用和使用方法。
通过编写实例代码并进行实验验证,我进一步认识到存储过程与触发器在数据库管理系统中的重要性和应用场景。
存储过程的使用可以提高数据库操作的效率和安全性,尤其适用于需要执行复杂业务逻辑的场景。
通过将一系列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的学生的信息,包括该学生的学号、姓名、年龄。
SQL Server2005存储过程和触发器的设计实验三
3.存储过程和触发器的设计一、实验目的和要求(1)掌握 SQL Server中的触发器的使用方法;(2)掌握存储过程的操作方法。
二、实验内容和原理1. 基本操作实验在读者-图书数据库中用Transact-SQL语句描述下列功能:(1)在读者表上建立一个DELETE类型的触发器lianxi_del,触发动作是显示信息(已删除读者表中的数据),执行下列语句:create trigger lianxi_delon 读者for deleteas print ‘已删除读者表中的数据’(2)建立一个查询指定读者号的阅读信息的存储过程List_jy,输入参数为读者号,如果没有输入读者号,则要输出提示信息。
三、算法描述及实验步骤1. 触发器的操作(1)建立触发器首先,打开企业管理器,定位数据库并找到要创建触发器的表;然后,右击该表名,在弹出的快捷菜单中选择“设计表”,在打开的“设计表”窗口中单击按钮。
最后,在触发器属性窗口中输入触发器的内容,并单击“确定”按钮。
(2)查看触发器使用企业管理器2. 提高操作实验在学生-课程数据库中用Transact-SQL语句描述下列功能:1)为学生表建立一个名TRI_INSERT的INSERT触发器。
功能是当用户向学生表添加数据时,同时也把这些数据添加到stu表中。
其中:学生表和表stu的结构相同。
CREATE TRIGGER TRI_INSERTON STUDENTFOR INSERTASINSERT INTO STUSELECT * FROM INSERTED(2)创建一查询存储过程,过程名称为P_CX。
参数是学号,输出信息是指定学号所应的姓名、课程名称、成绩。
运行时若没有指定学号,则提示请输入学号;若学号不存在则提示学号不存在。
create procedure P_CX@sno char(10) =nullasif @sno is nullbeginprint '请输入一个学号'returnendelse if(not exists(select * from student where sno=@sno))print '学号不存在'elseselect sname,o,gradefrom student,course,scwhere student.sno=sc.sno and o=o and student.sno=@sno(3)创建一统计存储过程,过程名称为P_CJTJ。
数据库原理实验报告S11-数据库触发器的创建.
实验主要任务:导入学生成绩数据库,并建立相关表的关系,对数据库实施如下操作:一、利用SQL Server管理控制台创建DML触发器中的INSERT触发器的后(AFTER)触发器1. 利用SQL-SERVER管理控制台:创建一个INSERT触发器“TR_Course_Insert”,当在课程表中插入一条新记录时,触发该触发器,并给出“你插入了一条新的课程记录!”的提示信息。
2.创建了TR_Course_Insert触发器后,查看向课程表中插入数据时,此触发器所完成的功能。
二、使用Transact-SQL语句创建DML的后(FOR、AFTER)触发器(一)实现检查约束3. 创建一个AFTER触发器,要求实现以下功能:在成绩表上创建一个插入、更新类型的触发器TR_ScoreCheck,当在成绩字段中插入或修改考试分数后,触发该触发器,检查分数是否在0-100之间。
create trigger TR_ScoreCheckon成绩for insert,updateasif(select成绩from inserted)between 0 and 100beginprint'你成功的对成绩表插入(更新)了一条记录'endelsebeginprint'(插入)更新的成绩数据错误'rollback transactionend在创建了TR_ScoreCheck触发器之后,在查询窗口中输入以下SQL语句验证:(独立完成:4.创建一个AFTER触发器,要求实现以下功能:在2003学生名单表上创建一个插入、更新类型的触发器TR_Sex_Check,当在性别字段中插入或修改性别后,触发该触发器,检查性别是否是‘男’或‘女’,并验证)set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER trigger [TR_Sex_Check]on [dbo].[学生名单]for insert,updateasif(select性别from inserted)in('男','女')beginprint'插入(更新)数据'endelsebeginprint'插入或更新的性别错误'rollback transactionend(二)实现层叠修改5.创建一个AFTER触发器,要求如下:在学生表上创建一个删除类型的触发器TR_Stu_Delete,当在学生表中删除某一条记录后,触发该触发器,在成绩表中删除与此学号对应的记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北华航天工业学院《数据库系统管理》
实验报告
报告题目:
存储过程、触发器的创建于管理
所在系部:计算机科学与工程系
所在专业:网络工程专业
学号:
姓名:
教师姓名:
完成时间:2011 年10 月19 日
北华航天工业学院教务处制
存储过程、触发器的创建与管理
一、实验目的
1、掌握存储过程的概念、优点、特点及用途;
2、掌握创建、执行、查看、修改和删除存储过程的方法;
3、了解触发器和一般存储过程的区别、概念及优点;
4、掌握创建、查看、修改和删除触发器的方法。
二、实验内容
(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。
(二)练习创建和管理存储过程
1、使用管理控制台创建一个名为“计算机系借阅信息_PROC”的无参存储过程,要求显示计算机系读者2011-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段,并执行该存储过程,查看显示结果。
2、使用T-SQL语句创建一个名为“读者借阅信息_PROC”的带参数的存储过程,要求根据输入的读者的编号显示读者的所有借阅信息,包括“读者编号”、“姓名”、“系部”、“图书编号”、“图书名称”和“借阅日期”等字段,并执行该存储过程,查看显示结果。
create proc读者借阅信息_PROC1
@dzbh char(10)
as
begin
select tb_reader.读者编号,姓名,系部,
tb_book.图书编号,书名,借阅日期
from tb_book,tb_reader,tb_borrow
where tb_book.图书编号=tb_borrow.图书编号
and tb_reader.读者编号=tb_borrow.读者编号
and tb_reader.读者编号=@dzbh
end
--
declare @srcs char(10),@fhzt int
set @srcs='R10009'
exec @fhzt=读者借阅信息_PROC1 @srcs
print'执行状态值为'+cast(@fhzt as varchar(10))
3、使用T-SQL语句创建一个名为“图书借阅信息_PROC”的带参数的存储过程,要求根据输入的图书编号计算该图书的借阅数量,并根据程序执行结果返回不同的值,执行成功返回0,不成
功返回错误号,并执行该存储过程,输出图书编号、借阅数量和程序结果返回值。
create proc图书借阅信息_PROC1
@tsbh char(10),@jysl int output
as
begin
declare @ztz int
set @ztz=0
select @jysl=count(distinct读者编号)
from tb_borrow where图书编号=@tsbh
if@@error<>0
set @ztz=@@error
return @ztz
end
--
declare @sccs int,@fhz int,@srcs char(10)
set @srcs='10003'
exec @fhz=图书借阅信息_PROC1 @srcs,@sccs output
select @srcs,@sccs,@fhz
4、使用管理控制台查看“读者借阅信息_PROC”存储过程的定义信息和依赖的对象。
5、使用系统存储过程查看“计算机系借阅信息_PROC”存储过程的定义信息和依赖的对象。
sp_helptext
sp_depends
6、使用T-SQL语句创建一个名为“删除读者信息_PROC”的存储过程,要求根据所提供的读者编号,删除该编号所对应的读者,如果不存在此编号的读者,则显示“该编号的读者不存在!”。
创建完成之后,执行上述存储过程,观察执行结果。
create proc删除读者信息_PROC1
@dzbh char(10)
as
begin
if exists(select*from tb_reader
where读者编号=@dzbh)
begin
delete from tb_borrow where读者编号=@dzbh
delete from tb_reader where读者编号=@dzbh
end
else
print'该编号的读者不存在!'
end
exec删除读者信息_PROC1 'R10010'
7、使用T-SQL语句创建一个名为“修改借阅信息_PROC”的存储过程,要求根据所提供的读者编号和天数,将该读者的归还日期增加相应的天数,如果不存在该读者的借阅信息,则显示“该读者没有借阅图书!”。
创建完成之后,执行上述存储过程,观察执行结果。
create proc修改借阅信息_PROC1
@dzbh char(10),@ts int
as
begin
if exists(select*from tb_borrow
where读者编号=@dzbh)
update tb_borrow
set归还日期=dateadd(day,@ts,归还日期)
where读者编号=@dzbh
else
print'该读者没有借阅图书!'
end
--
exec修改借阅信息_PROC1 @ts=3,@dzbh='R10003'
8、使用管理控制台删除“读者借阅信息_PROC”存储过程。
9、使用T-SQL语言删除“计算机系借阅信息_PROC1”存储过程。
drop proc计算机系借阅信息_PROC1
(三)练习创建和管理触发器
1、使用管理控制台创建一个名为“读者信息插入_TRIG”的触发器,要求在“读者信息表”表中插入一条新记录时触发该触发器,并给出“插入了一条新记录!”的提示信息。
并在“读者信息表”中插入一条记录查看显示结果。
2、使用T-SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”
中插入或修改记录时触发该触发器,检查“归还日期”是否超过2011年12月31日,如果超过给出相应提示,提示中给出“归还日期”超过2011年12月31日的“图书编号”和“读者编号”。
create trigger借阅信息插入修改_TRIG
on tb_borrow
for insert,update
as
begin
declare @date datetime,@bookno char(10),@readerno char(10)
select @date=归还日期,@bookno=图书编号,@readerno 读者编号
from inserted
if @date>'2011-12-31'
begin
print'date more than 2011-12-31'
select @bookno 图书编号,@readerno 读者编号
end
end
insert into tb_borrow values('10011','R10004','2011-11-4','2012-2-2')
3、使用T-SQL语句实现该数据库中各表间的级联删除。
4、使用T-SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当图书信息表中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若小于0,则撤销插入和修改操作。
create trigger图书信息_TRIG
on tb_book
for insert,update
as
begein
print'begin trigger'
declare @kccs int
select @kccs=库存数from inserted
if @kccs<0
rollback
end
insert into tb_book values('11001',2,'eee','ddd','ggg',29,-1)
update tb_book set库存数=-2 where图书编号='10002'
5、使用管理控制台查看“读者信息插入_TRIG”触发器的依赖的对象。
6、使用系统存储过程查看“借阅信息插入修改_TRIG”触发器的定义信息和依赖的对象。
7、使用管理控制台删除“读者信息插入_TRIG”触发器。
8、使用T-SQL语言删除“借阅信息插入修改_TRIG”触发器。
drop trigger借阅信息插入修改_TRIG。