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

Mysql作业5

一、触发器

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

mysql> create database mydb16_trigger;mysql> use mydb16_trigger;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
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)

2、在商品表中导入商品记录

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

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


mysql> delimiter //
mysql> create trigger trg_order_insert -> after insert on orders for each row-> begin-> update goods set num = num - new.onum where gid = new.gid;-> end //
mysql> delimiter ;
mysql> insert into orders (gid, name, price, onum, otime)-> values ('a0001', '橡皮', 2.50, 10, '2025-11-07 10:00:00');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from goods where gid = 'a0001';
+-------+--------+-------+------+
| gid   | name   | price | num  |
+-------+--------+-------+------+
| A0001 | 橡皮   |  2.50 |   90 |
+-------+--------+-------+------+
1 row in set (0.00 sec)

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


mysql> delimiter //
mysql> create trigger trg_order_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.00 sec)mysql> select * from goods where gid = 'a0001';
+-------+--------+-------+------+
| gid   | name   | price | num  |
+-------+--------+-------+------+
| A0001 | 橡皮   |  2.50 |   100 |
+-------+--------+-------+------+
1 row in set (0.00 sec)

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

mysql> delimiter //
mysql> create trigger trg_order_update -> after update on orders for each row-> begin->     update goods set num = num + old.onum where gid = old.gid;->     update goods set num = num - new.onum where gid = new.gid;-> end //
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
mysql> insert into orders (gid, name, price, onum, otime)-> values ('C0001', '铅笔', 1.2, 10, '2025-11-07 11:00:00');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> update orders set onum = 5 where oid = 2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from goods where gid = 'C0001';
+-------+--------+-------+------+
| gid   | name   | price | num  |
+-------+--------+-------+------+
| C0001 | 铅笔   |  1.20 |  110 |
+-------+--------+-------+------+
1 row in set (0.01 sec)


二、存储过程

1、使用mydb7.openlab库;


mysql> use mydb7_openlab;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changedmysql> select * from emp_new;
+------+--------+------+----------------+----------+-------+
| sid  | name   | age  | worktime_start | incoming | dept2 |
+------+--------+------+----------------+----------+-------+
| 1789 | 张三   |   35 | 1980-01-01     |     4000 |   101 |
| 1674 | 李四   |   32 | 1983-04-01     |     3500 |   101 |
| 1776 | 王五   |   24 | 1990-07-01     |     2000 |   101 |
| 1568 | 赵六   |   57 | 1970-10-11     |     7500 |   102 |
| 1564 | 荣七   |   64 | 1963-10-11     |     8500 |   102 |
| 1879 | 牛八   |   55 | 1971-10-20     |     7300 |   103 |
+------+--------+------+----------------+----------+-------+
6 rows in set (0.01 sec)

2、创建提取emp_new表所有员工姓名和工资的存储过程s1;

mysql> delimiter //
mysql> create procedure s1()-> begin->     select name, incoming from emp_new;-> end //
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
mysql> call s1();
+--------+----------+
| name   | incoming |
+--------+----------+
| 张三   |     4000 |
| 李四   |     3500 |
| 王五   |     2000 |
| 赵六   |     7500 |
| 荣七   |     8500 |
| 牛八   |     7300 |
+--------+----------+
6 rows in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)

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

mysql> delimiter //
mysql> create procedure s2()-> begin->     select name, age from emp_new;-> end //
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
mysql> call s2();
+--------+------+
| name   | age  |
+--------+------+
| 张三   |   35 |
| 李四   |   32 |
| 王五   |   24 |
| 赵六   |   57 |
| 荣七   |   64 |
| 牛八   |   55 |
+--------+------+
6 rows in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)

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


mysql> delimiter $$
mysql> create procedure s3(in dept_no int, out avg_sal decimal(10,2))-> begin->     select avg(incoming) into avg_sal from emp_new where dept2 = dept_no;-> end $$
set @avg=0;
call s3(101, @avg);
select @avg; 
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
Query OK, 0 rows affected (0.00 sec)mysql> set @avg=0;
Query OK, 0 rows affected (0.00 sec)mysql> call s3(101, @avg);
Query OK, 1 row affected, 1 warning (0.01 sec)mysql> select @avg; 
+---------+
| @avg    |
+---------+
| 3166.67 |
+---------+
1 row in set (0.00 sec)

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

相关文章:

  • 为什么Vue 3需要ref函数?它的响应式原理与正确用法是什么?
  • STM32外设学习--TIM定时器--输入捕获---测频方法(代码编写)
  • 如何设置JVM参数避开直接内存溢出的坑?
  • (七)嵌入式面试题收集:8道
  • AI搜索营销破局:光引GEO多平台适配与实时优化引擎开发详解
  • 【有源码】基于Hadoop+Spark的起点小说网大数据可视化分析系统-基于Python大数据生态的网络文学数据挖掘与可视化系统
  • Windows10 wsl2 ubuntu22.04 docker安装
  • 使用docker-compose部署应用保姆级教程
  • 【Linux工具链】从跨平台适配到一键部署:yum多架构支持+Vim远程编辑+gcc交叉编译,解决多场景开发效率瓶颈
  • 简单做网站企业宣传视频制作免费模板
  • 西安SEO网站建设哪家好食品网站的网页设计
  • 网站开发公司哪家好嘉兴市建设工程监理协会网站
  • 天津做一个简单的网站首页wap门户网站源码
  • 热门软件排行榜泰州网站关键词优化
  • 怎么查询网站开发公司个人网站数据库大小
  • 营销型网站和传统网站区别ui设计技能就业培训
  • 威宁住房和城乡建设局网站wordpress is ssl
  • 网站域名缴费wordpress怎么改登陆地址
  • 网站底备案号链接代码小程序登录入口qq浏览器
  • 电商网站建设功能个人网页免费域名注册入口
  • 网站建设所用系统没有文字的网站怎么优化
  • 站长工具seo综合查询隐私查询做网站功能
  • 扬州市广陵区建设局网站做代理稳妥的彩票网站有哪些
  • 软件下载类型网站怎么做建筑公司资质甲级乙级
  • 自己建站百度企业查询官网
  • 如皋建设网站wordpress中级教程
  • 正规轻电商网站模板做美足网站违法吗
  • 可以做本地生活服务的有哪些网站平面设计作品欣赏官网
  • 专业网站托管的公司免费咨询医院
  • 温州哪里有做网站怎么查公司企业邮箱