MySQL第五次作业

**一、触发器部分**

  1. 订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量

CREATE TRIGGER update_goods_num_after_insert_orders

AFTER INSERT ON orders

FOR EACH ROW

UPDATE goods

SET num = num - NEW.onum

WHERE gid = NEW.gid;

-- 测试

INSERT INTO orders (gid, name, price, onum, otime)

VALUES ('A0001', '橡皮', 2.5, 10, '2024-07-25');

  1. 客户取消订单,恢复商品表对应商品的数量

CREATE TRIGGER restore_goods_num_after_cancel_order

AFTER DELETE ON orders

FOR EACH ROW

UPDATE goods

SET num = num + OLD.onum

WHERE gid = OLD.gid;

-- 测试

DELETE FROM orders WHERE oid = 1;

  1. 客户修改订单,商品表对应商品数量同步更新

CREATE TRIGGER update_goods_num_after_update_orders

AFTER UPDATE ON orders

FOR EACH ROW

UPDATE goods

SET num = num + OLD.onum - NEW.onum

WHERE gid = NEW.gid;

-- 测试

UPDATE orders SET onum = 20 WHERE oid = 2;

**二、存储过程部分**

  1. 创建提取 `emp_new` 表所有员工姓名和工资的存储过程 `s1`

USE mydb7_openlab;

CREATE PROCEDURE s1()

SELECT name, salary FROM emp_new;

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

CREATE PROCEDURE s2(IN emp_name VARCHAR(50))

SELECT age FROM emp_new WHERE name = emp_name;

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

CREATE PROCEDURE s3(IN dept_id INT, OUT avg_salary DECIMAL(10, 2))

SELECT AVG(salary) INTO avg_salary FROM emp_new WHERE department_id = dept_id;

相关推荐
Database_Cool_6 小时前
AnalyticDB MySQL vs StarRocks/ByteHouse:云数仓选型指南——全托管 vs 自建方案
数据库·数据仓库·mysql·阿里云
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题 第99题】【Mysql篇】第29题:如何选择合适的分布式主键方案?
java·数据库·分布式·mysql·面试
拾贰_C9 小时前
【mysql | windows | installation】 MySQL5.安装
数据库·windows·mysql
yuezhilangniao11 小时前
MySQL 8.0.32 二进制安装脚本 和初始化 操作系统版本rocky86
数据库·mysql·adb
学代码的真由酱11 小时前
MySQL数据库进阶-数据库设计实践-Java
数据库·mysql·数据库设计
遇事不決洛必達12 小时前
【数据库系列】本地映射云服务器Mysql的方法
服务器·数据库·mysql·定时任务
yuezhilangniao13 小时前
xtr备份prepare到底变化了啥
mysql
yyk的萌13 小时前
创建属于自己的mysql的mcp
mysql·adb·ai·mcp
流烟默13 小时前
腾讯云Centos7.6使用yum安装MySQL8
mysql·centos·腾讯云
仙俊红13 小时前
如何优化 MySQL 深分页 SQL
android·sql·mysql