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

MySQL第五次作业(触发器,存储过程)

要求:

创建相应表:

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

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 ) ;
mysql> desc  orders;

插入数据:

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

1.触发器

  • 建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试
create  trigger  orders_insert_after_trigger-> after  insert  on  orders-> for  each row-> update  goods  set  num=num-new.onum  where  gid = new.gid ;

 select * from goods;insert into orders(gid,name,price,onum,otime) values('A0001','橡皮',2.50,20,now());
select * from orders;select * from goods;

  • 建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量
mysql> create  trigger  orders_delete_after_trigger-> after  delete  on  orders-> for  each row-> update  goods  set  num=num+old.onum  where  gid = old.gid ;
mysql> delete from orders where gid='A0001';
mysql>  select * from orders;
mysql>  select * from goods;

  • 建立触发器,实现功能:客户修改订单,商品表对应商品数量同步更新
mysql> create  trigger  orders_update_after_trigger-> after update  on  orders-> for  each row-> update goods set num=num+(old.onum-new.onum) where gid=old.gid;
mysql> insert into orders(gid,name,price,onum,otime) values('A0001','橡皮',2.50,20,now());
mysql> select * from orders;
mysql> select * from goods;
mysql>  insert into orders(gid,name,price,onum,otime) values('A0001','橡皮',2.50,20,now());
mysql> select * from orders;
mysql> select * from goods;

mysql> insert into orders(gid,name,price,onum,otime) values('A0001','橡皮',2.50,30,now());
mysql>  select * from orders;
mysql> update orders set onum=20 where oid=4;
mysql> select * from orders;
mysql>  select * from goods;

2.存储过程:

  • 使用 mydb7_openlab 库
use mydb7_openlab;

  • 创建提取 emp_new 表所有员工姓名和工资的存储过程 s1
delimiter //
create procedure s1()
beginselect name, incoming from emp_new;
end //
delimiter ;
call s1();

  • 创建存储过程 s2,实现输入员工姓名后返回员工的年龄
mysql> desc emp_new;
mysql> delimiter //
mysql> create procedure  s2(in  in_name varchar(11) , out  out_age  int)-> begin->       select  age  into  out_age  from  emp_new  where  name=in_name;-> end  //
mysql> delimiter ;
mysql> call   s2('张三',@age);
mysql> select  @age;

  • 创建一个存储过程 s3,有 2 个参数,传入部门号,返回该部门的平均工资
mysql> delimiter //
mysql> create procedure s3(in in_dept int, out out_sal decimal(10, 2))-> begin->     select round(avg(incoming), 2) into out_sal from emp_new where dept2 = in_dept;-> end //
mysql> delimiter ;
mysql> call s3(101,@sal);
mysql> select  @sal;

http://www.dtcms.com/a/597207.html

相关文章:

  • HORIBA MEXA-324M:双组分汽车尾气测量仪技术说明
  • C++进阶:(八)基于红黑树泛型封装实现 map 与 set 容器
  • 网站制作资质wordpress用户名密码注册
  • Redis(1)
  • 《中医基础理论》- 2.哲学基础之藏象学说-心系统详解
  • 智慧养老如何托起“有温度的银发未来”?
  • 做网站编程在程序网站被别人做镜像
  • win2008 r2内存爆满导致前端程序崩溃
  • 【OpenCV + VS】 OpenCV图像色彩空间转换: 从BGR到HSV和灰度
  • 郓城住房和城乡建设局网站淘宝关键词优化怎么弄
  • 简约 时尚 高端 网站建设表白二维码制作网站
  • Uniapp运行MuMu模拟器
  • uniapp uniim ios配置消息推送
  • 如何监测 Vue + GeoScene 项目中浏览器内存变化并优化性能
  • 使用Rancher快速部署K8S集群
  • 建立网站英文翻译数字营销沙盘大赛攻略
  • 数据结构(长期更新)第7讲:栈
  • 企业网站设计过程中wordpress 侧边栏插件
  • 【20251028】linux上面拉取仓库,以Ubuntu虚拟机为例
  • 第8节 计算机病毒概念的正式化和安全行业的兴起
  • 使用C#代码在 PDF 中创建目录
  • NAT基础原理
  • 多粒子模型--交通堵塞2
  • 用AI训练数据,预测房地产价格走势(Python版)
  • Rust:泛型
  • [CSP-X2025山东小学组T4]勇者斗恶龙
  • 基于单片机的多模式智能洗衣机设计
  • 【java阶段练习】----- 学生管理系统
  • 高校网站如何建设论文外国网站怎么做
  • portfolio做网站台州做网站需要多少钱