数据库原理游标及触发器实验
- 格式:doc
- 大小:237.50 KB
- 文档页数:6
创建触发器为了演示触发器的功能,下面再引入一个简易仓库管理的例子。
在采购配件前,必须首先制定采购计划(如采购计划表 PlanA),然后交由采购员采购,采购回来后,要将配件入库,入库时,除了要修改入库表(配件入库表 InStock)外,还要修改配件库存表(仓库库存表 Stock),还要修改采购计划表(采购计划表 PlanA),因为要修改实际完成的采购量(FinishQty)。
三个数据表如下:采购计划表 PlanA备件入库表 InStock备件库存表 Stock给计划表追加如下数据一、用企业管理器创建触发器例1:对备件入库InStock表建立一个插入触发器utr_InStockIns,其功能为:备件入库时,除了要将入库数据追加到备件入库表(InStock)外,还要修改计划表(PlanA)中对应计划号的完成数量(增加FinishQty)和备件库存表(Stock)中对应备件代码的库存数量(StockQty)。
注:同企业管理器创建的触发器例2:对备件入库表建立一个删除触发器utr_InStockDel,其功能为:删除备件入库中的记录时,除了要删除入库表(InStock)的记录外,还要修改计划表(PlanA)中对应计划号的完成数量(减少FinishQty),还要删除备件库存表(Stock)中对应备件代码的记录。
例3:对备件入库表建立一个更改除触发器utr_InStockUpt,其功能为:更改备件入库中的记录时,除了要更改入库表(InStock)的记录外,还要更改备件库存表(Stock)中对应备件代码的数据,同时,还要更改计划表(PlanA)中对应计划号的完成数量(FinishQty)。
触发器的应用假设你已经按照4.2.3创建触发器中要求创建了插入触发器utr_InStockIns、删除触发器utr_InStockDel和更改触发器utr_InStockUpt,才能做下面的实验。
可以参见4.2.4管理触发器来检查是否已经创建。
计算机系一、实验目的1、掌握创建游标的方法和步骤;2.掌握游标的使用方法;二、实验内容1、游标的创建;2、游标的使用方法。
三、实验步骤1、游标的创建。
1)使用S_C数据库中的S表、C表、SC表创建一个存储过程—sp_CURSOR1。
该存储过程的作用是:显示所有的课程信息,如果成绩>=90显示成绩本身;成绩>=80显示良;成绩>=70显示中;成绩>=60显示及格;成绩>=0显示不及格;如果没有成绩则显示无成绩。
信息还包含学号,姓名,课程和成绩,显示格式如下:学号---姓名---课程---成绩,如图1所示。
要求使用游标技术实现上述要求,使用Print语句实现显示。
图1 成绩显示格式sp_CURSOR1的创建语句:create proc sp_CURSOR1asDeclare @sname varchar(50)Declare @sno varchar(20)Declare @cno varchar(20)Declare @cname varchar(20)Declare @grade varchar(20)Declare SCursor Cursor ForSelect sno,cno,grade From SCOpen SCursorFetch Next From SCursor Into @sno,@cno,@gradeWhile@@FETCH_STATUS= 0beginselect @sname=sname From S where sno=@snoselect @cname=cname From C where cno=@cnoif(@grade ='')Print @sno+@sname+@cname+'null'else if(@grade >= 90)Print @sno+@sname+@cname+@gradeelse if(@grade >=80)Print @sno+@sname+@cname+'良'else if(@grade >=70)Print @sno+@sname+@cname+'中'else if(@grade >=60)Print @sno+@sname+@cname+'及格'elsePrint @sno+@sname+@cname+'不及格'Fetch Next From SCursor Into @sno,@cno,@gradeEndClose SCursorDeallocate Scursorgo结果描述:2、游标的使用。
数据库,触发器实验报告数据库系统实验报告触发器实验4 触发器1、通过序列和触发器实现借阅表中借阅流水号字段的自动递增。
Create or replace sequence bwnum_idMinvalue 1Maxvalue 1.0E28Start with 1Increment by 1Cache 20;Create or Replace Triggertri_bwnum_idBefore Insert On borrowFor Each RowBeginSelect bwnum_id.NextvalInto :new.bwnumFrom DUAL;End;2、通过序列和触发器实现预约表中预约流水号字段的自动递增Create sequence pnum_idMinvalue 1Maxvalue 1.0E28Start with 1Increment by 1Cache 20;Create or Replace Triggertri_pnum_idBefore Insert On preborrowFor Each RowBeginSelect pnum_id.NextvalInto :new.pnumFrom DUAL;End;3、修改实验三借书功能的存储过程。
该存储过程要求:(1)借书时输入借书证号,图书编号。
(即该函数有2个输入参数)(2)借书时,借书日期为系统时间。
*该存储过程主体部分只有insert into语句。
create or replace Procedurep_borrow(P_BNUM IN BORROW.BNUM%TYPE,P_RNUM IN BORROW.RNUM%TYPE)asbegininsertinto BORROW (BNUM,RNUM,BDATE)values(P_BNUM,P_RNUM,TO_CHAR( SYSDATE(),'YY/MM/DD'));commit;end;4、建立与借书存储过程相对应的触发器,当借阅表中加入借阅信息时,该触发器触发,自动修改所借图书的是否借出改为‘是’。
x x大学计算机与信息技术学院实验报告姓名学号专业班级课程名称数据库系统概论实验日期成绩指导教师批改日期实验名称游标的使用一、实验目的:•掌握游标的使用方法•掌握使用游标逐行操作SELECT语句结果集的数据的技能二、实验内容:•游标声明•打开游标•读取数据•关闭游标•释放游标三、实验步骤:(一)使用游标的几个步骤:1、声明游标。
使用T-SQL语句生成一个结果集,并且定义游标的特征,如游标中的记录是否可以修改;2、打开游标3、推进游标指针,从游标的结果集中提取数据,从游标中检索一行或多行数据成为提取数据。
4、逐行处理游标指针所指向的行数据。
5、关闭和释放游标。
例1、利用标准方式声明一个名称为“student”的游标use 学生选课declare student cursorforselect Sno,Sname,sageFROM studentWHERE sage=19FOR READ ONLYGOopen student // 打开gofetch next from student //从游标中读取数据goclose student // 关闭deallocate student // 删除例2:声明一个名称为Xuanke的游标use 学生选课/*声明一个名称为Xuanke的游标*/ DECLARE XUANKE CURSOR DYNAMIC /*动态的,动力的*/ FORSELECT Sno,GradeFROM SCWHERE Cno='1'FOR UPDATE OF SnoGO/*打开XUANKE游标*/OPEN XUANKEGO/*从XUANKE游标中读取数据*/ FETCH NEXT FROM XUANKEGO/*关闭XUANKE游标*/CLOSE XUANKE/*删除XUANKE游标*/ DEALLOCATE XUANKE例3:声明一个游标,可前后滚动,可对选课表2中的成绩进行修改use 学生选课/*声明一个游标,可前后滚动,可对选课表中的成绩进行修改use 学生选课*/DECLARE XK CURSORFOR SELECT*FROM SCFOR UPDATE OF Grade/*打开游标XK*/OPEN XKSELECT'游标数据行数'=@@CURSOR_ROWS/*全局变量@@CURSOR_ROWS返回最后打开的游标中当前存在的合格行的数量。
触发器的实验原理咱先得知道啥是触发器呢。
简单来说呀,触发器就像是一个超级警觉的小卫士。
你想啊,在一个电路的小世界里,或者在数据库这个大仓库里,它就在那静静地等着某个特定的事情发生。
就好比你在门口放了个小铃铛,只要有人一推门,铃铛就响,这个铃铛就有点像触发器的感觉呢。
在电路里呀,触发器是有自己独特的结构的。
它是由好多电子元件组合起来的。
比如说有逻辑门这些小家伙。
逻辑门就像是一群有着自己小脾气的小精灵。
它们有的只让电流通过的时候说“是”,有的则是在电流没有的时候说“是”,这些小精灵们互相配合着,就构建出了触发器的基本框架。
当输入的电信号有了某种变化的时候,就像你给这些小精灵们一个暗号一样,它们就会按照之前设定好的规则,让触发器的输出发生改变。
比如说从低电平变成高电平,或者反过来。
这就好像是小铃铛响了之后,屋里的小狗就开始汪汪叫,有了一个连锁的反应。
再说说数据库里的触发器。
数据库就像是一个超级大的信息宝库,里面存着各种各样的数据,就像宝藏一样。
那触发器在这呢,就是一个超级警觉的管理员。
比如说,当你在这个数据库里插入了一条新的数据,就像是你往宝库里放了一个新的宝贝。
这个时候,触发器就会被触发啦。
它可能会去检查这条新数据是不是符合某些规则。
要是不符合呢,它就会像个小管家一样,跳出来说“不行不行,这个数据有点问题呢。
”然后可能会阻止这个数据的插入,或者对这个数据进行一些修改,让它变得符合要求。
这就像是宝库有自己的规矩,不是啥东西都能随便放进去的。
那触发器是怎么知道什么时候该干活呢?这就涉及到触发的条件啦。
在电路里,这个条件可能是电压达到了某个值,或者是电流的变化方式符合了设定的模式。
就像是小铃铛只有在门被推开到一定角度的时候才会响。
在数据库里呢,这个触发条件可能是对某个表进行了特定的操作,像插入、删除或者修改数据。
这就像是宝库的管理员规定了,只有在有人拿了某个特定的宝物或者往某个特定的地方放宝物的时候,他才会出来检查。
MySQL中触发器和游标的介绍与使⽤触发器简介触发器是和表关联的特殊的存储过程,可以在插⼊,删除或修改表中的数据时触发执⾏,⽐数据库本⾝标准的功能有更精细和更复杂的数据控制能⼒。
触发器的优点:安全性:可以基于数据库的值使⽤户具有操作数据库的某种权利。
例如不允许下班后和节假⽇修改数据库数据;审计:可以跟踪⽤户对数据库的操作;实现复杂的数据完整性规则。
例如,触发器可回退任何企图吃进超过⾃⼰保证⾦的期货;提供了运⾏计划任务的另⼀种⽅法。
例如,如果公司的帐号上的资⾦低于 5 万元则⽴即给财务⼈员发送警告数据。
MySQL 中使⽤触发器创建触发器创建触发器的技巧就是记住触发器的四要素:监控地点:table;监控事件:insert/update/delete;触发时间:after/before;触发事件:insert/update/delete。
创建触发器的基本语法如下所⽰:CREATE TRIGGER-- trigger_name:触发器的名称;-- tirgger_time:触发时机,为 BEFORE 或者 AFTER;-- trigger_event:触发事件,为 INSERT、DELETE 或者 UPDATE;trigger_name trigger_time trigger_eventON-- tb_name:表⽰建⽴触发器的表名,在哪张表上建⽴触发器;tb_name-- FOR EACH ROW 表⽰任何⼀条记录上的操作满⾜触发事件都会触发该触发器。
FOR EACH ROW-- trigger_stmt:触发器的程序体,可以是⼀条 SQL 语句或者是⽤ BEGIN 和 END 包含的多条语句;trigger_stmttrigger_name:触发器的名称;tirgger_time:触发时机,为 BEFORE 或者 AFTER;trigger_event:触发事件,为 INSERT、DELETE 或者 UPDATE;tb_name:表⽰建⽴触发器的表名,在哪张表上建⽴触发器;trigger_stmt:触发器的程序体,可以是⼀条 SQL 语句或者是⽤ BEGIN 和 END 包含的多条语句;FOR EACH ROW 表⽰任何⼀条记录上的操作满⾜触发事件都会触发该触发器。
数据库原理实验指导实验 1 SQL Server2000管理工具的使用一、目的与要求1.掌握SQL Server服务器的安装2.掌握企业管理器的基本使用方法3.掌握查询分析器的基本使用方法4.掌握服务管理器的基本使用方法5.对数据库及其对象有一个基本了解6.掌握用企业管理器和查询分析器创建数据库,修改数据库和删除数据库的方法。
二、实验准备1.了解SQL Server各种版本安装的软、硬件要求2.了解SQL Server支持的身份验证模式3.了解SQL Server各组件的主要功能4.对数据库、表和数据库对象有一个基本了解5.了解在查询分析器中执行SQL语句的方法三、实验内容1.安装SQL Server 2000 根据软硬件环境,选择一个合适版本的SQL Server 2000。
2.利用企业管理器访问系统自带的pubs数据库。
(1)启动SQL Server服务管理器。
通过“开始=>程序=>Microsoft SQL Server=>服务管理器”打开“SQL Server服务管理器”,启动“SQL Server服务管理器”,并记录当前运行的服务器名。
图1.1 启动SQL Server服务管理器(2)启动企业管理器。
通过“开始=>程序=>Microsoft SQL Server=>企业管理器”打开“SQL Server Enterprise Manager”图1.2 启动企业管理器(3)在企业管理器的树形目录中展开数据库,找到pubs并展开,则列出该数据库的所有对象,如表、视图、存储过程、默认和规则等。
(4)选中“表”,将列出pubs数据库的所有表(包括系统表和用户表),在此以用户表publishers为例,选中该表,单击鼠标右键,弹出快捷菜单,执行“打开表—返回所有行”菜单项,打开该表,查看其内容。
(5)在表的尾部插入记录(9943,zhang,Beijing,null,china)和记录(1408,li,shanghai,null,china)。
触发器实验报告一、实验目的1.1 探索触发器的基本原理触发器,简单来说,就是一个能在特定条件下改变状态的电路。
它就像一扇门,只有当你用力去推的时候,才会打开。
我们的目标是搞清楚这些“门”是如何工作的。
1.2 理解触发器在电路中的应用触发器的应用范围可广泛了。
无论是数据存储,还是控制逻辑,触发器都扮演着关键角色。
它们就像是信息的守门员,决定了什么能进,什么得被拒绝。
二、实验设备2.1 实验工具这次实验,我们用的是基本的逻辑电路组件。
包括电源、开关、LED灯,还有万用表。
这些东西就像是我们的小工具箱,缺一不可。
2.2 触发器模块我们选择了D型触发器,因其结构简单,易于理解。
它的工作原理就像是一个小孩的玩具,按一下按钮就会亮灯,放开就灭。
我们把它接入电路,准备好迎接它的“表现”。
2.3 安全措施在进行实验之前,安全可不能马虎。
我们确保电源关闭,检查所有连接,确保一切正常。
毕竟,安全第一,任何小失误都可能引发“大麻烦”。
三、实验过程3.1 连接电路首先,我们根据电路图连接所有元件。
小心翼翼地将电缆接入D型触发器。
电缆像是我们的手,仔细地操控每一个连接。
看到电路成形,心中有种莫名的期待。
3.2 测试触发器一切准备好后,开启电源。
按下开关,LED灯瞬间亮起。
那一刻,仿佛看到了触发器在欢呼。
又按一下,灯灭了,状态变化真是瞬息万变。
就像生活,时刻都在变化,让人惊喜。
3.3 数据记录我们开始记录每次实验的结果。
数据像是我们收集到的“宝藏”,每一组数字都有它的故事。
这种追踪过程,就像是在解谜,寻找背后的秘密。
四、实验结果4.1 状态变化通过几轮实验,我们观察到触发器在不同输入条件下的状态变化。
每一次按下开关,触发器都准确无误地改变状态,表现得相当稳定。
这让我想起一句话:“坚持就是胜利”。
4.2 误差分析当然,实验中也不是没有波折。
偶尔会出现状态不一致的情况。
这就引发了我们的讨论,究竟是接线问题,还是外部干扰。
最终,我们发现是接触不良导致的,改正后,一切恢复正常。
《数据库原理》实验报告要求报告的主要内容一、实验目的根据各实验项目的实验目的撰写,具体在附件中给出。
二、实验环境操作系统:Windows XP,数据库管理系统(DBMS):SQL Server2008三、实验要求根据各实验项目要求撰写,具体在附件中给出。
四、实验内容及完成情况自己所完成的内容,进行了哪些操作、编写了哪些程序及执行后的结果,包括一些错误结果及解决办法等。
五、实验体会具体要求1、本实验属综合性实验,要使用学校统一的报告纸,附加纸张要挟在报告纸内并左侧装订;2、报告纸的封面要填写完整,项目要与实验日历中的项目完全一致,否则将返回重写;3、报告第四项“实验内容及完成情况”中,只允许对操作结果和程序运行结果进行打印,其余内容必须用钢笔或水性笔书写,报告要整洁;4、严禁出现雷同报告,如果出现雷同,雷同报告的所有学生本次实验将作不及格或最低分处理。
如果出现不及格实验项目将取消考试资格。
实验目的及要求实验三、存储过程及游标实验目的:综合运用程序设计和数据结构,使用游标完成具有较完整功能的存储过程。
实验要求:根据所给的excel表格,完成实验内容。
说明:“招生表”中部分属性保存的是代码值,请按所给代码表完成如下要求。
1.使用SQL语句创建数据库,并在数据库中完成表的创建。
(报告中要分析各个表的主键和外键是什么)创建数据库studentManage2.写一个存储过程,功能是查询所有招生信息。
使用游标完成逐行输出,每行要有行号。
(在查询结果中,要求各类代码要替换成具体的文字信息,例如:政治面貌不要显示“01”,而要显示“中共党员”。
)3.写一个触发器,当“录取专业代码-名称”表的“代码”发生变动时,“招生表”中对应的信息也要修改,来维护数据的一致性。
(注:可编辑下载,若有不当之处,请指正,谢谢!)。
数据库实验八:触发器及应用一、实验目的与要求:1.实验目的(1)学习触发器的使用,加深对触发器功能和作用的理解。
(2)体会触发器执行的时机。
2.实验要求建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计返回的状态值):(1)为选课表分别建立插入和更新触发器,如果当前学生累计不及格门数达到5则给出警示信息。
(2)为课程表分别建立插入和更新触发器来建立约束规则:“专业基础”课的教师必须为“教授”或“副教授”,如果不满足约束则拒绝操作,并给出错误信息。
(3)自行再分别设计2~3个触发器(在实验报告中要准确描述功能需求)。
(4)设计并执行相关的操作,体会DML触发器的效果和作用。
二、实验内容1、实验原理建立触发器的语句是:CREATE TRIGGER [schema_name].trigger-nameON {table |view}FOR {INSERT | UPDATE | DELETE }AS[IF UPDATE (column) [{AND | OR} UPDATE (column)…]]sql-statement2、实验步骤与结果(1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。
(2)输入自己编好的程序。
(3)检查已输入的程序正确与否。
(4)运行程序,并分析运行结果是否合理和正确。
在运行时要注意当输入不同的数据时所得到的结果是否正确。
(5)输出程序清单和运行结果。
(1)为选课表分别建立插入和更新触发器,如果当前学生累计不及格门数达到5则给出警示信息。
插入触发器:create trigger xk_triggeron选课for insertasdeclare@amount int,@xh char(10)select@xh=学号from insertedif@xh is not nullbeginselect@amount=(select count(*)from选课where成绩<60 and学号=@xh)if@amount>=5beginraiserror('不及格达到5门',16,10)endendinsert into选课values('001','03','50')insert into选课values('001','02','50')insert into选课values('001','04','50')更新触发器:create trigger xk_trigger2on选课for updateasdeclare@amount int,@xh char(10)select@xh=学号from insertedif@xh is not nullbeginselect@amount=(select count(*)from选课where成绩<60 and学号=@xh) if@amount>=5beginraiserror('不及格达到5门',16,10)endendupdate选课set成绩=50 where学号='001'and课程编号='02'update选课set成绩=50 where学号='001'and课程编号='03'update选课set成绩=50 where学号='001'and课程编号='04'update选课set成绩=50 where学号='001'and课程编号='05'update选课set成绩=50 where学号='001'and课程编号='06'(2)为课程表分别建立插入和更新触发器来建立约束规则:“专业基础”课的教师必须为“教授”或“副教授”,如果不满足约束则拒绝操作,并给出错误信息。
《数据库原理》实验报告要求
报告的主要内容
一、实验目的
根据各实验项目的实验目的撰写,具体在附件中给出。
二、实验环境
操作系统:Windows XP,数据库管理系统(DBMS):SQL Server2008
三、实验要求
根据各实验项目要求撰写,具体在附件中给出。
四、实验内容及完成情况
自己所完成的内容,进行了哪些操作、编写了哪些程序及执行后的结果,包括一些错误结果及解决办法等。
五、实验体会
具体要求
1、本实验属综合性实验,要使用学校统一的报告纸,附加纸张要挟在报告纸内并左侧装
订;
2、报告纸的封面要填写完整,项目要与实验日历中的项目完全一致,否则将返回重写;
3、报告第四项“实验内容及完成情况”中,只允许对操作结果和程序运行结果进行打印,
其余内容必须用钢笔或水性笔书写,报告要整洁;
4、严禁出现雷同报告,如果出现雷同,雷同报告的所有学生本次实验将作不及格或最低
分处理。
如果出现不及格实验项目将取消考试资格。
实验目的及要求
实验三、存储过程及游标
实验目的:
综合运用程序设计和数据结构,使用游标完成具有较完整功能的存储过程。
实验要求:
根据所给的excel表格,完成实验内容。
说明:“招生表”中部分属性保存的是代码值,请按所给代码表完成如下要求。
1.使用SQL语句创建数据库,并在数据库中完成表的创建。
(报告中要分析各个表的主键和外键是什么)
创建数据库studentManage
2.写一个存储过程,功能是查询所有招生信息。
使用游标完成逐行输出,每行要有行号。
(在查询结果中,要求各类代码要替换成具体的文字信息,例如:政治面貌不要显示“01”,而要显示“中共党员”。
)
3.写一个触发器,当“录取专业代码-名称”表的“代码”发生变动时,“招生表”中对应的信息也要修改,来维护数据的一致性。