软件开发定制数据库实验5---存储过程和存储函数

软件开发定制和存储函数

实验内容

  1. 软件开发定制输入以下代码,软件开发定制创建存储过程stu_info,软件开发定制执行时通过输入姓名,软件开发定制可以查询该姓名的学生软件开发定制的各科成绩。
    DELIMITER @@
    CREATE PROCEDURE stu_info(IN name CHAR(8))
    BEGIN
    SELECT s.学号,姓名,课程编号,分数 FROM student_info s,grade g
    WHERE s.学号=g.学号 and 姓名=name;
    END @@
    使用CALL软件开发定制命令执行存储过程stu_info,其参数值为’张青平’。
    DELIMITER ;
    CALL stu_info(‘张青平’);
  2. 使用studentsdb数据库中的student_info表、curriculum表、grade表。
    (1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。
    (2)调用存储过程stu_grade。
  3. 使用studentsdb数据库中的student_info表、curriculum表、grade表。
    (1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。
    (2)调用存储过程stu_name。
    (3)删除存储过程stu_name。
  4. 使用studentsdb数据库中的grade表。
    (1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。
    (2)执行存储过程stu_g_r,输入学号0002。
    (3)显示0002号学生的选课门数。
  5. 使用studentsdb数据库中的curriculum表、grade表。
    (1)创建一个存储函数num_func,统计指定课程名称的选课人数。
    (2)执行存储函数num_func,查看“C语言程序设计”选课人数。
  6. 使用studentsdb数据库中的curriculum表、grade表。
    (1)创建一个存储函数avg_func,通过游标统计指定课程的平均分。
    (2)执行存储函数avg_func,查看“C语言程序设计”课程平均分。
    (3)删除存储函数avg_func。

实验步骤及处理结果

粘贴SQL代码(小四号,宋体)及运行结果图

思考体会

参考资料


# 附 代码
#先要有个数据库CREATE DATABASE studentsdb;USE studentsdb;#1. 输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的学生的各科成绩。DELIMITER @@CREATE PROCEDURE stu_info(IN name CHAR(8)) BEGIN  SELECT s.学号,姓名,课程编号,分数 FROM student_info s,grade g   WHERE s.学号=g.学号 and 姓名=name; END @@#使用CALL命令执行存储过程stu_info,其参数值为'张青平'。DELIMITER ;CALL stu_info('张青平');/*2. 使用studentsdb数据库中的student_info表、curriculum表、grade表。(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。(2)调用存储过程stu_grade。*/DELIMITER @@CREATE PROCEDURE stu_grade()BEGIN  SELECT 姓名,课程名称,分数 FROM student_info s,curriculum c,grade g  WHERE s.`学号`=g.`学号` AND c.`课程编号`=g.`课程编号` AND s.`学号`='0001';end @@DELIMITER ;CALL stu_grade();/*3. 使用studentsdb数据库中的student_info表、curriculum表、grade表。(1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。(2)调用存储过程stu_name。(3)删除存储过程stu_name。*/DELIMITER @@CREATE PROCEDURE stu_name(IN name CHAR(8))BEGIN  SELECT `姓名`,MAX(g.分数) 最高分,MIN(g.分数) 最低分,AVG(g.分数) 平均分 FROM student_info s,curriculum c,grade g  WHERE s.`学号`=g.`学号` AND c.`课程编号`=g.`课程编号` AND 姓名=name GROUP BY 姓名;END @@DELIMITER ;CALL stu_name('张青平');DROP PROCEDURE stu_name;/*4. 使用studentsdb数据库中的grade表。(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。(2)执行存储过程stu_g_r,输入学号0002。(3)显示0002号学生的选课门数。*/DELIMITER @@CREATE PROCEDURE stu_g_r(IN cno CHAR(4),OUT num INT)BEGIN   SELECT count(*) INTO num FROM grade WHERE 学号=cno;end @@DELIMITER ;CALL stu_g_r('0002',@num);SELECT @num;/*5. 使用studentsdb数据库中的curriculum表、grade表。(1)创建一个存储函数num_func,统计指定课程名称的选课人数。(2)执行存储函数num_func,查看“C语言程序设计”选课人数。*/SET GLOBAL log_bin_trust_function_creators=1;DELIMITER @@CREATE FUNCTION num_func(cname VARCHAR(50))RETURNS INTBEGIN  DECLARE num INT;  SELECT COUNT(*) INTO num FROM grade g,curriculum c  WHERE g.课程编号=c.课程编号 AND c.课程名称=cname;  RETURN num;END @@DELIMITER ;SELECT num_func('C语言程序设计');/*6. 使用studentsdb数据库中的curriculum表、grade表。(1)创建一个存储函数avg_func,通过游标统计指定课程的平均分。(2)执行存储函数avg_func,查看“C语言程序设计”课程平均分。(3)删除存储函数avg_func。*/DELIMITER @@CREATE FUNCTION avg_func(cname VARCHAR(50))RETURNS DECIMAL   BEGIN    DECLARE v_acg DECIMAL;		DECLARE avg_cur CURSOR FOR SELECT avg(分数) FROM grade g, curriculum c			WHERE g.课程编号 = c.课程编号 AND 课程名称 = cname;		OPEN avg_cur;		FETCH avg_cur INTO v_acg;		CLOSE avg_cur;		RETURN v_acg;	 END @@SELECT avg_func('C语言程序设计') 课程平均分;DROP FUNCTION avg_func;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发