您的位置:首页 > 教程 > Mysql/MariaDB > MySQL数据库实验之 触发器和存储过程

MySQL数据库实验之 触发器和存储过程

2022-06-20 14:45:30 来源:易采站长站 作者:

MySQL数据库实验之 触发器和存储过程

目录
一、实验目的二、实验要求三、实现内容及步骤1、创建一个不带参数的简单存储过程2、创建一个带输入参数的存储过程3、创建一个带输入输出参数的存储过程4、触发器的创建与使用四、实验总结

观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考。2Bm站长之家-易采站长站-Easck.Com

2Bm站长之家-易采站长站-Easck.Com

一、实验目的

    1、掌握某主流DBMS支持的SQL编程语言和编程规范,规范设计存储过程;2、能够理解不同类型触发器的作用和执行原理,验证触发器的有效性;3、培养学生的系统思维,提升解决复杂工程问题所需的编程能力。

    2Bm站长之家-易采站长站-Easck.Com

    二、实验要求

    掌握某主流DBMS的SQL编程语言,在前面创建的数据库基础上,定义BEFORE(for)触发器和AFTER触发器;掌握数据库存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。2Bm站长之家-易采站长站-Easck.Com

    温馨提示:以下内容均已经过测试,不过难免会有疏漏,但是代码实现大多数思路及实现经测验都是正确的。2Bm站长之家-易采站长站-Easck.Com

    2Bm站长之家-易采站长站-Easck.Com

    三、实现内容及步骤

    2Bm站长之家-易采站长站-Easck.Com

    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)调用该存储过程,实现查询。2Bm站长之家-易采站长站-Easck.Com

      call sp_avggrade();

      2Bm站长之家-易采站长站-Easck.Com

      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)调用该存储过程,获取指定课程的平均成绩。2Bm站长之家-易采站长站-Easck.Com

      2Bm站长之家-易采站长站-Easck.Com

      3、创建一个带输入输出参数的存储过程

      (1)创建存储过程sp_sdept>

      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)调用该存储过程,以返回变量的形式获取相应院系的学生人数。2Bm站长之家-易采站长站-Easck.Com

      SET @num=10;
      CALL sp_sdept_student2('计科',@num);
      SELECT @num AS '人数';

      2Bm站长之家-易采站长站-Easck.Com

      4、触发器的创建与使用

      (1)在学生表上创建触发器,实现学生表中删除学生记录时,成绩表中该学生成绩记录的级联删除;2Bm站长之家-易采站长站-Easck.Com

      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分,则拒绝插入记录并显示;2Bm站长之家-易采站长站-Easck.Com

      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)中触发器2Bm站长之家-易采站长站-Easck.Com

      验证(1)2Bm站长之家-易采站长站-Easck.Com

      DELETE
      FROM student
      WHERE sno='201513';

      验证(2)2Bm站长之家-易采站长站-Easck.Com

      INSERT INTO sc(sno,cno,grade)
      VALUES('2002720','1',200);

      2Bm站长之家-易采站长站-Easck.Com

      四、实验总结

        1、通过本次实验,对存储过程和触发器有了更深的认识;2、能够理解不同类型触发器的作用和执行原理,>3、熟练掌握了数据库存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。

        到此这篇关于MySQL数据库实验之 触发器和存储过程的文章就介绍到这了,更多相关MySQ存储过程内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!2Bm站长之家-易采站长站-Easck.Com

        如有侵权,请联系QQ:279390809 电话:15144810328

相关文章

  • mysql 5.7.30安装配置方法图文教程

    mysql 5.7.30安装配置方法图文教程

    之前把服务器里面的MySQL卸了重装,安装mysql时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑 截个图,作为笔记,也正好留给需要的朋友们。
    2019-01-03
  • MySQL5.6免安装版环境配置图文教程

    MySQL5.6免安装版环境配置图文教程

    MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行。但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的。很多人下了zip格式的解压发现没有setup.exe,面对一堆文
    2019-01-04
  • Linux下安装mysql-8.0.20的教程详解

    Linux下安装mysql-8.0.20的教程详解

    ** Linux下安装mysql-8.0.20 ** 环境介绍 操作系统:CentOS 7 mysql下载地址:https://dev.mysql.com/downloads/mysql/ 下载版本:mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz 卸载mysql 查看是否安装过mysql,命令:fin
    2020-05-24
  • linux环境下安装mysql数据库的详细教程

    linux环境下安装mysql数据库的详细教程

    1.安装数据库 1)yum -y install mysql-server(简单) yum命令自动从网上寻找mysql服务资源,下载至本地并完成安装 2)也可以自己在网上下载mysql服务,通过xftp传输至Linux系统,自己安装(一般安
    2020-06-20
  • MySQL8.0.20安装教程及其安装问题详细教程

    MySQL8.0.20安装教程及其安装问题详细教程

    原文地址:https://blog.csdn.net/m0_46579864/article/details/105981304 官网下载MySQL的安装包 1.下载链接如下: MySQL8.0.20版本 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html 其他版本:MySQL8.0.16版本
    2020-05-10
  • MySQL对数据库操作(创建、选择、删除)

    MySQL对数据库操作(创建、选择、删除)

    MySQL 创建数据库 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB: [root@host]# mysql
    2020-07-01
  • Linux系统MySQL8.0.19快速安装配置教程图解

    Linux系统MySQL8.0.19快速安装配置教程图解

    一、环境介绍 Linux系统使用yum安装MySQL需要从网上下载MySQL的一系列组件,这个过程非常耗时且有下载中断的可能,如果想要快速安装MySQL,可以先在网上将MySQL的离线包下载下来传到系
    2020-02-27
  • mysql 加了 skip-name-resolve不能链接数据库问题的解决方法

    mysql 加了 skip-name-resolve不能链接数据库问题的解决方法

    mysql 加了 skip-name-resolve不能链接的问题, 要确认 MySql 是否采用过主机名的授权 在 MySql Server 的配置文件 My.ini 中,增加如下两行: [mysqld] skip-name-resolve 它将禁止 MySql Server 对外部连接进
    2019-01-04