MySQL数据库练习(5)

1.建库建表

# 使用数据库
use mydb16_trigger;# 表格goods
create table goods(
gid char(8) primary key,
name varchar(10),
price decimal(8,2),
num int);# 表格orders
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);

结果如下:

2.插入数据

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

结果如下:

3.要求

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

# 建立触发器
create trigger orders_after_insert_trigger after
insert on orders for each row
update goods set num=num - new.onum
where gid=new.gid;# 用户下单,插入数据
insert into orders(gid,name,price,onum,otime) value('C0001','铅笔',1.2,80,now());

结果如下:

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

# 建立触发器
create trigger orders_after_delete_trigger after
delete on orders for each row
update goods set num=num+old.onum
where gid=old.gid;# 删除之前下单
delete from orders where gid = 'C0001';

结果如下:

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

# 建立触发器新
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;# 用户下单
insert into orders(gid,name,price,onum,otime) value('A0001','橡皮',2.5,20,now());# 用户修改数量
update orders set onum=35 where gid='A0001';

结果如下:

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

# 切换数据库
use mydb7_openlab;# 创建存储过程s1
delimiter //
create procedure s1()
beginselect name,incoming from emp_new;
end //delimiter ;# 调用
call s1();

结果如下:

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

# 查表结构获取变量类型
desc emp_new;delimiter //
create procedure s2(in in_name varchar(11),out out_age int)
beginselect age into out_age from emp_new where name=in_name;
end //
delimiter ;# 调用
select * from emp_new;# 查看数据
call s2("王五",@age);
select @age;

结果如下:

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

delimiter //
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 //
delimiter ;# 调用
call s3(101,@avg_sal);

结果如下:

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

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

相关文章

Mybatis-plus自动生成MVC架构

系列文章目录 目录 系列文章目录 文章目录 前言 核心特性 一、mybatis-plus插件介绍 二、使用步骤 1.下载插件 2.读入数据 总结 前言 MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具包,旨在简化开发流程并提高开发效率。以下…

Pytorch使用教学6-张量的分割与合并

在使用PyTorch时,对张量的分割与合并是不可避免的操作,本节就带大家深刻理解张量的分割与合并。 在开始之前,我们先对张量的维度进行深入理解: t2 torch.zeros((3, 4)) # tensor([[0., 0., 0., 0.], # [0., 0., 0., 0.…

MySQL练手 --- 1934. 确认率

题目链接:1934. 确认率 思路 由题可知,两个表,一个表为Signups注册表,另一个表为Confirmations信息确认表,表的关联关系为 一对一,且user_id作为两个表的连接条件(匹配字段)&#…

自动驾驶(八十八)---------通讯之SOMEIP

1. 什么是SOME/IP 服务导向架构(SOA,Service-Oriented Architecture)是一种设计软件系统的方法,强调通过可重用的服务来实现系统的松散耦合。每个服务是独立的功能单元,可以被不同的应用程序使用。这些服务通过标准化的…

音视频入门基础:H.264专题(16)——FFmpeg源码中,判断某文件是否为H.264裸流文件的实现

音视频入门基础:H.264专题系列文章: 音视频入门基础:H.264专题(1)——H.264官方文档下载 音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…

Redis (常用数据结构和命令)

目录 简介 概述 特点 数据结构 常用命令 通用命令 keys del exists expire 与 ttl String 命令 SET 和GET: MSET和MGET INCR和INCRBY和DECY SETNX SETEX Redis 命令 Key 的层级结构 key层级关系 : Hash命令 HSET和HGET HMSET和HMGET HGETALL H…

免杀笔记 -->API的整理Shellcode加密(过DeFender)

