MySQL实验五:触发器、存储过程操作实验
2021/9/9 2:08:19
本文主要是介绍MySQL实验五:触发器、存储过程操作实验,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
实验五:触发器、存储过程操作实验
一、实验目的
1、掌握存储过程创建和调用的方法;
2、掌握MySQL中程序片段的组成;
3、掌握触发器的使用方法。
二、实验环境
硬件:PC机
软件:Linux操作系统、MySQL Server 6.0
三、实验内容和步骤
1、存储过程:
(1)创建存储过程,使用student表中的学生人数来初始化一个局部变量,并调用这个存储过程;
(2)创建存储过程,比较两学生的年龄,若前者比后者大就输出0,否则输出1。
调用时发现报错,原因是源代码中定义的Sno2学号长度不够,
因为之前输入数据表中所有学生的学号都是10位,而源代码第二行此处定义为in Sno2 varchar(9);从以下结果可见若输入第二名学生的学号为9位是可以正常运行的,但却不能满足我们需要进行比较的要求。
可以将COMPA删除后重新定义。
运行成功,比较得到结果。
2、触发器:
(1)创建触发器,在student表中删除学生信息的同时将sc表中该学生的选课信息删除,以确保数据的完整性;
删除student表中的一行数据,然后查看sc表的变化:
与原本的sc表(上图)对比,可见当前sc表(下图)中学号为3116003043的学生对应的数据也删除了。
(2)假设student1表和student表的结构和内容都相同,在student1上创建一个触发器,如果添加一个学生的信息,该课程也会被添加到student表中。
向student表中添加一条新信息(‘2008006’,‘杨过’,‘男’,19,‘IS’) :观察student1表的变化;
直接添加信息出现报错,原因是student1不存在,需要创建表student1;
Student1创建成功,但此时插入信息仍有报错。因为有中文输入,所以还要更改student1和在student1出现中文的列(姓名Sname、性别Sage)的编码格式。
此时插入成功。对比student1和student表,出现了相同的学生信息。
(3)定义一个BEFORE行级触发器,为teacher表定义完整性规则,“向teacher插入教授的信息时,工资不得低于4000元,如果低于4000元,则自动将其更改为4000元”。
先定义teacher表,修改表、列编码格式为utf8,将教师信息输入teacher表中。
定义before行级触发器,为teacher表定义完整性规则。由于if语句中需要出现分号,所以需要先设置sql语句结束符不为分号,比如可以设置为$$。
向teacher表中添加一条新信息(‘10007’,’罗陵’,’女’,’教授’,3500),令其工资低于4000,观察结果。
(4)删除teacher表上的触发器teacher_Income。
这篇关于MySQL实验五:触发器、存储过程操作实验的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南