数据库-触发器,存储过程

 按照题目要求完成下列题目:

 

1.触发器 

mysql> use mydb16_trigger;
Database 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.01 sec)mysql> desc goods;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| gid   | char(8)      | NO   | PRI | NULL    |       |
| name  | varchar(10)  | YES  |     | NULL    |       |
| price | decimal(8,2) | YES  |     | NULL    |       |
| num   | int          | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
4 rows in set (0.00 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.01 sec)mysql> desc orders;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| oid   | int          | NO   | PRI | NULL    | auto_increment |
| gid   | char(10)     | NO   |     | NULL    |                |
| name  | varchar(10)  | YES  |     | NULL    |                |
| price | decimal(8,2) | YES  |     | NULL    |                |
| onum  | int          | YES  |     | NULL    |                |
| otime | date         | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 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.00 sec)
Records: 4  Duplicates: 0  Warnings: 0mysql> select * from goods;
+-------+-----------+-------+------+
| gid   | name      | price | num  |
+-------+-----------+-------+------+
| A0001 | 橡皮      |  2.50 |  100 |
| B0001 | 小楷本    |  2.80 |  210 |
| C0001 | 铅笔      |  1.20 |  120 |
| D0001 | 计算器    | 28.00 |   20 |
+-------+-----------+-------+------+
4 rows in set (0.00 sec)//建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量
mysql> create trigger orders_insert_after_trigger-> after insert on orders for each row-> update goods set num=num-new.onum where gid=new.gid;
Query OK, 0 rows affected (0.00 sec)mysql> insert into orders values(oid,'A0001','橡皮',2.5,20,now());
Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from goods;
+-------+-----------+-------+------+
| gid   | name      | price | num  |
+-------+-----------+-------+------+
| A0001 | 橡皮      |  2.50 |   80 |
| B0001 | 小楷本    |  2.80 |  210 |
| C0001 | 铅笔      |  1.20 |  120 |
| D0001 | 计算器    | 28.00 |   20 |
+-------+-----------+-------+------+
4 rows in set (0.00 sec)mysql> select * from orders;
+-----+-------+--------+-------+------+------------+
| oid | gid   | name   | price | onum | otime      |
+-----+-------+--------+-------+------+------------+
|   2 | A0001 | 橡皮   |  2.50 |   20 | 2024-07-25 |
+-----+-------+--------+-------+------+------------+
1 row in set (0.00 sec)//建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量
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;
Query OK, 0 rows affected (0.01 sec)mysql> delete from orders where oid=1;
Query OK, 1 row affected (0.00 sec)mysql> select * from orders;
Empty set (0.00 sec)mysql> select * from goods;
+-------+-----------+-------+------+
| gid   | name      | price | num  |
+-------+-----------+-------+------+
| A0001 | 橡皮      |  2.50 |  100 |
| B0001 | 小楷本    |  2.80 |  210 |
| C0001 | 铅笔      |  1.20 |  120 |
| D0001 | 计算器    | 28.00 |   20 |
+-------+-----------+-------+------+
4 rows in set (0.00 sec)//建立触发器,实现功能:客户修改订单,商品表对应商品数量同步更新
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;
Query OK, 0 rows affected (0.00 sec)mysql> insert into orders values(oid,'C0001','铅笔',1.20,30,now());
Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from goods;
+-------+-----------+-------+------+
| gid   | name      | price | num  |
+-------+-----------+-------+------+
| A0001 | 橡皮      |  2.50 |  100 |
| B0001 | 小楷本    |  2.80 |  210 |
| C0001 | 铅笔      |  1.20 |   90 |
| D0001 | 计算器    | 28.00 |   20 |
+-------+-----------+-------+------+
4 rows in set (0.00 sec)mysql> select * from orders;
+-----+-------+--------+-------+------+------------+
| oid | gid   | name   | price | onum | otime      |
+-----+-------+--------+-------+------+------------+
|   3 | C0001 | 铅笔   |  1.20 |   30 | 2024-07-25 |
+-----+-------+--------+-------+------+------------+
1 row in set (0.00 sec)mysql> update orders set onum=50 where oid=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from orders;
+-----+-------+--------+-------+------+------------+
| oid | gid   | name   | price | onum | otime      |
+-----+-------+--------+-------+------+------------+
|   3 | C0001 | 铅笔   |  1.20 |   50 | 2024-07-25 |
+-----+-------+--------+-------+------+------------+
1 row in set (0.00 sec)mysql> select * from goods;
+-------+-----------+-------+------+
| gid   | name      | price | num  |
+-------+-----------+-------+------+
| A0001 | 橡皮      |  2.50 |  100 |
| B0001 | 小楷本    |  2.80 |  210 |
| C0001 | 铅笔      |  1.20 |   70 |
| D0001 | 计算器    | 28.00 |   20 |
+-------+-----------+-------+------+
4 rows in set (0.00 sec)

 2.存储过程

