MySql 触发器、存储器练习

一: 触发器

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

查看数据库:mysql> show databases;

使用数据库:mysql> use mydb16_trigger;

创建goods表:

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

查看表结构:mysql> desc goods;

创建orders表:

mysql> create table orders(oid int not null primary key auto_increment,
    -> gid char(10) not null,name varchar(10),
    -> price decimal(8,2), onum int, otime date);

查看表结构:mysql> desc orders;

2、插入数据

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

查看数据:mysql> select * from goods;

3、建立触发器

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

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

mysql> insert into orders(gid,name,price,onum,otime) values('A0001','橡皮',2.5,20,now());


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

mysql> create trigger orders_after_delete_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> create trigger orders_after_update_trigger
    -> after update on orders for each row
    ->  update goods set num=num+(old.onum-new.onum)
    ->  where gid=old.gid;

mysql> update orders set onum=70 where gid='A0001';

二:存储过程

1、使用mydb7 openlab库

使用数据库:mysql> use mydb7_openlab;

查看表:mysql> show tables;

查看emp_new表

查看dept表

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

修改结束符号:mysql> delimiter //

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

mysql> delimiter ;

调用:call s1();

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

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 * from emp_new;

mysql> select  @age;

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

mysql> delimiter //

mysql> create procedure s3(in in_dept int, out avg_sal float)
    -> begin
    ->     select avg(incoming) into avg_sal from emp_new where dept2=in_dept;
    -> end //

mysql> delimiter ;

mysql> call s3(101,@avg_sal);

mysql> select @avg_sal;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费【2024】springboot 畅游游戏销售平台

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

AnyMP4 Data Recovery for Mac v1.5.8免激活版:高效数据恢复新选择

AnyMP4 Data Recovery for Mac是一款专为Mac用户设计的高效数据恢复软件,凭借其强大的功能和简洁的操作界面,为用户提供了快速、安全的数据恢复体验。 该软件支持恢复多种文件类型,包括照片、视频、音频、文档等,无论是常见的图片…

pytorch-梯度下降

梯度下降 y x 2 ∗ s i n ( x ) y ′ 2 x s i n x x 2 c o s x x 1 x − Δ y ′ ( x ) 其中 Δ 表示学习率, y ′ ( x ) 代表 y 在 x 点处关于 x 的梯度。 y x^2 * sin(x) \\ y 2xsinxx^2cosx \\ x_1 x - \Delta y(x) \\ 其中 \Delta 表示学习率&#xff0c…

【1.0】drf初识

【1.0】drf初识 【一】前后端开发模式 【1】前后端混合开发 【示例】flask混合、django混合【案例】bbs项目 模板:dtl语法(django template language)模板语法 {{}} /{% %}后端渲染 qs对象–遍历循环到模板中–使用模板语法渲染渲染完成后 得到纯粹的…

STM32自定义协议串口接收解析指令程序

1、在使用串口接收自定义协议指令时,需要串口解析收到的是什么指令,举例通信报文为 上位机->单片机 名称 长度 备注 帧头 1Byte 0x5A 0x5A 帧长度 1Byte 数据包的长度0x00-0xFF 数据包 命令字 1Byte 功能标识 数据 可以为空 校验 …

python机器学习8--自然语言处理(2)

