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


Posted in MySQL onJune 21, 2022

观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考。

一、实验目的

  • 1、掌握某主流DBMS支持的SQL编程语言和编程规范,规范设计存储过程;
  • 2、能够理解不同类型触发器的作用和执行原理,验证触发器的有效性;
  • 3、培养学生的系统思维,提升解决复杂工程问题所需的编程能力。

二、实验要求

掌握某主流DBMS的SQL编程语言,在前面创建的数据库基础上,定义BEFORE(for)触发器和AFTER触发器;掌握数据库存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。

温馨提示:以下内容均已经过测试,不过难免会有疏漏,但是代码实现大多数思路及实现经测验都是正确的。

三、实现内容及步骤

1、创建一个不带参数的简单存储过程

  • (1)创建存储过程sp_avggrade,实现查询每门课程学生的平均成绩的功能;
delimiter//
CREATE PROCEDURE sp_avggrade()
COMMENT '查询每门课程学生的平均成绩的功能'
BEGIN
SELECT cno as 课程号,avg(grade)as 平均成绩
FROM sc
GROUP BY cno;
end//
delimiter;

(2)调用该存储过程,实现查询。

call sp_avggrade();

2、创建一个带输入参数的存储过程

(1)创建存储过程sp_course_avggrade, 实现通过输入课程编号参数查询指定课程编号的课程平均成绩的功能;

delimiter//
CREATE PROCEDURE sp_course_avggrade(IN c_no CHAR(2))
COMMENT '通过输入课程编号参数查询指定课程编号的课程平均成绩的功能'
BEGIN
SELECT cno,AVG(grade)
FROM sc
WHERE cno=c_no;
END//
delimiter;

(2)调用该存储过程,获取指定课程的平均成绩。

3、创建一个带输入输出参数的存储过程

(1)创建存储过程sp_sdept _student,实现根据用户输入的院系编号参数,查找该学院的学生人数,并以变量形式输出的功能;

delimiter//
CREATE PROCEDURE sp_sdept_student2(IN _sdept CHAR(10),OUT num int)
BEGIN
SELECT COUNT(sno) INTO num
FROM student
WHERE _sdept = sdept;
END//
delimiter;

(2)调用该存储过程,以返回变量的形式获取相应院系的学生人数。

SET @num=10;
CALL sp_sdept_student2('计科',@num);
SELECT @num AS '人数';

4、触发器的创建与使用

(1)在学生表上创建触发器,实现学生表中删除学生记录时,成绩表中该学生成绩记录的级联删除;

delimiter//
CREATE TRIGGER delete_stu
BEFORE DELETE
ON student
FOR EACH ROW
BEGIN
DELETE
FROM sc
WHERE sc.sno=old.sno;
END//
delimiter;

(2)在选课表上创建触发器,若录入的成绩大于100分,小于0分,则拒绝插入记录并显示;

delimiter//
CREATE TRIGGER scgrade
BEFORE INSERT ON sc
FOR EACH ROW
BEGIN
IF new.grade>100 or new.grade < 0 THEN
SIGNAL SQLSTATE '45000'
SET message_text='录入成绩不符合规定,拒绝插入';
END IF;
END//
delimiter;

(3)验证(1)、(2)中触发器

验证(1)

DELETE
FROM student
WHERE sno='201513';

验证(2)

INSERT INTO sc(sno,cno,grade)
VALUES('2002720','1',200);

四、实验总结

  • 1、通过本次实验,对存储过程和触发器有了更深的认识;
  • 2、能够理解不同类型触发器的作用和执行原理, 验证了触发器的有效性;
  • 3、熟练掌握了数据库存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。

到此这篇关于MySQL数据库实验之 触发器和存储过程的文章就介绍到这了,更多相关MySQ存储过程内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

MySQL 相关文章推荐
MySQL 角色(role)功能介绍
Apr 24 MySQL
MySQL中你可能忽略的COLLATION实例详解
May 12 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
MySQL为id选择合适的数据类型
Jun 07 MySQL
浅谈MySQL user权限表
Jun 18 MySQL
MySQL日期时间函数知识汇总
Mar 17 MySQL
MySQL学习之基础操作总结
Mar 19 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
mysql的单列多值存储实例详解
Apr 05 MySQL
MySQL数据库如何使用Shell进行连接
Apr 12 MySQL
Mysql调整优化之四种分区方式以及组合分区
Apr 13 MySQL
mysql如何查询连续记录
May 11 MySQL
MySQL transaction事务安全示例讲解
Jun 21 #MySQL
MySQL详细讲解变量variables的用法
Jun 21 #MySQL
mysql sql常用语句大全
Jun 21 #MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 #MySQL
mysql幻读详解实例以及解决办法
Jun 16 #MySQL
mysql数据库隔离级别详解
Jun 16 #MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 #MySQL
You might like
php 无限级缓存的类的扩展
2009/03/16 PHP
php xml实例 留言本
2009/03/20 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
JS分页效果示例
2013/10/11 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
酒店总经理欢迎词
2014/01/08 职场文书
农贸市场管理制度
2014/01/31 职场文书
手机促销活动方案
2014/02/05 职场文书
文艺晚会策划方案
2014/06/11 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
中学生自我评价范文
2015/03/03 职场文书