Lab3 存储过程与触发器

这篇具有很好参考价值的文章主要介绍了Lab3 存储过程与触发器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

          实验三 存储过程与触发器

实验目的:

学习SQL语言进行编程的基本方法与技术,能够编写存储过程、触发器解决数据库需要处理的复杂问题。


实验内容:

1、 设计一个存储过程或者自定义函数,练习存储过程的设计方法。
2、 设计触发器,理解触发器的工作原理与设计方法。


实验过程及要求:

1、 编写存储过程,传入学号,查询该同学所有选修记录,结果显示信息项包括学号、姓名、班级名称、课程名、学分、成绩.
2、撰写存储过程,完成以下操作代码写在空白处。
(1)插入数据学院2020级计算机科学技术1班、计算机科学技术2班记录。
(2)针对2个班级,产生学生的记录插入到学生信息表中,每班学生数30人。
3、编写触发器:当在学生表中更新(增、删、改)学生记录时,计算学生班级总人数,并更新班级表中对应的记录中


实验具体操作


1、 编写存储过程,传入学号,查询该同学所有选修记录,结果显示信息项包括学号、姓名、班级名称、课程名、学分、成绩.


DROP PROCEDURE if exists GetStudentCourseRecords;
DELIMITER //

CREATE PROCEDURE GetStudentCourseRecords(IN student_id VARCHAR(9))
BEGIN
    SELECT s.Sid, s.Sname, g.gname, c.Cname, c.credit, sc.score1,sc.score2
    FROM ustudent s
    INNER JOIN ugrade g ON s.gid = g.gid
    INNER JOIN usc sc ON s.Sid = sc.sid
    INNER JOIN ucourse c ON sc.cid = c.Cid
    WHERE s.Sid = student_id;
END //

DELIMITER ;

call GetStudentCourseRecords('012005004');

Lab3 存储过程与触发器


2、撰写存储过程,完成以下操作代码写在空白处。
1)插入数据学院2020级计算机科学技术1班、计算机科学技术2班记录。
2)针对2个班级,产生学生的记录插入到学生信息表中,每班学生数30人。


DELIMITER //
DROP PROCEDURE if exists InsertClassData;
CREATE PROCEDURE InsertClassData()
BEGIN
    DECLARE i INT DEFAULT 1;
    DECLARE j INT DEFAULT 1;
    DECLARE random_sex varchar(5);


    -- 1) 插入数据学院2020级计算机科学技术1班、计算机科学技术2班记录
    WHILE i <= 2
        DO
            INSERT INTO ugrade (gid, gname, gyear)
            VALUES (CONCAT('20', LPAD(i, 2, '0')), CONCAT('计算机科学技术', i, '班'), 2020);

            SET i = i + 1;
        END WHILE;

    -- 2) 产生学生的记录插入到学生信息表中 每班学生数30人
    SET i = 1;
    WHILE i <= 2
        DO
            SELECT IF(RAND() < 0.5, '男', '女') INTO random_sex;

            WHILE j <= 30
                DO
                    INSERT INTO ustudent (Sid, Sname, Ssexy, Sbdate, gid, stele)
                    VALUES (CONCAT('S', LPAD(j, 7, '0')), CONCAT('stu', LPAD(j, 3, '0')), random_sex, '2002-01-01',
                            CONCAT('20', LPAD(i, 2, '0')), '1234567890');

                    SET j = j + 1;
                END WHILE;

            SET i = i + 1;
        END WHILE;
END //

DELIMITER ;


call InsertClassData()

Lab3 存储过程与触发器

执行之前表内容

ugrade


Lab3 存储过程与触发器

ustudent
Lab3 存储过程与触发器


执行之后

Lab3 存储过程与触发器

Lab3 存储过程与触发器

3、编写触发器:当在学生表中更新(增、删、改)学生记录时,计算学生班级总人数,并更新班级表中对应的记录中文章来源地址https://www.toymoban.com/news/detail-710638.html

