当前位置: 首页 > article >正文

MySQL第五次作业

根据图片内容完成作业

1.建表

(1)建立两个表:goods(商品表)、orders(订单表)

mysql> create table goods(
    -> gid char(8) primary key,
    -> name varchar(10),
    -> price decimal(8,2),
    -> num int);

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); 

 (2)在商品表中导入商品记录

mysql> insert into goods values
    -> ('A0001','橡皮',2.5,100),
    -> ('B0001','小楷本',2.8,210),
    -> ('C0001','铅笔',1.2,120),
    -> ('D0001','计算器',28,20);

2.建立触发器

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

mysql> create trigger order_after_insert_trigger
    -> after insert on orders for each row
    -> update goods set num=goods.num-new.onum where gid=new.gid;

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

mysql> create trigger order_after_delete_trigger
    -> after delete on orders for each row
    -> update goods set num=num+old.onum where gid=old.gid; 

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

mysql> create trigger order_after_update_trigger
    -> after update on orders for each row
    -> update goods set num=num+(old.onum-new.onum) where gid=old.gid;

 3.存储过程

(1)使用mydb7 openlab,创建提取emp_new表所有员工姓名和工资的存储过程proc01

mysql> delimiter //
mysql> create procedure proc01()
    -> begin
    ->          select name,incoming from emp_new;
    -> end //

mysql> delimiter ;
mysql> call proc01();

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

mysql> delimiter //
mysql> create procedure proc02(in in_name varchar(10), out out_age int)
    -> begin
    ->          select age into out_age from emp_new where name=in_name;
    -> end //

mysql> delimiter ;
mysql> call proc02('张三',@out_age);

mysql> select @out_age;

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

mysql> delimiter //
mysql> create procedure proc03(in in_dept2 int, out out_avg float)
    -> begin
    ->          select avg(incoming) into out_avg from emp_new where in_dept2=dept2;
    -> end //

mysql> delimiter ;
mysql> call proc03(101,@out_avg);

mysql> select @out_avg;


http://www.kler.cn/a/537908.html

相关文章:

  • 【分布式理论8】分布式调用之:四种IO模型
  • 计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)
  • GnuTLS: 在 pull 函数中出错。 无法建立 SSL 连接。
  • java-初识List
  • C语言【基础篇】之数组——解锁多维与动态数组的编程奥秘
  • cs106x-lecture2(上)(Autumn 2017)
  • 【Linux】29.Linux 多线程(3)
  • RUST项目编译
  • Java 大视界 -- Java 大数据在智能金融监管中的应用与实践(77)
  • 基于FreeSurfer 7.1、6.0和5.3版本的脑部指标在多站点重测信度和兼容性研究
  • 黑马 Linux零基础快速入门到精通 笔记
  • stm32-wifi模块
  • ARM嵌入式学习--第十四天(SPI)
  • 自然语言处理NLP_[1]-NLP入门
  • flask实现用户名查重,重复的用户名阻止注册,以及如何优化
  • 单调栈题目
  • 如何让虚拟机联上网
  • windows通过网络向Ubuntu发送文件/目录
  • 在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合
  • 算法基础——容错
  • 蛋糕商城 Rust 版介绍二
  • 网络安全 | 保护智能家居和企业IoT设备的安全策略
  • 【AI】通过修改用户环境变量优化Ollama模型加载与访问
  • 计算机视觉-拟合
  • 聚焦 AUTO TECH China 2025,共探汽车内外饰新未来
  • 21.命令模式(Command Pattern)