1.移除用词 在很多情况下,有一些文章内的英文字符、标点符号分词的结果不符合自己的预期,会出现一些不想要的分词,此时就能通过以下的函数自己设定用词,并且删除。 jieba.analyse.set_stop_words("stop_words.tx…

Ubuntu 防火墙设置

目录 1. 安装防火墙 2. 开启和关闭防火墙 3. 开放端口和服务规则 4. 关闭端口和删除服务规则 5. 查看防火墙状态 1. 安装防火墙 如果已经安装就忽略 # 安装ufw(Uncomplicated Firewall),这是Ubuntu上管理防火墙的一个简单工具 sudo ap…

uniapp引入自定义图标

目录 一、选择图标,加入购物车 二、下载到本地 三、导入项目 四、修改字体引用路径 五、开始使用 这里以扩展iconfont图标为例 官网:iconfont-阿里巴巴矢量图标库 一、选择图标,加入购物车 二、下载到本地 直接点击下载素材&#xff0…

地球的2亿年轮回:彗星雨下的地质巨变与未来展望

在浩瀚的宇宙中,地球正悄然经历着一次巨大的轮回。你是否曾想过,地球为何拥有如此活跃的板块构造和与众不同的大陆?科学家们发现,每隔大约2亿年,地球便会遭遇一场彗星雨,这场彗星淋浴不仅改变了地球的面貌&…

【TAROT学习日记】韦特体系塔罗牌学习(8)——战车 THE CHARIOT VII

韦特体系塔罗牌学习(8)——战车 THE CHARIOT VII 目录 韦特体系塔罗牌学习(8)——战车 THE CHARIOT VII牌面分析1. 基础信息2. 图片元素 正位牌意1. 关键词/句2.爱情婚姻3. 学业事业4. 人际财富5. 其他象征意 逆位牌意1. 关键词/句…

Java使用定时任务开始-结束活动

有一种场景,比如抢购活动,活动的开始肯定不是到点后手动点击开始按钮的,而是通过配置活动开始时间和结束时间,然后开启定时任务,通过定时任务来控制活动的开始和结束。 1. 活动上架--触发定时任务的开启 Override Tr…

yolov5使用flask部署至前端,实现照片\视频识别

初学yolo flask时,需要此功能,Csdn、Github、B站找到许多代码,效果并不满意。 近期,再度尝试,实现简单功能。 实现功能: 上传图片并识别,可以点击图片放大查看 上传视频并识别 识别后的文件下载功能 …

Windows电脑如何启动RTSP服务实现本地摄像头数据共享

技术背景 提起Windows共享本地摄像头,好多人想到的是通过ffmepg或vlc串流到服务器,实际上,用轻量级RTSP服务更简单,本文就介绍下,如何用大牛直播SDK的Windows轻量级RTSP服务,采集摄像头,生成本…

人工智能历史:从梦想到现实的变革之路

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Git 安装教程

1、登录git 官方网站:https://git-scm.com/ 点击左边的 Downloads 或者 右边标识的下载标志,它根据电脑操作系统自动匹配版本 Downloads for Windows 2、以 windows 为例下载对应版本 网络有时可能不大好,阿里镜像下载超快。 下载好以后&a…

Tensorflow中高维矩阵的乘法运算tf.matmul(tf.linalg.matmul)详悉

1.问题由来 在tensorflow框架下,经常会用到矩阵的乘法运算,特别是高(多)维的矩阵运算,在这些矩阵运算时,经常使用到其中的tf.matmul或tf.linalg.matmul等函数。但高维矩阵在内部怎么运算的?其内…

npm yarn pnpm的区别

‌npm, ‌yarn, 和 ‌pnpm 都是用于管理 ‌JavaScript 项目依赖的工具,但它们在设计理念、性能和功能上有显著的区别。 npm 是 Node.js 的官方包管理器,主要用于管理和分发 Node.js 的依赖。它支持语义版本控制,确保在不同环境中保持一致性&a…

【深度学习入门】安装conda/miniconda、所需包类、CUDA与conda/Miniconda间的关系

深度学习入门 须知 本教程跟随李沐老师课程随笔,课程链接点击此处。 CUDA和Anaconda的关系 CUDA Toolkit是由Nvidia官方提供的完整工具包,其中提供了Nvidia驱动程序、开发CUDA程序相关的开发工具包等。 Anaconda在安装Pytorch等会用到的CUDA的框架时…

【INTEL(ALTERA)】Quartus® Prime Pro Edition 软件 v24.2 中,哪些 Agilex™ 5 IP 功能的硬件验证有限?

目录 说明 解决方法 说明 如下表所示,Quartus Prime 专业版软件 24.2 版为 Agilex™ 5 IP 或功能提供有限的硬件支持。此外,设备的设备型号、比特流和固件尚未最终确定。 影响 Agilex™ 5 特定功能的已知问题可参阅 Agilex 5 知识库文章搜索。 解决…

【Air724UG】4G模块

目录 一、实物图 二、原理图 引脚定义 三、简介 基本原理 产品参数 UART1 蓝色指示灯 五、注意: 源文件下载 可访问底部联系方式也可前往电子校园网官网搜索关键词 关键词: Air724UG 一…