龙空技术网

数据库:存储过程及触发器的实验报告

曾也疯 171

前言:

当前小伙伴们对“mysql测试报告”可能比较注意,小伙伴们都想要了解一些“mysql测试报告”的相关资讯。那么小编在网摘上汇集了一些有关“mysql测试报告””的相关内容,希望朋友们能喜欢,同学们一起来了解一下吧!

实验目的:进一步了解关于存储过程和触发器的定义及实现

实验名称:存储过程、触发器的定义以及验证

实验内容:完成以下关于存储过程和触发器的定义以及验证。

1.[例7.50] 输入某个同学的学号,统计该同学的平均分。

CREATE PROCEDURE proStudentByNo1(sNo char(7))BEGIN        SELECT a.studentNo, studentName, avg(score)        FROM Student a, Score b        WHERE a.studentNo=b.studentNo              AND a.studentNo=sNo        GROUP BY a.studentNo, studentName;END

执行该存储过程:call proStudentByNo1('0800001');

2.输入某个同学的学号,统计该同学的平均分,并返回该同学的姓名和平均分。

CREATE PROCEDURE proStudentByNo21(@sNo char(7), @sNamevarchar(20) OUTPUT,  @avg numeric(5, 1) OUTPUT )ASBEGIN           SELECT @sName=studentName     FROM Student   WHERE studentNo=@sNo     SELECT @avg=avg(score)     FROM Score   WHERE studentNo=@sNo     GROUP BY studentNoEND

执行存储过程proStudentByNo2 1

DECLARE @sNamevarchar(20), @avg numeric(5, 1)

EXECUTE proStudentByNo21 '0800001', @sName OUTPUT, @avg OUTPUT

SELECT @sName, @avg

把以上SQLServer版本的存储过程改为MYSQL版本并运行

3. 创建触发器,当输入某个同学选课成绩时,如果他是少数民族人,其成绩自动加5分。

CREATE TRIGGER ScoreIns BEFORE INSERTON Score FOR EACH ROWBEGIN      UPDATE Student SET NEW.score=NEW.score+5      WHERE Student.studentNo=NEW.studentNoand Student.nation<>'汉族';END

实验步骤:

首先连接名为scoredbd的数据库,然后新建查询,输入SQL语句,运行。

1. 输入学号为0800001,统计该同学的平均分。SQL语句及运行结果如下:

执行存储过程:

2、输入学号为0800001,统计该同学的平均分,并返回该同学的姓名和平均分。

3. 创建触发器,当输入某个同学选课成绩时,如果他是少数民族人,其成绩自动加5分。

(1)往Score表插入一条记录,要求studentNo值所对应学生在Student表的民族为’汉族’,查看Score表中刚才插入的记录的score值是否有变化。

(2)再往Score表插入一条记录,要求studentNo值所对应学生在Student表的民族为’蒙古族’,查看Score表中刚才插入的记录的score值是否有变化。

标签: #mysql测试报告 #sql数据库自动编号 #mysql存储过程触发器 #mysql课本里的实训触发器 #mysql触发器实验报告