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 14 MySQL
浅谈MySQL user权限表
Jun 18 MySQL
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
Jun 26 MySQL
MySQL约束超详解
Sep 04 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
MySQL面试题讲解之如何设置Hash索引
Nov 01 MySQL
面试被问select......for update会锁表还是锁行
Nov 11 MySQL
Mysql外键约束的创建与删除的使用
Mar 03 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
MySQL transaction事务安全示例讲解
Jun 21 MySQL
Mysql中的触发器定义及语法介绍
Jun 25 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
用libTemplate实现静态网页的生成
2006/10/09 PHP
强烈推荐:php.ini中文版(1)
2006/10/09 PHP
PHP中的替代语法简介
2014/08/22 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
用Python编写web API的教程
2015/04/30 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
python 中split 和 strip的实例详解
2017/07/12 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
CSS3 分类菜单效果
2019/05/27 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
2014年度培训工作总结
2014/11/27 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
立项申请报告范本
2015/05/15 职场文书
怎样写家长意见
2015/06/04 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
Python机器学习之决策树和随机森林
2021/07/15 Javascript