最近更新频率明显下降我懒,那么今天就来记录一下我们的一些常用的API的整理以及ShellCode的加密。 1.WinAPI整理 问我为什么要整理? 就是用起来的时候要左翻右翻 :: 烦死了 1.VirtualAlloc VirtualAlloc(NULL,sizeof(buf),MEM_…

FastAPI(七十五)实战开发《在线课程学习系统》接口开发-- 创建课程

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 上次我们分享了,FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言 从本篇文章开始,…

Potree在web端显示大型点云模型文件

一、克隆项目代码(准备好上网工具,得先有node.js npm 环境) git clone https://github.com/potree/potree.git二、依赖安装(换淘宝镜像能快一些) cd potree npm install三、运行 npm start四、使用样例 打开浏览器…

python黑马笔记

运算符: 算术运算符: 加 - 减 * 乘 / 除 // 整除 % 取余 ** 求平方 除法计算得出的结果都是小数 赋值运算符: 标准赋值: 复合赋值: 、 - 、 * 、 / 、// 、 ** 字符串: 字符串拓展内容&#xf…

Vue 3 实现左侧列表点击跳转滚动到右侧对应区域的功能

使用 Vue 3 实现左侧列表点击跳转到右侧对应区域的功能 1. 引言 在这篇博客中,我们将展示如何使用 Vue 3 实现一个简单的页面布局,其中左侧是一个列表,点击列表项时,右侧会平滑滚动到对应的内容区域。这种布局在很多应用场景中都…

力扣高频SQL 50 题(基础版)第三题

文章目录 力扣高频SQL 50 题(基础版)第三题1148.文章浏览题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50 题(基础版)第三题 1148.文章浏览 题目说明 Views 表: ---------------------- | Colu…

Internet Download Manager(IDM)2024中文版本有哪些新功能?6.42版本功能介绍

1. Internet Download Manager(IDM)是一款功能强大的下载管理器,支持所有流行的浏览器,并可提升下载速度高达5倍。 2. IDM具有智能下载逻辑加速器,可以设置文件下载优先级、分块下载等,提高下载效率。 IDM…

数据结构(5.3_4)——线索二叉树的概念

普通二叉树找某结点前驱和后继的方法 中序线索二叉树 n个结点的二叉树,有n1个空链域!可用来记录前驱,后继的信息 中序线索二叉树的存储结构 //线索二叉树结点 typedef struct ThreadNode {ElemType data;struct BiTNode* lchild, * rchild;int ltag,…

Facebook的隐私之战:用户数据保护的挑战与未来

在数字化时代,隐私问题成为了公众关注的焦点,而作为全球最大的社交网络平台之一,Facebook(现已更名为Meta)在用户数据保护方面面临着巨大的挑战。从数据泄露到隐私政策的变化,Facebook的隐私之战不仅关乎其…

前端三大主流框架Vue React Angular有何不同?

前端主流框架,Vue React Angular,大家可能都经常在使用,Vue React,国内用的较多,Angualr相对用的少一点。但是大家有思考过这三大框架的不同吗? 一、项目的选型上 中小型项目:Vue2、React居多…

规范:前后端接口规范

1、前言 随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。 然…

SpringMVC基础

SpringMVC ssm:mybatisSpringSpringMVC MVC三层架构 1、什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范 是将业务逻辑、数据、显示分离…

应用层自定义协议以及序列化和反序列化

文章目录 应用层自定义协议以及序列化和反序列化1、应用层自定义协议1.1、应用层1.2、协议 2、序列化和反序列化3、TCP 为什么支持全双工4、jsoncpp基础4.1、序列化4.2、反序列化 5、实现网络版计算器6、手写序列化和反序列化 应用层自定义协议以及序列化和反序列化 1、应用层…

Anconda 快速常用命令简洁版

目的:简单清楚的使用基本的conda 命令 可能需求 查看项目中的虚拟环境及依赖是否满足需求操作新环境来满足项目或者论文的实现 Anconda 常用命令 conda 查看基础命令1. 进入Anaconda 环境2. 查看版本3.查看有哪些虚拟环境4.激活虚拟环境5. 进入虚拟环境查看6. 退出…