mysql> use mydb7_openlab
Database changed
mysql> show tables;
+-------------------------+
| Tables_in_mydb7_openlab |
+-------------------------+
| dept                    |
| emp                     |
| emp_new                 |
| user                    |
+-------------------------+
4 rows in set (0.00 sec)mysql> 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.00 sec)
//创建提取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)//创建存储过程s2,实现输入员工姓名后返回员工的年龄
mysql> desc emp_new;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| sid            | int         | YES  |     | NULL    |       |
| name           | varchar(11) | YES  |     | NULL    |       |
| age            | int         | YES  |     | NULL    |       |
| worktime_start | date        | YES  |     | NULL    |       |
| incoming       | int         | YES  |     | NULL    |       |
| dept2          | int         | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
mysql> delimiter //
mysql> create procedure s2(in s2_name varchar(11),out s2_age int)-> begin->       select age into s2_age from emp_new where name=s2_name;-> end //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call  s2('张三',@s2_age);
Query OK, 1 row affected (0.00 sec)mysql> select @s2_age;
+---------+
| @s2_age |
+---------+
|      35 |
+---------+
1 row in set (0.00 sec)//创建一个存储过程s3,有2个参数,传入部门号,返回该部门的平均工资
mysql> 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.00 sec)mysql> delimiter //
mysql> create procedure s3(in s3_dept2 int ,out s3_avgincoming int)-> begin->     select avg(incoming) into s3_avgincoming from emp_new where dept2=s3_dept2;-> end //
Query OK, 0 rows affected (0.01 sec)mysql> delimiter ;
mysql> call s3(101,@s3_avgincoming);
Query OK, 1 row affected (0.00 sec)mysql> select @s3_avgincoming;
+-----------------+
| @s3_avgincoming |
+-----------------+
|            3167 |
+-----------------+
1 row in set (0.00 sec)mysql> call s3(102,@s3_avgincoming);
Query OK, 1 row affected (0.00 sec)mysql> select @s3_avgincoming;
+-----------------+
| @s3_avgincoming |
+-----------------+
|            8000 |
+-----------------+
1 row in set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3267420.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

工作流 Flowable

