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…

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

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

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. 关键词/句…

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等函数。但高维矩阵在内部怎么运算的?其内…

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

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

【Air724UG】4G模块

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

wpf中轮询显示图片

本文的需求是,在一个文件夹中,放一堆图片的集合,然后在wpf程序中,按照定时的方式,循序显示照片。 全部代码 1.声明一个PictureInfo类 namespace WpfApp1 {public class PictureInfo{public string? FileName { get; …

uni-app全局文件与常用API

文章目录 rpx响应式单位import导入css样式及scss变量用法与static目录import导入css样式uni.scss变量用法 pages.json页面路由globalStyle的属性pages设置页面路径及窗口表现tabBar设置底部菜单选项及iconfont图标 vite.config中安装插件unplugin-auto-import自动导入vue和unia…

探索Perl的奇妙世界:入门学习与实战指南

一、Perl语言概述 1.1 Perl的起源与发展 Perl(Practical Extraction and Reporting Language)是一种高级、解释型、动态编程语言,由Larry Wall于1987年发明。Perl的初衷是作为一种文本处理工具,帮助系统管理员在Unix系统中处理报…

Godot游戏制作 04平台设计

新建创景,添加AnimatableBody2D节点。 添加Sprite2D节点 拖动图片 剪裁图片,吸附模式:像素吸附 添加CollisionShape2D,设置实际形状为矩形 重命名AnimatableBody2D节点为Platform,保存场景,拖动platform场景…

数据库(MySQL)-视图、存储过程、触发器

一、视图 视图的定义、作用 视图是从一个或者几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。但是视图只能用来查看表,不能做增删改查。 视图的作用:①简化查询 ②重写格式化数据 ③频繁访问数据库 ④过…

Photos框架 - 自定义媒体资源选择器(数据部分)

引言 在iOS开发中,系统已经为我们提供了多种便捷的媒体资源选择方式,如UIImagePickerController和PHPickerViewController。这些方式不仅使用方便、界面友好,而且我们完全不需要担心性能和稳定性问题,因为它们是由系统提供的&…