💻博主现有专栏:
C51单片机(STC89C516),c语言,c++,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux,基于HTML5的网页设计及应用,Rust(官方文档重点总结),jQuery,前端vue.js,Javaweb开发,设计模式、Python机器学习等
🥏主页链接:Y小夜-CSDN博客
目录
🎯要求
🎯前提
🎯事件
🎯存储函数
🎯触发器
🎯存储过程
🎯要求
- 理解函数、存储过程、触发器的概念
- 掌握函数、存储过程、触发器的语法格式、使用方法
- 掌握函数、存储过程、触发器的创建、执行
- 能够使用函数、存储过程、触发器处理实际系统中的业务逻辑
🎯前提
进销存管理系统数据库salesmanagement中的货品表、货品库存表结构如下。
表2-1 货品名称表(goods)
Field
Type
Comment
gid
int
货品id
gname
varchar(20)
货品名称
unit
varchar(20)
计量单位
barcode
varchar(20)
货品条码
retail_Price
decimal(10, 2)
零售价
promotional_Price
decimal(10, 2)
促销价
abbreviations
varchar(20)
名称缩写(由触发器自行维护)
Status
tinyint
货品状态
(0正常,1暂停进货(不能购进,但可以销售),2不再进货(不能购进,也不能销售))
表2-2货品库存表stock
Field
Type
Comment
stockid
int
库存id
gid
Int
货品id,外键
quantity
decimal(18, 3)
(当前)库存数量
yesterday_quantity
decimal(18, 3)
昨日库存(用于日清),系统自动维护
month_quantity
decimal(18, 3)
月初库存(用于月结),系统自动维护
表中的数据如下表所示:
表2-3货品名称表(goods)数据
gid
gname
unit
barcode
retail_Price
promotional_Price
abbreviations
STATUS
1
可口可乐
瓶
101
3
2.5
kkkl
0
2
百事可乐
瓶
102
3
2.5
bskl
0
3
伊利牛奶
盒
103
5
4.5
ylnn
0
4
农夫山泉
瓶
105
2
1.5
nfsq
0
5
涪陵榨菜
袋
106
1
0.8
flzc
0
6
青岛啤酒
听
107
5
4
qdpj
0
7
牙刷
支
1009
3
2.5
yss
0
9
牙膏
支
1010
30
25
yggg
0
10
毛巾
条
1011
20
15
mjj
0
INSERT INTO goods (gid, gname, unit, barcode, retail_Price, promotional_Price, abbreviations, STATUS) VALUES (1, '可口可乐', '瓶', '101', 3, 2.5, 'kkkl', 0), (2, '百事可乐', '瓶', '102', 3, 2.5, 'bskl', 0), (3, '伊利牛奶', '盒', '103', 5, 4.5, 'ylnn', 0), (4, '农夫山泉', '瓶', '105', 2, 1.5, 'nfsq', 0), (5, '涪陵榨菜', '袋', '106', 1, 0.8, 'flzc', 0), (6, '青岛啤酒', '听', '107', 5, 4, 'qdpj', 0), (7, '牙刷', '支', '1009', 3, 2.5, 'yss', 0), (9, '牙膏', '支', '1010', 30, 25, 'yggg', 0), (10, '毛巾', '条', '1011', 20, 15, 'mjj', 0);
表2-4货品库存表stock数据
stockid
gid
quantity
yesterday_quantity
month_quantity
2
10
20
0
0
3
1
10
0
0
4
2
11
0
0
5
3
30
0
0
6
4
40
0
0
7
5
30
0
0
8
6
50
0
0
9
7
60
0
0
10
9
70
0
0
INSERT INTO stock (stockid, gid, quantity, yesterday_quantity, month_quantity) VALUES (2, 10, 20, 0, 0), (3, 1, 10, 0, 0), (4, 2, 11, 0, 0), (5, 3, 30, 0, 0), (6, 4, 40, 0, 0), (7, 5, 30, 0, 0), (8, 6, 50, 0, 0), (9, 7, 60, 0, 0), (10, 9, 70, 0, 0);
🎯事件
(1)创建一个事件,10秒后,用库存更新昨日库存。
DELIMITER $$ CREATE EVENT `salesmanagement`.`direct_happen` ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 SECOND DO BEGIN UPDATE `stock` SET `yesterday_quantity`=`quantity`; END$$ DELIMITER ;
🎯存储函数
(1)创建PysxCx函数,能够根据输入的汉字,返回其拼音首字母缩写
🎯触发器
(1)在goods表上创建触发器,实现货品名称缩写的自动维护
(2)添加货品时,自动在库存中添加一条对应数据
(3)删除货品时,自动在库存中删除对应库存数据
🎯存储过程
(1)创建货品信息维护goodsWh存储过程,能够实现对货品信息的增删改操作
- 创建货品信息查询goodsCx存储过程,能够实现对货品信息的查询操作
(3)参照goodsWh、goodsCx存储过程分别创建2个存储过程,实现对user表信息的增删改及查询操作。
Field
Type
Comment
uid
int
顾客id,从10000开始
uname
varchar(20)
姓名
sex
varchar(20)
性别
card_number
varchar(20)
会员卡号
phone
varchar(20)
手机号
card_balance
decimal(10, 2)
卡内余额
points
int
积分
last_purchase_date
date
上次消费时间