这篇文章主要介绍“MySQL数据库的触发器和存储过程实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mysql数据库的触发器和存储过程实例分析”文章能帮助大家解决问题。一、实验目的掌握某主流D
这篇文章主要介绍“MySQL数据库的触发器和存储过程实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mysql数据库的触发器和存储过程实例分析”文章能帮助大家解决问题。
掌握某主流DBMS的SQL编程语言,在前面创建的数据库基础上,定义BEFORE(for)触发器和AFTER触发器;掌握数据库存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。
温馨提示:以下内容均已经过测试,不过难免会有疏漏,但是代码实现大多数思路及实现经测验都是正确的。
(1)创建存储过程sp_avggrade,实现查询每门课程学生的平均成绩的功能;
delimiter//CREATE PROCEDURE sp_avggrade()COMMENT '查询每门课程学生的平均成绩的功能'BEGINSELECT cno as 课程号,avg(grade)as 平均成绩FROM scGROUP BY cno;end//delimiter;
(2)调用该存储过程,实现查询。
call sp_avggrade();
(1)创建存储过程sp_course_avggrade, 实现通过输入课程编号参数查询指定课程编号的课程平均成绩的功能;
delimiter//CREATE PROCEDURE sp_course_avggrade(IN c_no CHAR(2))COMMENT '通过输入课程编号参数查询指定课程编号的课程平均成绩的功能'BEGINSELECT cno,AVG(grade)FROM scWHERE cno=c_no;END//delimiter;
(2)调用该存储过程,获取指定课程的平均成绩。
(1)创建存储过程sp_sdept _student,实现根据用户输入的院系编号参数,查找该学院的学生人数,并以变量形式输出的功能;
delimiter//CREATE PROCEDURE sp_sdept_student2(IN _sdept CHAR(10),OUT num int)BEGINSELECT COUNT(sno) INTO numFROM studentWHERE _sdept = sdept;END//delimiter;
(2)调用该存储过程,以返回变量的形式获取相应院系的学生人数。
SET @num=10;CALL sp_sdept_student2('计科',@num);SELECT @num AS '人数';
(1)在学生表上创建触发器,实现学生表中删除学生记录时,成绩表中该学生成绩记录的级联删除;
delimiter//CREATE TRIGGER delete_stuBEFORE DELETEON studentFOR EACH ROWBEGINDELETEFROM scWHERE sc.sno=old.sno;END//delimiter;
(2)在选课表上创建触发器,若录入的成绩大于100分,小于0分,则拒绝插入记录并显示;
delimiter//CREATE TRIGGER scgradeBEFORE INSERT ON scFOR EACH ROWBEGINIF new.grade>100 or new.grade < 0 THENSIGNAL SQLSTATE '45000'SET message_text='录入成绩不符合规定,拒绝插入';END IF;END//delimiter;
(3)验证(1)、(2)中触发器
验证(1)
DELETEFROM studentWHERE sno='201513';
验证(2)
INSERT INTO sc(sno,cno,grade)VALUES('2002720','1',200);
关于“mysql数据库的触发器和存储过程实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网数据库频道,小编每天都会为大家更新不同的知识点。
--结束END--
本文标题: MySQL数据库的触发器和存储过程实例分析
本文链接: https://www.lsjlt.com/news/341497.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-29
2024-04-29
2024-04-29
2024-04-29
2024-04-28
2024-04-28
2024-04-28
2024-04-28
2024-04-28
2024-04-28
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0