工作流包括业务流和审批流等业务流程。 在一个流程系统中,任务间往往存在复杂的依赖关系,为保证pipeline的正确执行,就是要解决各任务间依赖的问题,这样DAG结合拓扑排序是解决存在依赖关系的一类问题的利器。DAG ( Directed Acyc…

免费【2024】springboot 毕业生学历证明系统

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

Android AI应用开发:移动检测

基于Google ML模型的Android移动物体检测应用——检测、跟踪视频中的物体 A. 项目描述 ML Kit物体检测器可以对视频流进行操作,能够检测视频中的物体并在连续视频帧中跟踪该物体。 相机捕捉视频时,检测到移动物体并为其生成一个边界框,并分…

微信小程序-本地部署(前端)

遇到问题:因为是游客模式所以不能修改appID. 参考链接:微信开发者工具如何从游客模式切换为开发者模式?_微信开发者工具如何修改游客模式-CSDN博客 其余参考:Ego微商项目部署(小程序项目)(全网…

Xstate inspect状态图的使用 和 原理

状态图的好处之一是,在将状态图组合在一起的过程中,您可以探索流程中所有可能的状态。这种探索将帮助您避免代码中的错误和错误,因为您更有可能涵盖所有可能发生的情况。 因为状态图是可执行的,所以它们既可以表现为图&#xff0…

K8s集群prometheus镜像配置非root用户执行导致监控页面targets无相关node信息监控

【问题描述】 K8s集群prometheus镜像配置非root用户执行导致监控页面targets无相关node信息监控 【问题记录】 在k8s容器集群来部署prometheus服务,实现对node节点的监控,但发现部署了prometheus后页面targets没有显示node信息,配置检查也是正确的 排查prometheus日志发现…

速递!OpenAI 凌晨发布 SearchGPT 进军 AI 搜索,正式与 Google、Perplexity 竞争

🐱 个人主页:TechCodeAI启航,公众号:TechCodeAI 🙋‍♂️ 作者简介:2020参加工作,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫 优质专…

数据分析或处理中关于坐标系的一些事

通过对本文的阅读,你将获取坐标系的一些基础知识,以及学会如何使用pyproj实现地理数据的投影与转换。更重要的是,作为一个开发者,面对地理坐标系的图层数据,需要进行面积计算、距离量测、规则分块等需求时,…

成都哪一个新媒体产业园可以提供全方位的支持?全成都拥有最优质服务的园区在这!

成都市,作为中国西部的经济和文化中心,近年来在新媒体产业领域迅猛发展。众多新媒体产业园在这里拔地而起,为创新企业提供了丰富的资源和优质的服务。其中,位于成都金牛区的国际数字影像产业园尤为引人注目,作为园区运…

深入分析 Android ContentProvider (五)

文章目录 深入分析 Android ContentProvider (五)ContentProvider 的性能优化和实践案例1. 性能优化技巧1.1. 数据库索引优化示例:添加索引 1.2. 批量操作与事务管理示例:批量插入操作 1.3. 使用异步操作示例:使用 AsyncTask 进行异步查询 1.…

无人机图像目标检测技术详解

当前研究领域的热点之一。无人机搭载的高清摄像头能够实时捕获大量图像数据,对这些数据进行有效的目标检测对于军事侦察、环境监测、灾害救援等领域具有重要意义。本文将对无人机图像目标检测技术进行详解,包括图像处理技术、目标检测算法、关键技术应用…

通过IEC104转MQTT网关轻松接入阿里云平台

随着智能电网和物联网技术的飞速发展,电力系统中的传统IEC 104协议设备正面临向现代化、智能化转型的迫切需求。阿里云作为全球领先的云计算服务提供商,其强大的物联网平台为IEC 104设备的接入与数据处理提供了强大的支持。本文将深入探讨钡铼网关在MQTT…

springcloud接入seata管理分布式事务

下载安装包 链接: seata 配置seata-server 文件上传Linux解压 压缩包我放在/usr/local/seata中 tar -zxvf seata-server-2.0.0.tar.gz修改配置文件 设置nacos为注册和配置中心 进入文件夹 cd /usr/local/seata/seata/conf修改application.yml文件 ...... ...... cons…

Anaconda目录

安装目录 Anaconda 在默认情况下会安装到 C:\ProgramData\Anaconda3,而 conda 环境和包会安装在 C:\Users\username\.conda\ 目录下。 备注:我是在windows下安装 的Anaconda。我的安装目录是C:\Program Files\Anaconda3 pkgs目录 在以上两个目录下都有…

【React】组件:全面解析现代前端开发的基石

文章目录 一、什么是组件?二、组件的类型三、组件的生命周期四、状态管理五、属性传递六、组合与继承七、最佳实践 在现代前端开发中,React 已成为开发者构建用户界面的首选框架之一。React 的强大之处在于其组件化设计,允许开发者将 UI 拆分…

如何使用C#快速创建定时任务

原文链接:https://www.cnblogs.com/zhaotianff/p/17511040.html 使用Windows的计划任务功能可以创建定时任务。 使用schtasks.exe可以对计划任务进行管理,而不需要编写额外代码 这里掌握schtasks /CREATE 的几个核心参数就可以快速创建计划任务 /SC …

PGSQL学习-基础表结构

1 访问数据库 创建好数据库后,你可以有三种方式访问数据库 运行PostgreSQL的交互式终端程序,它被称为psql, 它允许你交互地输入、编辑和执行SQL命令。 使用一种已有的图形化前端工具,比如pgAdmin或者带ODBC或JDBC支持的办公套件…

云计算安全扩展要求解读

云计算简介: 一种全新网络服务方式,将传统的以桌面为核 心的任务处理转变为以网络为核心的任务处理, 利用互联网实现自己想要完成的一切处理任务, 使网络成为传递服务、计算力和信息的综合媒 介,真正实现按需计算、多…

高级及架构师高频面试题-基础型

1、设计模式有哪些原则(待解释的更直白) 单一职责原则:一个类或方法应只负责一项职责,避免一个类因为多个变化原因而改变。开闭原则:软件实体应对扩展开放,对修改封闭。比如要增加用户类别的时候可以新增一…

【C++】选择语句-多行if语句

语法格式 if(条件) {条件满足后执行的操作} else {条件不满足执行的操作} 下面是一个实例 #include<iostream> using namespace std;int main() {//选择结构 - 多行if语句//输入考试分数&#xff0c;如果考试分数大于600&#xff0c;视为考上一本大学&#xff0c;在屏…