DELIMITER //

CREATE TRIGGER UpdateClassStudentCount
AFTER INSERT ON ustudent
FOR EACH ROW
BEGIN
    DECLARE class_id VARCHAR(2);
    DECLARE student_count INT;

    -- class id
    SET class_id = NEW.gid;

    -- count of students in the class
    SELECT COUNT(*) INTO student_count FROM ustudent WHERE gid = class_id;

    -- ugrade table
    UPDATE ugrade SET gyear = student_count WHERE gid = class_id;
END //

DELIMITER ;


到了这里,关于Lab3 存储过程与触发器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL视图、存储过程、触发器

    视图(view)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查

    2024年02月09日
    浏览(61)
  • MySQL小记——存储过程、触发器、函数、视图

    目录 存储过程 procedure 语法 参数 调用存储过程 call 删除存储过程 drop 带有IF逻辑的存储过程 if then elseif else 带有循环的存储过程 while do 变量 触发器 Trigger 语法 old和new 视图 View 函数 自定义函数 内置函数 存储过程是数据库中的一个对象,存储在服务端,用来封装多条SQL语句

    2024年02月08日
    浏览(50)
  • MySQL函数、视图、存储过程及触发器

    MySQL在我们工作中都会用到,那么我们最常接触的就是增删改查,而对于增删改查来说,我们更多的是查询。但是面试中,面试官又不会问你什么查询是怎么写的,都是问一些索引啊,事务啊, 底层结构这些东西,所以我打算分四篇去逐一的过一遍MySQL的知识点。 以下为四篇

    2023年04月09日
    浏览(55)
  • MySQL之视图,触发器与存储过程

    视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据

    2024年02月08日
    浏览(53)
  • MySQL-SQL存储过程/触发器详解(下)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月11日
    浏览(62)
  • MySQL-SQL存储过程/触发器详解(上)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月09日
    浏览(60)
  • 五、C#与数据库交互(数据存储过程与触发器)

    在C#中与数据库交互时,除了基本的查询和更新操作,还经常需要使用存储过程和触发器。下面我将简要介绍如何在C#中使用存储过程和触发器。 存储过程 存储过程是一组为了完成特定功能的SQL语句集,它可以被存储在数据库中,并可以被调用执行。在C#中,你可以使用 Sql

    2024年01月25日
    浏览(46)
  • 【MySQL速通篇003】MySQL视图,MySQL触发器,MySQL函数,MySQL存储过程(参数分类,存储过程的增删改查等),SQL的动态执行,支持事务的存储过程,pymysql

    这篇万字博客主要包括了我对: MySQL视图,MySQL触发器,MySQL函数,MySQL存储过程(参数分类,存储过程的增删改查等),SQL的动态执行,支持事务的存储过程,pymysql等的总结,可谓非常的详细😃 文章毕竟这么长,对于文章中的一些语法,概念,例子等错误,欢迎并感谢各位读

    2023年04月27日
    浏览(72)
  • 存储过程、触发器、游标、视图、自定义函数 字段类型、字段可空、统计字段、逻辑删除 权限系统数据库&无限极类别设计

    在数据库设计中,存储过程、触发器、游标、视图、自定义函数、字段类型、字段可空、统计字段、逻辑删除以及权限系统和无限级类别设计都是重要的概念。下面我将逐一解释这些概念,并提供相关的设计建议。 存储过程 (Stored Procedure) 定义 :存储过程是一组为了完成特定

    2024年03月09日
    浏览(121)
  • MySQL---存储函数、触发器

    1. 存储函数 MySQL 存储函数(自定义函数),函数一般用于计算和返回一个值,可以将经常需要使用的计算 或功能写成一个函数。 存储函数和存储过程一样,都是在数据库中定义一些 SQL 语句的集合。 存储函数与存储过程的区别: 存储函数有且只有一个返回值,而存储过程可

    2024年02月05日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包