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 06 MySQL
MySQL中你可能忽略的COLLATION实例详解
May 12 MySQL
MySQL中distinct与group by之间的性能进行比较
May 26 MySQL
详解MySQL中的pid与socket
Jun 15 MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 MySQL
MySQL数据库10秒内插入百万条数据的实现
Nov 01 MySQL
浅谈如何保证Mysql主从一致
Mar 13 MySQL
mysql中数据库覆盖导入的几种方式总结
Mar 25 MySQL
MySQL创建管理子分区
Apr 13 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 MySQL
SQL Server数据库的三种创建方法汇总
May 08 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
基于mysql的bbs设计(五)
2006/10/09 PHP
用PHP实现维护文件代码
2007/06/14 PHP
php检测useragent版本示例
2014/03/24 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
php文件下载处理方法分析
2015/04/22 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
Python中的filter()函数的用法
2015/04/27 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Python如何实现强制数据类型转换
2019/11/22 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
python logging 日志的级别调整方式
2020/02/21 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
井冈山红色之旅心得体会
2014/10/07 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
检察院起诉书
2015/05/20 职场文书
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