MySql --- 作业

ops/2025/2/11 18:17:26/

一. 触发器
1·建立两个表:goods(商品表)、orders(订单表)

mysql> create database mydb16_tigger;
Query OK, 1 row affected (0.01 sec)mysql> use mydb16_tigger;
Database changed
mysql>
mysql> CREATE TABLE goods (->     gid CHAR(8) PRIMARY KEY,->     name VARCHAR(10),->     price DECIMAL(8, 2),->     num INT-> );
Query OK, 0 rows affected (0.02 sec)mysql> CREATE TABLE orders (->     oid INT PRIMARY KEY AUTO_INCREMENT,->     gid CHAR(10) NOT NULL,->     name VARCHAR(10),->     price DECIMAL(8, 2),->     onum INT,->     otime DATE-> );
Query OK, 0 rows affected (0.02 sec)

在商品表中导入商品记录

mysql> INSERT INTO goods VALUES-> ('A0001', '橡皮', 2.5, 100),-> ('B0001', '小楷本', 2.8, 210),-> ('C0001', '铅笔', 1.2, 120),-> ('D0001', '计算器', 28, 20);
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

2·建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试

mysql> DELIMITER //
mysql>
mysql> CREATE TRIGGER update_goods_num_after_insert-> AFTER INSERT ON orders-> FOR EACH ROW-> BEGIN-> UPDATE goods-> SET num = num - NEW.onum-> WHERE gid = NEW.gid;-> END //
Query OK, 0 rows affected (0.01 sec)INSERT INTO orders (gid, name, price, onum, otime)
VALUES ('A0001', '橡皮', 2.5, 10, CURDATE());SELECT * FROM goods WHERE gid = 'A0001';+-------+------+-------+------+
| gid   | name | price | num  |
+-------+------+-------+------+
| A0001 | 橡皮 |  2.50 |   90 |
+-------+------+-------+------+
1 row in set (0.01 sec)

3·建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量

mysql> CREATE TRIGGER restore_goods_num_after_delete-> AFTER DELETE ON orders-> FOR EACH ROW-> BEGIN-> UPDATE goods-> SET num = num + OLD.onum-> WHERE gid = OLD.gid;-> END //
Query OK, 0 rows affected (0.01 sec)mysql> DELIMITER ;
mysql> DELETE FROM orders WHERE oid = 1;
Query OK, 1 row affected (0.01 sec)mysql>
mysql> SELECT * FROM goods WHERE gid = 'A0001';
+-------+------+-------+------+
| gid   | name | price | num  |
+-------+------+-------+------+
| A0001 | 橡皮 |  2.50 |  100 |
+-------+------+-------+------+
1 row in set (0.00 sec)

4.建立触发器,实现功能:客户修改订单,商品表对应商品数量同步更新

mysql> CREATE TRIGGER update_goods_num_after_update-> AFTER UPDATE ON orders-> FOR EACH ROW-> BEGIN->     -- 计算订单数量的差值->     DECLARE diff INT;->     SET diff = NEW.onum - OLD.onum;->     -- 更新商品表中的商品数量->     UPDATE goods->     SET num = num - diff->     WHERE gid = NEW.gid;-> END //
Query OK, 0 rows affected (0.01 sec)mysql> DELIMITER ;
mysql> UPDATE orders SET onum = 20 WHERE oid = 1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0mysql> SELECT * FROM goods WHERE gid = 'A0001';
+-------+------+-------+------+
| gid   | name | price | num  |
+-------+------+-------+------+
| A0001 | 橡皮 |  2.50 |  100 |
+-------+------+-------+------+
1 row in set (0.00 sec)

二.存储过程
使用mydb7 openlab库

 USE mydb7_openlab;

创建提取emp_new表所有员工姓名和工资的存储过程s

DELIMITER //CREATE PROCEDURE s()
BEGINSELECT ename, sal FROM emp_new;
END //DELIMITER ;

 创建存储过程s2,实现输入员工姓名后返回员工的年龄

mysql> CREATE PROCEDURE s2(IN emp_name VARCHAR(50), OUT emp_age INT)-> BEGIN->     SELECT TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) INTO emp_age->     FROM emp_new->     WHERE ename = emp_name;-> END //
Query OK, 0 rows affected (0.01 sec)

创建一个存储过程s3,有2个参数,传入部门号,返回该部门的平均工资

mysql> DELIMITER ;
mysql> DELIMITER //
mysql>
mysql> CREATE PROCEDURE s3(IN dept_num INT, OUT avg_sal DECIMAL(8, 2))-> BEGIN->     SELECT AVG(sal) INTO avg_sal->     FROM emp_new->     WHERE deptno = dept_num;-> END //
Query OK, 0 rows affected (0.01 sec)

 


    http://www.ppmy.cn/ops/157576.html

    相关文章

    spring cloud和spring boot的区别

    Spring Cloud和Spring Boot在Java开发领域中都是非常重要的框架,但它们在目标、用途和实现方式上存在明显的区别。以下是对两者区别的详细解析: 1. 含义与定位 Spring Boot: 是一个快速开发框架,它简化了Spring应用的初始搭建以…

    【Spring Boot】Spring 事务探秘:核心机制与应用场景解析

    前言 ???本期讲解关于spring 事务介绍~~~ ??感兴趣的小伙伴看一看小编主页:-CSDN博客 ?? 你的点赞就是小编不断更新的最大动力 ??那么废话不多说直接开整吧~~ 目录 ???1.事务 ??1.1什么是事务 ??1.2为什么需要事务 ??1.3操作事务 ???…

    【基于SprintBoot+Mybatis+Mysql】电脑商城项目之修改密码和个人资料

    🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎃1.修改密码 -持久…

    【Ubuntu】安装和使用Ollama的报错处理集合

    Ollama是一个开源的大型语言模型(LLM)推理服务器,为用户提供了灵活、安全和高性能的语言模型推理解决方案。 Ollama的主要特点是它能够运行多种类型的大型语言模型,包括但不限于Alpaca、Llama、Falcon、Mistral等,而无需将模型上传至服务器。这意味着用户可以直接在本地或…

    Proxy vs DefineProperty

    几年前校招面试的时候被问过一个问题,Vue3/Vue2 如何实现数据和UI的同步,其区别是什么,Vue3的方式优势是什么? 当时背了八股,默写了一通不知所云的代码,面试没过,再也没写过Vue。 今天拿出点时…

    PromptSource官方文档翻译

    目录 核心概念解析 提示模板(Prompt Template) P3数据集 安装指南 基础安装(仅使用提示) 开发环境安装(需创建提示) API使用详解 基本用法 子数据集处理 批量操作 提示创建流程 Web界面操作 手…

    【AI-26】常见的监督学习方法集合

    监督学习是机器学习中的一个重要类别,它基于有标签的数据进行模型训练,目标是让模型学会从输入数据预测对应的输出标签。以下是一些常见的监督学习方法及其通俗易懂的解释: 线性回归 原理:假设输入特征和输出标签之间存在线性关…

    哪些专业跟FPGA有关?

    FPGA产业作为近几年新兴的技术领域,薪资高、待遇好,吸引了大量的求职者。特别是对于毕业生,FPGA领域的岗位需求供不应求。那么,哪些专业和FPGA相关呢? 哪些专业跟FPGA有关? 微电子学与固体电子学、微电子科…