数据库实验6触发器实验报告
- 格式:docx
- 大小:454.21 KB
- 文档页数:9
实验五 触发器实验报告[实验目的]1. 理解Oracle 触发器的种类和用途2. 掌握行级触发器的编写[预备知识]1. PL/SQL 程序设计[实验原理]1. 建立触发器CREATE [OR REPLACE] TRIGGER <触发器名>BEFORE|AFTERINSERT|DELETE|UPDATE OF <列名> ON <表名>[FOR EACH ROW]WHEN (<条件>)<PL/SQL 程序块>ON 子句中的名称识别与数据库触发器关联的数据库表触发器事件指定了影响表的 SQL DML 语句 ( INSERT 、 DELETE 或 UPDATE)AFTER 指定了触发器在处理完成后触发BEFORE 指定了触发器在处理完成前触发默认情况下,触发器每个表触发一次FOR EACH ROW 选项指定触发器每行触发一次(即触发器为行级触发器)要使触发器触发,WHEN 子句中布尔型表达式的值必须判定为 TRUE可以将 REPLACE 添加到 CREATE 语句以自动删除和重建触发器2. 行级触发器中引用表数据在行级触发器中,使用伪记录来表示旧数据:old 和新数据:new引用示例::new.customer_name, :old.customer_name3. 行级触发器中的谓词在一个多条件触发的触发器中,使用谓词可以区分当前触发的操作的类型:触发事件 :old :newInsert 无定义,所有字段都是NULL该语句完成后插入的值Update 更新前该行的旧值 更新后该行的值Delete 删除前该行的值 无定义,所有字段inserting,updating,deleting。
示例:IF Inserting THEN语句;END IF;IF Updating THEN语句;END IF; IF Deleting THEN语句;END IF;4.触发器的限制SELECT 语句必须是SELECT INTO 语句或内部游标声明。
实验六触发器实验报告
触发器是数据库中非常重要的组成部分,它可以触发特定的动作,多用于数据库的实时更新和存储过程的管理。
本次实验主要了解不同类型的触发器,应用在增删改查动作中的效果,以增强数据库安全性和完整性。
首先,我们创建库,然后建立一张名为学生信息的表,用于存放学生的信息,包括姓名、学号、性别等,再建立一张名为考试成绩的表,用于存放考试成绩,包括课程名称、成绩等。
接着,我们分别使用表级、行级、语句级的触发器来监视学生信息和考试成绩表的增删改查操作,可以通过结果看出触发器的效果。
例如,使用表级触发器,在插入新学生信息或修改存在学生信息时,触发器会自动根据触发条件将其记录在日志表中;使用行级触发器,当有学生成绩超过及格线时,改变考试成绩的状态;使用语句级触发器,当考试成绩有更新时,将记录学生更新信息。
通过本次实验,我们能够熟悉触发器的使用,学会不同类型触发器之间的区别以及应用在数据库操作上的效果,大大提高了数据库的安全性和完整性。
实验6 触发器一、实验目的1.了解触发器的基本概念和功能。
2.掌握触发器的创建和使用方法。
二、相关知识创建触发器的语法为:CREATE TRIGGER <触发器名> ON <表名>[WITH ENCRYPTION]FOR {[DELETE][,][INSERT][,][UPDATE]}[WITH APPEND][NOT FOR REPLICATION]AS <SQL 语句组>其中:1)WITH ENCRYPTION 为加密选项。
2)DELETE 选项为创建DELETE 触发器。
DELETE触发器的作用是当对表执行DELETE操作时触发器被激活,并从指定表中删除元组,同时将删除的元组放入一个特殊的逻辑表(delete表)中。
触发器的动作可以检查delete表中的数据,以确定下一步该如何处理。
3)INSERT选项为创建INSERT触发器。
INSERT触发器在对指定表中执行插入数据操作时激活,激活后将插入表中的数据拷贝并送入一个特殊的逻辑表(inserted 表)中,触发器会根据INSERT表中的值决定如何处理。
4)UPDATE选项为创建UPDATE触发器。
UPDATE触发器仅在对指定表中进行更新数据操作时激活。
UPDATE触发器激活后把将要被更新的原数据移入delete表中再将要被更新后的新数据的备份送入insert表中,UPDATE触发器对delete和inserted表进行检查,并决定如何处理。
5)NOT FOR REPLICATION 选项说明当一个复制过程在修改一个触发器表时,与该表相关联的触发器不能被执行。
触发器是一种特殊类型的存储过程,用来保证数据完整性,当对它所保护数据进行插入、修改和删除时自动激活,对改变的数据进行检查,以防止对数据进行不正确、未授权或不一致的修改。
一个触发器只适用于一个表,每个表最多只能有三个触发器,它们分别是INSERT、UPDATE和DELETE触发器。
实验项目SQL Server 2000中数据库完整性约束触发器设置所属课程数据库原理实验目的1)熟悉通过SQL对数据进行完整性约束触发器控制。
2)完成作业的上机练习。
实验环境SQL Server 2000 window XP实验内容要求:在SQLSERVER2000中利用SQL语句完成以下操作。
1)通过SQL对表建立完整性约束。
2)通过SQL创建插入触发器。
3)通过SQL创建删除触发器。
4)通过SQL创建更新触发器实验过程1)复制生成xscj数据库的代码并运行。
2)为student表的年龄字段增加名为Checkage约束条件,限制年龄介于15到25之间。
3)为student表建立触发器Sinsert,如果student表中插入一条记录,则取消插入并提示错误。
4)为student表建立触发器Smodi,如果student表中某一学生年龄加1,则SC表中该学生的各门成绩都加15)为student表建立触发器Sdel,如果student表中某一学生删除,则SC表中该学生记录也删除。
实验结果及分析1.首先打开SQL查询分析器,复制生成xscj数据库的代码并运行实验操作步骤通过SQL Server 2000软件运行后所得截图如下:2:新建约束条件checkage:3:测试sinsert触发器:4.建立触发器Smodi:运行smodi触发器,当学好为2002151121的学生的年龄加一,sc表中,该同学的成绩加1.5:创建触发器sdel:运行sdel触发器,如图,删除学号为2002151121的在student表中的学生记录,相应的SC表中的记录也删除了。
实验心得总结通过这次的实验,我熟悉掌握了通过SQL对表建立完整性约束,了解了创建插入触发器,更加深入地学习了数据库的一些知识,充分地运用SQL软件的功能。
在为student表建立触发器Sdel,如果student表中某一学生删除,则SC表中该学生记录也删除的过程中存在着很多困难,多次运行失败,我通过查询资料以及翻阅课本知识,深入了解触发器的一些知识,对问题有了一些头绪,能够运行成功,基本解决的这个问题。
数据库实验报告(6)一实验题目1.存储过程的定义和使用2。
触发器的创建和使用二实验目的1.掌握存储过程的定义、执行和调用方法。
2.掌握触发器的创建和使用。
三实验内容1.存储过程的定义和使用(1)创建存储过程查找姓李的学生的选修课成绩信息。
(2)创建一个存储过程,计算每个学生选修课的总分,并显示得分最高的三名学生的分数。
(3)创建一个存储过程以查找课程的最高分数(带有输入参数的存储过程)。
(4)创建一个存储过程来计算同学的平均分数并返回统计结果。
(带输入和输出参数的存储过程)(5)创建一个存储过程,计算选修课的数量,然后返回数字。
(6)用存储过程统计选修课,用存储值最多的学生。
(存储过程的嵌套)2.触发器的创建与使用(1)如果学分大于5,在为表格C插入新课程信息时,定义行前级别的触发学分uu触发器分,自动修改为5分。
(2)定义行后级别触发器。
当SC表的等级发生变化时,它将自动出现在等级变化表SC_uu增加日志中加一条新的纪录,该新纪录包括:操作者名称、操作日期、操作类型。
(3)建立一个delete触发器,针对于sc表,每次只能删除一条信息。
(4)创建不允许用户更改学号的更新触发器。
如果学生号被更改,将给出提示信息:学生号不允许更改。
(5)执行相应的SQL语句来触发上面定义的触发器。
(6)删除触发信用触发四实验步骤1.存储过程的定义和格式:createproc[edure]procedure_name[;number][{@parameterdata_type}[变化][=默认值][输出][with[用于复制]assql_statement[...n]创建存储过程以查找姓李的学生的选修课分数信息。
(1)创建存储过程,统计每个学生的选修课的总成绩,显示成绩最好的前3名学生成绩。
SC表的基本信息如图1所示:图表1代码:createprocp_sumscoreas从SCGroupByNo中选择Top 3Sum(成绩)作为总分execp_sumscore运行结果:命令已成功完成。
实验六 触发器逻辑功能测试及应用一、实验目的:1、掌握基本RS 、JK 、D 、T 和T ′触发器的逻辑功能;2、学会验证集成触发器的逻辑功能及使用方法;3、熟悉触发器之间相互转换的方法。
二、实验原理:触发器:根据触发器的逻辑功能的不同,又可分为: 三、实验仪器与器件:实验仪器设备:D2H +型数字电路实验箱。
集成块:74LS112 74LS74 74LS04 74LS08 74LS02 74LS86 四、实验内容与步骤:1、基本RS 触发器逻辑功能的测试:S=R=0时,保持; S=0,R=1时,置0; S=1,R=0时,置1;S=R=1时,不定。
⎪⎩⎪⎨⎧=+=∙+=+101d d d d n d d n R S R S Q R S Q 或约束条件:2、JK 触发器逻辑功能测试:S=R=0时,保持; S=0,R=1时,置0; S=1,R=0,置1; S=R=1时,翻转。
n n n Q J Q +=+1电路图为:3、D 触发器逻辑功能测试: (1)异步输入端功能测试:(2)D触发器逻辑功能测试:D Q n =+14、不同类型时钟触发器间的转换: JK 转换为D 触发器:K J D ==D 转换为JK 触发器:D J =,K =JK 转换为T 触发器和T 转换为JK 触发器:T=J=KJK 转换为RS 触发和RS 转换为JK 触发器:Q nJ S = K R =五、实验体会与要求:1.要掌握RS,JK,T,D 触发器的工作条件,以及功能;2.要掌握各触发器之间的关系以及相互之间的转换;3.各触发器的特性表:同步RS 触发器的特性表(n n Q R S Q +=+1)D 触发器的特性表(D Q n =+1)T 触发器的特性表(n n Q T Q ⊕=+1)T ’触发器的特性表(n n Q Q =+1)JK 触发器的特性表(n n n Q K Q J Q +=+1)。
实验六触发器实验报告一、实验目的本次实验的主要目的是深入理解触发器的工作原理和应用,通过实际操作和观察,掌握触发器在数字电路中的功能和特性。
二、实验原理触发器是一种具有记忆功能的基本逻辑单元,能够存储一位二进制信息。
常见的触发器类型有 SR 触发器、JK 触发器、D 触发器和 T 触发器等。
以 D 触发器为例,其工作原理是在时钟脉冲的上升沿或下降沿,将输入数据D 传递到输出端Q。
在没有时钟脉冲时,输出状态保持不变。
三、实验设备与材料1、数字电路实验箱2、 74LS74 双 D 触发器芯片3、示波器4、导线若干四、实验内容与步骤1、用 74LS74 芯片搭建 D 触发器电路将芯片插入实验箱的插座中,按照芯片引脚功能连接电源、地和输入输出引脚。
使用导线将 D 输入端连接到逻辑电平开关,将时钟输入端连接到脉冲信号源,将 Q 和 Q'输出端连接到发光二极管或逻辑电平指示器。
2、测试 D 触发器的功能置 D 输入端为高电平(1),观察在时钟脉冲作用下 Q 输出端的变化。
置 D 输入端为低电平(0),再次观察时钟脉冲作用下 Q 输出端的变化。
3、观察 D 触发器的异步置位和复位功能将异步置位端(PRE)和异步复位端(CLR)分别连接到逻辑电平开关,测试在置位和复位信号作用下触发器的状态。
4、用示波器观察时钟脉冲和 Q 输出端的波形将示波器的探头分别连接到时钟脉冲输入端和 Q 输出端,调整示波器的设置,观察并记录波形。
五、实验结果与分析1、在 D 输入端为高电平时,每当时钟脉冲的上升沿到来,Q 输出端变为高电平;在D 输入端为低电平时,每当时钟脉冲的上升沿到来,Q 输出端变为低电平,验证了 D 触发器的正常功能。
2、当异步置位端(PRE)为低电平时,无论其他输入如何,Q 输出端立即变为高电平;当异步复位端(CLR)为低电平时,Q 输出端立即变为低电平,表明异步置位和复位功能有效。
3、从示波器观察到的波形可以清晰地看到时钟脉冲与 Q 输出端的关系,进一步验证了触发器的工作特性。
一、实验背景随着信息技术的飞速发展,数据库技术在各行各业中的应用越来越广泛。
数据库触发器作为数据库管理系统的重要组成部分,具有强大的功能,能够帮助用户实现复杂的数据操作和业务逻辑。
为了提高学生对数据库触发器的理解与应用能力,我们开展了数据库触发器实验实训。
二、实验目的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)触发器不能返回结果集,而存储过程可以返回结果集。
数据库触发器实验报告一、引言随着信息技术的发展,数据处理已经成为了各种科学技术领域中至关重要的一环。
在数据处理系统中,数据库是必不可少的组成部分之一。
而数据库中的触发器就是实现数据库自动化的重要手段之一。
本文对数据库触发器的实验进行了详细的分析和总结,以期为大家提供一些有关数据库的实际应用经验和理论指导。
二、实验开展过程本次实验选择的是MySQL 5.0版本数据库,我们通过多个实验案例来了解和掌握触发器的实际应用。
1.定义触发器我们首先通过定义触发器的方法来了解触发器的基本概念和语法结构。
通过设置一些触发器的触发条件和执行程序,我们可以实现对数据库的自动化维护和更新。
2. 插入触发器然后我们通过插入触发器的实验案例来掌握数据库自动插入数据的具体实现方法。
这样,无须手动输入每一条数据,数据库就可以自动将新的数据插入到数据库中去。
这样做的好处在于可以减少人为错误的发生,并且提高了数据处理的效率。
3. 修改触发器接下来,我们又进行了修改触发器的实验案例。
通过设置一些修改触发器的触发条件和执行程序,可以在数据库中修改一些指定数据,或者将一些数据更新到数据库中。
4. 删除触发器最后,我们还进行了删除触发器的实验案例。
通过设置一些删除触发器的触发条件和执行程序,可以将数据库中的指定数据逐一删除掉,从而实现数据库的自动化维护和更新。
三、实验结果分析通过本次实验,我们加深了对数据库触发器的理解和掌握。
同时,我们也发现在实际应用中,触发器设计的精细度和实现的合理度对于数据库的使用效果有着十分重要的影响。
因此,我们应该在实际操作过程中,注重考虑实际应用场景和条件,来设计和优化触发器的应用方案。
四、总结本文主要介绍了数据库触发器的基本概念、使用步骤和实验案例。
触发器的应用范围非常广泛,在实际应用中有着极为重要的作用。
通过对本次实验的掌握和总结,我们可以更好地理解并掌握数据库触发器的应用方法和原理,为后续在实际工作中使用数据库打下了基础。
触发器实验报告一、实验目的1.1 探索触发器的基本原理触发器,简单来说,就是一个能在特定条件下改变状态的电路。
它就像一扇门,只有当你用力去推的时候,才会打开。
我们的目标是搞清楚这些“门”是如何工作的。
1.2 理解触发器在电路中的应用触发器的应用范围可广泛了。
无论是数据存储,还是控制逻辑,触发器都扮演着关键角色。
它们就像是信息的守门员,决定了什么能进,什么得被拒绝。
二、实验设备2.1 实验工具这次实验,我们用的是基本的逻辑电路组件。
包括电源、开关、LED灯,还有万用表。
这些东西就像是我们的小工具箱,缺一不可。
2.2 触发器模块我们选择了D型触发器,因其结构简单,易于理解。
它的工作原理就像是一个小孩的玩具,按一下按钮就会亮灯,放开就灭。
我们把它接入电路,准备好迎接它的“表现”。
2.3 安全措施在进行实验之前,安全可不能马虎。
我们确保电源关闭,检查所有连接,确保一切正常。
毕竟,安全第一,任何小失误都可能引发“大麻烦”。
三、实验过程3.1 连接电路首先,我们根据电路图连接所有元件。
小心翼翼地将电缆接入D型触发器。
电缆像是我们的手,仔细地操控每一个连接。
看到电路成形,心中有种莫名的期待。
3.2 测试触发器一切准备好后,开启电源。
按下开关,LED灯瞬间亮起。
那一刻,仿佛看到了触发器在欢呼。
又按一下,灯灭了,状态变化真是瞬息万变。
就像生活,时刻都在变化,让人惊喜。
3.3 数据记录我们开始记录每次实验的结果。
数据像是我们收集到的“宝藏”,每一组数字都有它的故事。
这种追踪过程,就像是在解谜,寻找背后的秘密。
四、实验结果4.1 状态变化通过几轮实验,我们观察到触发器在不同输入条件下的状态变化。
每一次按下开关,触发器都准确无误地改变状态,表现得相当稳定。
这让我想起一句话:“坚持就是胜利”。
4.2 误差分析当然,实验中也不是没有波折。
偶尔会出现状态不一致的情况。
这就引发了我们的讨论,究竟是接线问题,还是外部干扰。
最终,我们发现是接触不良导致的,改正后,一切恢复正常。
触发器——实验报告本次实验主要针对的是数据库的触发器,触发器可以在数据库中对指定的事件进行响应,可以在事件发生前或发生后对相关的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表示删除的记录。
实验六-数据库的存储过程和触发器
大学实验报告(六)2014年04月08日
专业年级
2012级
信计专业
(1)班
学号201221143025
成绩
姓名
课程名称
《数据库
管理系统》
实验名称
数据库的存储过程和
触发器
实验目的和要求(1)掌握存储过程的创建与应用
(2)了解触发器的创建与使用.
实验内容和步骤1)用存储过程查询指定课程选课的学生人
数、最高成绩、最低成绩和平均成绩.
2)用存储过程求某系学生选修的课程号及成
绩.
3)用存储过程查询某门课程成绩大于80分
的学生姓名.
4)用存储过程查询缺成绩的学生名和课程
号.
5)查询每位学生已选课程的门数和总平均成绩.
6)假设有两张结构完全一样的表,创建触发器a,当一张表某条记录更新时,另一张表该条记录也跟着更新;创建触发器b,当一张表添加一条记录时,另一张表也自动添加;
研究与探讨
评语。
触发器实验报告一、实验目的。
本实验旨在通过实际操作,加深对触发器工作原理的理解,掌握触发器的使用方法,并能够准确地进行触发器的实验测量。
二、实验仪器与设备。
1. 示波器。
2. 信号发生器。
3. 电源。
4. 电路连接板。
5. 电阻、电容、开关等元器件。
三、实验原理。
触发器是一种能够存储和放大数字信号的电子元件,根据输入信号的不同,可以分为正边沿触发器和负边沿触发器。
在本实验中,我们将主要研究正边沿触发器的工作原理和特性。
四、实验步骤。
1. 将触发器电路连接至电源、示波器和信号发生器。
2. 调节信号发生器,产生不同频率和幅值的方波信号输入至触发器。
3. 观察示波器上输出的波形,并记录下触发器的工作状态。
4. 调节输入信号的频率和幅值,重复步骤3,得到更多的实验数据。
5. 对实验数据进行分析,总结触发器的特性和工作规律。
五、实验数据与分析。
通过实验我们得到了不同频率和幅值下触发器的输出波形,观察到了触发器的触发特性和稳态特性。
在输入信号达到一定条件时,触发器会输出稳定的高电平或低电平信号,这为数字电路的稳定工作提供了重要保障。
六、实验结论。
通过本次实验,我们深入了解了触发器的工作原理和特性,掌握了触发器的使用方法,能够准确地进行触发器的实验测量。
同时,我们也意识到了触发器在数字电路中的重要作用,为今后的学习和工作打下了坚实的基础。
七、实验心得。
通过动手操作,我们不仅加深了对触发器的理解,还提高了实际动手能力和实验数据处理能力。
实验中遇到的问题和挑战,也让我们更加谨慎和细致,为今后的学习和科研工作积累了宝贵的经验。
八、参考文献。
1. 《数字电子技术基础》,XXX,XXX出版社,XXXX年。
2. 《电子技术实验指导书》,XXX,XXX出版社,XXXX年。
以上为触发器实验报告内容,希望能对大家的学习和科研工作有所帮助。
硬件实验实验报告实验6:触发器一、实验目的:熟悉几种常见触发器的逻辑功能,准确理解触发器特性描述和正确对其逻辑功能进行测试操作。
熟练使用示波器来观看触发器的时序图。
二、实验内容1、用74LS00搭接一个基本RS触发器,并对其功能进行测试,填写基本RS触发器的特性表。
2、将2个D触发器接成异步计数器,在此基础上实现4分频,再用示波器记录分频信号波形。
3、用4个D触发器设计一个4位的环形计数器。
三、实验环境四、实验数据记录1、用74LS00搭接一个基本RS触发器,并对其功能进行测试,填写基本RS触发器的特性表。
答:芯片选择:74LS007400的管脚图测试电路图如下S R Q n Q1 n0 0 1 10 01 0 1 10 10 1 1 00 01 1 1 10 1设计思路:通过2输入与非门实现R-S锁存器,本设计中的反相器是通过2输入与非门实现的,由于增加了反相器,因此该锁存器的功能表和通用的R-S锁存器相一致2、将2个D触发器接成异步计数器,在此基础上实现4分频,再用示波器记录分频信号波形。
答:芯片选择:74LS747474的引脚图电路图如下实际电路中Q1’,Q2’在接线时并不是通过Q1,Q2分别求反得到的,7474芯片有Q1’,Q2’的输出实验所得波形图如下参数说明CH1:输入脉冲信号(5KHz) CH2:输出脉冲信号(1.25KHz)时基电压灵敏度周期峰峰值正占空比200.0us 2.00V CH1 CH2 CH1 CH2 CH1 CH2200.0us 800.0us 4.0V 4.0V 50.5% 50.5%设计思路:利用2个D触发器构成了模4的异步计数器一次实现4次分频的功能,其中第一个D触发器的输出端Q1接第二个D触发器的时钟输入,Q2即为分频后的结果3、用4个D触发器设计一个4位的环形计数器。
(单向 0000——>1000——>0100——>0010——>0001——>0000)答:芯片选择74LS175、74LS0874175的管脚图 7408的管脚图实验电路图:电路图中的A’,B’,C’,D’在接线时并不是通过ABCD求反得到的,74175芯片含A’,B’,C’,D’输出端实验结果:测试时能正确的循环计数和人和状态均能自动进入循环体设计思路:通过四个D同步触发器级联而成,第一个触发器的数据输入端D=A B C D,只有当ABCD=0000时才会产生一个1其余情况全为0,以此实现1在循环体中的逐渐移动五、实验日志与总结1、本次试验主要学习了R-S锁存器和D触发器的一些知识,熟悉了其逻辑功能和使用方法,并运用D触发器构成了4次分频器和环形计数器2、通过本次试验,我进一步提高了自己设计电路的能力,掌握了电路查错和检查芯片的一些基本方法,比如带电测试其管脚的电压值等3、在本次试验中学习了芯片74LS74、74LS175的管脚分配和使用方法,复习了芯片74LS00、74LS084、本次试验没有能够实现能左右移动的环形计数器,只做了一个右移的,但自己动手尝试努力过,还需不断提高自己的设计能力。
实验6 存储过程和触发器一、实验目的1、加深和巩固对存储过程和触发器概念的理解。
2、掌握触发器的简单应用。
3、掌握存储过程的简单应用。
二、实验内容一)存储过程:1. 创建一存储过程,求l+2+3+…+n,并打印结果。
CREATE PROCEDURE addresultASDECLARE @n int=10,/*最后一个数*/@i int=0,@result int=0 /*结果*/BEGINWHILE(@i<=@n)BEGINSET @result=@result+@iSET @i=@i+1ENDPRINT'1+2+3+...+n的结果是:'PRINT @resultRETURN(@result)ENDGO2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。
EXEC addresult3. 修改上述存储过程为addresult1,使得@n为输入参数,其具体值由用户调用此存储过程时指定。
CREATE PROCEDURE addresult1@n int=10 /*最后一个数*/ASDECLARE @i int=0,@result int=0 /*结果*/BEGINWHILE(@i<=@n)BEGINSET @result=@result+@iSET @i=@i+1ENDPRINT'1+2+3+...+n的结果是:'PRINT @resultRETURN(@result)ENDGO4. 调用上面修改后的addresult1存储过程,打印l+2+3+ (100)结果。
EXEC addresult1 1005.修改上述存储过程为addresult2,将@n参数设定默认值为10,并改设@sum为输出参数,让主程序能够接收计算结果。
CREATE PROCEDURE addresult2@n int=10,/*最后一个数*/@sum int out/*结果*/ASDECLARE @i int=0BEGINset @sum=0WHILE(@i<=@n)BEGINSET @sum=@sum+@iSET @i=@i+1ENDENDGO6.调用上面修改后的addresult2存储过程,设置变量@s接收计算l+2+3+…+10的结果。
触发器功能测试实验报告引言触发器是数据库中一种强大的功能,用于在特定条件满足时自动触发某些操作。
本实验旨在测试触发器在数据库管理系统中的功能和效果。
通过本实验,我们将深入了解触发器的工作原理,并验证其可靠性和效率。
实验环境为了进行本实验,我们使用了以下软件和工具:•数据库管理系统: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 ;步骤四:测试触发器现在,我们已经完成了触发器的创建,可以进行测试了。
数字电路与EDA实践教程实验报告系部名称:电子工程学院学生姓名:专业名称:光电信息工程班级:时间:2011.10.27学号: 31实验六 触发器设计一、实验目的(1)认识RS 触发器、JK 触发器、D 触发器和T 触发器。
(2)掌握RS 触发器、JK 触发器、D 触发器和T 触发器的逻辑功能及动作特点。
(3)能够通过CPLD 开发实现具有触发器功能的数字电路。
二、实验原理及内容实验一 JK 触发器要求设计一个合理的电路,通过MAX+plus Ⅱ软件仿真和CPLD 实现验证JK 触发器的逻辑功能,并掌握其动作特点。
此次设计的JK 触发器如图所示。
JK 触发器功能表如下。
异步置位端PRNJ 端 输出端QCP 端K 端异步复位端CLRNPRN CLRN CP J K Q 0 1 × × × 0 1 0 × × × 1 0 0 × × × 1 1 1 0 0 保持 1 1 0 1 01 1 1 0 1 1 1 1 1 翻转电路程序 SET J Q K Q CLR仿真图实验一 D 触发器要求设计一个合理的电路,通过MAX+plus Ⅱ软件仿真和CPLD 实现验证D 触发器的逻辑功能,并掌握其动作特点。
此次设计的D 触发器如图所示。
D 触发器功能表如下。
异步置位端PRND 端 输出端Q CP 端异步复位端CLRNPRN CLRN CLK D Q0 1 × × 1 1 0 × × 00 0 × × 11 1 1 11 1 0 01 1 0 × 保持SET D Q Q CLR电路程序仿真图5.实验心得在本次试验中首先是要清楚了解JK触发器和D触发器的功能,其各个管脚的功能;其次,分清楚异步与同步在编程上的差别,从而可以更好的设计程序。
淮海工学院计算机工程学院实验报告书课程名:《数据库原理及应用》题目:存储过程和触发器班级:软件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上保存存储过程。
淮海工学院计算机工程学院实验报告书课程名:《数据库原理及应用》题目:存储过程和触发器班级:软件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上保存存储过程。
在默认情况下,只有数据库拥有者(DBO)具有对数据库的CREATE PROCEDURE访问权。
但是,DBO可执行以下形式的GRANT语句向由语句中的<username>所标识的用户ID授予CREATE PROCEDURE访问权: GRANT CREATE PROCEDURE <username>CREATE PROCEDURE语句的句法如下:CREATE PROCEDURE <procedure name> [;<version number>][{@<parameter name><data type> [VARYING][=<default value>] [OUTPUT][…,n]}][WITH {RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}][FOR REPLICATION]AS <Transact-SQL statement(s)>其中:<procedure name>是存储过程的名称,名称至多可有128个字符。
<version number>允许创建多个有相同名称的存储过程。
通过在执行命令中包括版本号从而执行指定版本的存储过程,如下面的语句所示:EXEC usp_proc;2。
如果调用存储过程时没有指定版本号,DBMS将执行具有相同名称的存储过程组中最高版本号的存储过程。
通过在DROP语句中包括版本号,如DROP PROCEDURE usp_proc;2所示,可以删除特定版本号的存储过程,或者忽略版本号,如DROP PROCEDURE usp_proc从而一次删除存储过程的所有版本。
<parameter name>是可用作存储过程中的变量的参数名。
每个参数的值必须在存储过程调用中提供或者作为CREATE PROCEDURE语句的一部分设置为缺省值。
虽然参数可用作存储过程中的变量名,但参数不能用作列名、表名或是其他数据库对象的名称。
<data type>是参数的数据类型。
参数可以是任何合法的SQL数据类型(包括TEXT、NTEXT和IMAGE)或用户定义的数据类型。
如果参数是CURSOR数据类型,该参数还必须被指定为VARYING和OUTPUT。
VARYING仅对数据类型为CURSOR的参数才是合法的。
指明该参数将包括内容会变化的结果集,其内容由存储过程中的语句动态地构成。
<default value>是参数的默认值。
如果指定,则过程可在不指定参数的情况下执行。
OUTPUT指明参数在存储过程中可以变化,而且修改后的值可返回给主调过程。
…,n指明CREATE PROCEDURE语句可有多达2100个参数。
RECOMPILE每当存储过程被调用时告诉MS-SQL Server都要进行编译(也就是生成新的执行计划)。
如果没有此选项项,DBMS在执行CREATE PROCEDURE语句时编码存储过程,每次调用时都使用同一执行计划。
ENCRYPTION告诉MS-SQL Server加密SYSCOMMENTS表中存储过程条目的文本,以防止用户查看编译后的存储过程中的语句。
指定此选项还可防止存储过程被除数作为MS-SQL Server的复制过程而分开。
由于创建的触发器在条件成立时会自动被调用,可能影响后面示例的执行,所以当一个触发器不再需要时,需将其禁用,禁用trigop触发器的操作是:选中factory表节点,展开下方的触发器节点,右击trigop,在出现的快捷菜单中选择禁用命令。