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数据库并展示在前端页面的实现代码
May 02 MySQL
Mysql 用户权限管理实现
May 25 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
一篇文章带你深入了解Mysql触发器
Aug 02 MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 MySQL
MySQL学习之基础操作总结
Mar 19 MySQL
mysql中数据库覆盖导入的几种方式总结
Mar 25 MySQL
mysql的Buffer Pool存储及原理
Apr 02 MySQL
为什么MySQL不建议使用SELECT *
Apr 03 MySQL
详细介绍MySQL中limit和offset的用法
May 06 MySQL
MySQL 逻辑备份 into outfile
May 15 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
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
清空上传控件input file的值
2010/07/03 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
快速了解Python中的装饰器
2018/01/11 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
英国工具中心:UK Tool Centre
2017/07/10 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
Linux操作面试题
2015/02/11 面试题
2015年毕业生自我鉴定模板
2014/09/19 职场文书
会计工作岗位职责
2015/02/03 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
Python基础详解之描述符
2021/04/28 Python