首页 > 其他分享 >【无标题】

【无标题】

时间:2024-06-21 13:31:53浏览次数:7  
标签:INSERT 22 -- INTO 无标题 VALUES user

call create_order_infos(7,2,3);
delimiter $$
create procedure create_order_infos(
in in_user_id int,
in in_product_id int,
in in_count int
)
begin
-- 业务逻辑
select in_user_id '用户id',in_product_id '产品id',in_count '购买数量';
end $$
delimiter;
-- 创建用户表
CREATE TABLE user (
    -- 用户ID,主键,自增
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    -- 用户名,非空且唯一
    username VARCHAR(50) NOT NULL UNIQUE,
    -- 密码,非空,假设密码使用哈希加密存储
    password VARCHAR(255) NOT NULL, 
    -- 邮箱,非空且唯一
    email VARCHAR(100) UNIQUE,
    -- 手机号,非空且唯一
    phone VARCHAR(20) UNIQUE,
    -- 创建时间,默认值为当前时间戳
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
 
 
-- 创建用户钱包表
CREATE TABLE user_wallet (
    -- 钱包ID,主键,自增
    wallet_id INT AUTO_INCREMENT PRIMARY KEY,
    -- 用户ID,外键,关联user表的user_id
    user_id INT NOT NULL,
    -- 钱包余额,非空,默认值为0.00
    balance DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
    -- 创建时间,默认值为当前时间戳
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    -- 外键约束,当user表删除用户时,级联删除该用户的钱包记录
    FOREIGN KEY (user_id) REFERENCES user(user_id) ON DELETE CASCADE
);
 
 
-- 创建用户钱包交易日志表
CREATE TABLE user_wallet_log (
    -- 日志ID,主键,自增
    log_id INT AUTO_INCREMENT PRIMARY KEY,
    -- 用户ID,外键,关联user表的user_id
    user_id INT NOT NULL,
    -- 交易类型,非空
    transaction_type VARCHAR(50) NOT NULL,
    -- 交易金额,非空
    amount DECIMAL(10, 2) NOT NULL,
    -- 交易时间,非空
    transaction_time TIMESTAMP NOT NULL,
    -- 外键约束,当user表删除用户时,级联删除该用户的所有交易日志记录
    FOREIGN KEY (user_id) REFERENCES user(user_id) ON DELETE CASCADE
);
 
 
-- 创建商品类别表
CREATE TABLE product_type (
    -- 类别ID,主键,自增
    type_id INT AUTO_INCREMENT PRIMARY KEY,
    -- 类别名称,非空
    type_name VARCHAR(100) NOT NULL,
    -- 父类别ID,可为空
    parent_id INT NULL,
    -- 类别描述
    description TEXT,
    -- 创建时间,默认值为当前时间戳
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
 
 
-- 创建商品表
CREATE TABLE product (
    -- 商品ID,主键,自增
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    -- 商品名称,非空
    product_name VARCHAR(255) NOT NULL,
    -- 商品价格,非空,默认值为0.00
    price DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
    -- 库存数量,非空,默认值为0
    stock INT NOT NULL DEFAULT 0,
    -- 类别ID,非空,外键,关联product_type表的type_id
    type_id INT NOT NULL,
    -- 创建时间,默认值为当前时间戳
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    -- 外键约束,当删除商品类别时,若商品仍属于该类别,则不允许删除
    FOREIGN KEY (type_id) REFERENCES product_type(type_id) ON DELETE RESTRICT
);
 
 
 
-- 创建订单表
CREATE TABLE `order` (
    -- 订单ID,主键,自增
    `order_id` INT AUTO_INCREMENT PRIMARY KEY,
    -- 用户ID,非空,关联用户表的user_id字段
    `user_id` INT NOT NULL,
    -- 订单状态,非空,默认值为'待支付'(表示订单等待支付的状态)
    `order_status` VARCHAR(50) NOT NULL DEFAULT '待支付',
    -- 下单时间,默认值为当前时间戳(记录订单创建的时间)
    `order_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    -- 支付状态,非空,默认值为'未支付'(表示订单尚未完成支付的状态)
    `payment_status` VARCHAR(50) NOT NULL DEFAULT '未支付',
    -- 支付时间,可以为空(表示订单完成支付的时间,如果未支付则为NULL)
    `payment_time` TIMESTAMP NULL,
    -- 订单总价,非空,默认值为0.00(表示订单中所有商品的总价格)
    `total_price` DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
    -- 外键约束,关联用户表的user_id字段,当用户被删除时,限制删除该用户创建的订单(防止数据不一致)
    FOREIGN KEY (`user_id`) REFERENCES `user`(`user_id`) ON DELETE RESTRICT
);
 
 
-- 创建订单详情表
CREATE TABLE order_info (
    -- 订单详情ID,主键,自增
    order_info_id INT AUTO_INCREMENT PRIMARY KEY,
    -- 订单ID,非空,关联订单表的order_id字段
    order_id INT NOT NULL,
    -- 商品ID,非空,关联商品表的product_id字段
    product_id INT NOT NULL,
    -- 购买数量,非空(表示订单中每个商品的数量)
    quantity INT NOT NULL,
    -- 单价,非空(表示订单中每个商品的单位价格)
    unit_price DECIMAL(10, 2) NOT NULL,
    -- 外键约束,关联订单表的order_id字段,当订单被删除时,级联删除该订单的所有详情记录(保持数据完整性)
    FOREIGN KEY (order_id) REFERENCES `order`(order_id) ON DELETE CASCADE,
    -- 外键约束,关联商品表的product_id字段,当商品被删除时,限制删除该商品在订单中的记录(防止数据不一致)
    FOREIGN KEY (product_id) REFERENCES product(product_id) ON DELETE RESTRICT
);
 
-- 插入10条用户数据
INSERT INTO `user` VALUES ('1', '王语嫣', 'password1', '[email protected]', '13800000001', '2024-06-06 22:07:39');
INSERT INTO `user` VALUES ('2', '小龙女', 'password2', '[email protected]', '13800000002', '2024-06-09 22:07:39');
INSERT INTO `user` VALUES ('3', '赵灵儿', 'password3', '[email protected]', '13800000003', '2024-06-09 22:07:39');
INSERT INTO `user` VALUES ('4', '杨过', 'password4', '[email protected]', '13800000004', '2024-05-31 22:07:39');
INSERT INTO `user` VALUES ('5', '向问天', 'password5', '[email protected]', '13800000005', '2024-06-04 22:07:39');
INSERT INTO `user` VALUES ('6', '杨潇', 'password6', '[email protected]', '13800000006', '2024-06-01 22:07:39');
INSERT INTO `user` VALUES ('7', '郭靖', 'password7', '[email protected]', '13800000007', '2024-06-01 22:07:39');
INSERT INTO `user` VALUES ('8', '黄蓉', 'password8', '[email protected]', '13800000008', '2024-06-04 22:07:39');
INSERT INTO `user` VALUES ('9', '程英', 'password9', '[email protected]', '13800000009', '2024-06-08 22:07:39');
INSERT INTO `user` VALUES ('10', '郭襄', 'password10', '[email protected]', '13800000010', '2024-06-08 22:07:39');
 
 
-- 插入10条用户钱包数据,与user表对应
INSERT INTO `user_wallet` VALUES ('1', '1', '422.00', '2024-06-08 22:07:42');
INSERT INTO `user_wallet` VALUES ('2', '2', '897.00', '2024-06-04 22:07:42');
INSERT INTO `user_wallet` VALUES ('3', '3', '354.00', '2024-06-03 22:07:42');
INSERT INTO `user_wallet` VALUES ('4', '4', '758.00', '2024-06-07 22:07:42');
INSERT INTO `user_wallet` VALUES ('5', '5', '319.00', '2024-06-06 22:07:42');
INSERT INTO `user_wallet` VALUES ('6', '6', '350.00', '2024-06-08 22:07:42');
INSERT INTO `user_wallet` VALUES ('7', '7', '871.00', '2024-06-04 22:07:42');
INSERT INTO `user_wallet` VALUES ('8', '8', '515.00', '2024-06-05 22:07:42');
INSERT INTO `user_wallet` VALUES ('9', '9', '1042.00', '2024-06-05 22:07:42');
INSERT INTO `user_wallet` VALUES ('10', '10', '273.00', '2024-06-03 22:07:42');
 
 
 
-- 插入10条用户钱包交易日志数据
INSERT INTO `user_wallet_log` VALUES ('1', '1', '充值', '100.00', '2024-06-01 22:07:48');
INSERT INTO `user_wallet_log` VALUES ('2', '2', '消费', '50.00', '2024-06-08 22:07:48');
INSERT INTO `user_wallet_log` VALUES ('3', '3', '提现', '200.00', '2024-06-09 22:07:48');
INSERT INTO `user_wallet_log` VALUES ('4', '4', '充值', '150.00', '2024-05-31 22:07:48');
INSERT INTO `user_wallet_log` VALUES ('5', '5', '消费', '75.00', '2024-06-04 22:07:48');
INSERT INTO `user_wallet_log` VALUES ('6', '6', '提现', '300.00', '2024-06-02 22:07:48');
INSERT INTO `user_wallet_log` VALUES ('7', '7', '充值', '250.00', '2024-06-09 22:07:48');
INSERT INTO `user_wallet_log` VALUES ('8', '8', '消费', '120.00', '2024-06-07 22:07:48');
INSERT INTO `user_wallet_log` VALUES ('9', '9', '提现', '400.00', '2024-06-08 22:07:48');
INSERT INTO `user_wallet_log` VALUES ('10', '10', '充值', '300.00', '2024-05-31 22:07:48');
INSERT INTO `product_type` VALUES ('1', '智能手机', null, '包含各种品牌和型号的智能手机,涵盖不同价格区间和功能特点。', '2024-05-31 22:13:55');
INSERT INTO `product_type` VALUES ('2', '笔记本电脑', null, '提供多种类型和配置的笔记本电脑,适用于不同工作和学习需求。', '2024-06-01 22:13:55');
INSERT INTO `product_type` VALUES ('3', '智能家居', null, '包含智能家居设备,如智能音箱、智能照明、智能门锁等。', '2024-06-02 22:13:55');
INSERT INTO `product_type` VALUES ('4', '电视与显示器', null, '涵盖各种尺寸和分辨率的电视与显示器,适用于家庭和企业使用。', '2024-06-03 22:13:55');
INSERT INTO `product_type` VALUES ('5', '耳机与音响', null, '提供高品质耳机和音响设备,满足用户的音频体验需求。', '2024-06-04 22:13:55');
INSERT INTO `product` VALUES ('1', 'iPhone 13', '6999.00', '100', '1', '2024-06-05 22:13:55');
INSERT INTO `product` VALUES ('2', 'MacBook Pro', '14999.00', '50', '2', '2024-06-06 22:13:55');
INSERT INTO `product` VALUES ('3', '小米智能音箱', '199.00', '200', '3', '2024-06-07 22:13:55');
INSERT INTO `product` VALUES ('4', '三星65寸4K电视', '7999.00', '80', '4', '2024-06-08 22:13:55');
INSERT INTO `product` VALUES ('5', '索尼降噪耳机', '1299.00', '150', '5', '2024-06-09 22:13:55');
INSERT INTO `product` VALUES ('6', '华为MatePad Pro', '3999.00', '70', '2', '2024-05-31 22:13:55');
INSERT INTO `product` VALUES ('7', '小米米家智能灯泡', '79.00', '300', '3', '2024-06-01 22:13:55');
INSERT INTO `product` VALUES ('8', 'LG 27寸显示器', '1499.00', '120', '4', '2024-06-02 22:13:55');
INSERT INTO `product` VALUES ('9', '苹果AirPods Pro', '1599.00', '90', '5', '2024-06-03 22:13:55');
INSERT INTO `product` VALUES ('10', '一加9 Pro', '4999.00', '60', '1', '2024-05-30 22:13:55');
INSERT INTO `order` VALUES ('1', '2', '待支付', '2024-06-09 22:19:14', '未支付', '2024-06-09 22:19:50', '120.00');
INSERT INTO `order` VALUES ('2', '5', '已支付', '2024-06-09 22:19:14', '已支付', '2024-06-09 22:19:53', '230.50');
INSERT INTO `order` VALUES ('3', '7', '已完成', '2024-06-09 22:19:14', '已支付', '2024-06-05 22:19:58', '345.75');
INSERT INTO `order` VALUES ('4', '9', '已取消', '2024-06-09 22:19:14', '未支付', '2024-06-09 22:20:46', '0.00');
INSERT INTO `order` VALUES ('5', '2', '待支付', '2024-06-09 22:19:14', '未支付', '2024-06-09 22:20:49', '45.00');
INSERT INTO `order` VALUES ('6', '5', '已支付', '2024-06-09 22:19:14', '已支付', '2024-06-09 22:20:51', '78.00');
INSERT INTO `order` VALUES ('7', '7', '待评价', '2024-06-09 22:19:14', '已支付', '2024-06-09 22:20:53', '90.20');
INSERT INTO `order` VALUES ('8', '9', '待发货', '2024-06-09 22:19:14', '已支付', '2024-06-09 22:20:55', '150.00');
INSERT INTO `order` VALUES ('9', '2', '待支付', '2024-06-09 22:19:14', '未支付', '2024-06-09 22:20:57', '198.00');
INSERT INTO `order` VALUES ('10', '5', '待支付', '2024-06-09 22:19:14', '未支付', '2024-06-09 22:20:59', '66.50');
INSERT INTO `order_info` VALUES ('1', '1', '1', '2', '50.00');
INSERT INTO `order_info` VALUES ('2', '1', '2', '1', '60.00');
INSERT INTO `order_info` VALUES ('3', '2', '3', '3', '70.00');
INSERT INTO `order_info` VALUES ('4', '3', '2', '1', '60.00');
INSERT INTO `order_info` VALUES ('5', '3', '4', '2', '80.00');
INSERT INTO `order_info` VALUES ('6', '5', '1', '1', '50.00');
INSERT INTO `order_info` VALUES ('7', '6', '4', '1', '80.00');
INSERT INTO `order_info` VALUES ('8', '7', '3', '2', '70.00');
INSERT INTO `order_info` VALUES ('9', '8', '2', '2', '60.00');
INSERT INTO `order_info` VALUES ('10', '9', '1', '3', '50.00');
INSERT INTO `order_info` VALUES ('11', '9', '3', '1', '70.00');
INSERT INTO `order_info` VALUES ('12', '10', '2', '1', '60.00');
call create_order_infos(7,2,3);
delimiter $$
create procedure create_order_infos(
in in_user_id int,
in in_product_id int,
in in_count int
)
begin
-- 判断用户是否有消费资格
declare count_money decimal(10,2);
-- 用户金额
declare out_price decimal(10,2);
-- 产品价格
declare all_price decimal(10,2);
-- 总消费金额
declare result_str varchar(200);
-- 用于返回消息
declare new_order_id int;

select balance into count_money from user_wallet where user_id=in_user_id;
-- 赋值有多少钱
select price into out_price from product where product_id=in_product_id;
-- 获取产品的单价
set all_price=out_price*in_count;
-- 总消费金额
-- 判断是否能消费得起
if all_price>count_money then
set result_str=concat('金额不足',all_price,'您当前账户余额:',count_money,'请充值');
signal sqlstate '45000' set message_text=result_str;
end if;
-- 需要修改以及插入具体数据,共计涉及到5张表的操作,2表修改,3个插入
-- 1、修改用户钱包余额
update user_wallet set balance=balance-all_price where user_id=in_user_id;
-- 2、修改产品表的产品数量
update produce set stock=stock-in_count where product_id=in_produce_id;
-- 3、添加消费日志
insert into user_wallet_log (user_id,transaction_type,amount)values(in_user_id,'消费',all_price);
-- 4.添加订单
insert into `order` (user_id,order_status,payment_status,payment_time,total_price)values(
in_user_id,'已支付','已支付',now(),all_price);
set new_order_id=LAST_INSERT_ID();
-- 5、添加订单详情
insert into order_info(order_id,product_id,quantity,unit_price)values(new_order_id,in_product_id,in_count,out_price);
end $$
delimiter;

标签:INSERT,22,--,INTO,无标题,VALUES,user
From: https://blog.csdn.net/2302_80727358/article/details/139835558

相关文章

  • 【无标题】
    学习目标:一周掌握Python入门知识学习内容:例如:搭建python开发环境掌握python基本语法掌握条件语句掌握循环语句学习时间:例如:业余时间不固定学习产出:例如:技术笔记2遍CSDN技术博客3篇习的vlog视频1个......
  • 【无标题】
    作者:链接:https://juejin.cn/post/7347989108172128282来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。上篇文章中我们介绍了如何自定义Springboot参数约束注解和约束校验器,默认情况下,Springboot中的参数校验都是在Controller控制......
  • 【无标题】
    作者:萤火架构链接:https://juejin.cn/post/7337513754970095667#heading-0来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。最近看几个老项目的SQL条件中使用了1=1,想想自己也曾经这样写过,略有感触,特别拿出来说道说道。编写SQL语句就......
  • 【无标题】
    AtmosphericToolboxHARPHARP介绍及安装基本介绍HARP文档安装可能遇到的问题HARP介绍及安装HARP是用于读取、处理和比较卫星遥感数据、模型数据、原位数据和地面遥感数据的一个工具包。基本介绍链接:https://atmospherictoolbox.org/harp/HARP工具包由一组命令行......
  • 【无标题】
    开源大模型与闭源大模型,你更看好哪一方?本人业余小白,浅浅的讲述一下我的观点。一:数据隐私关于数据隐私这一块,我更看好闭源大模型,因为闭源大模型并不像开源大模型一样容易扒取数据。二:商业应用这玩意我个人认为主要分两块一是隐私这一块那肯定是闭源跟好一点。二呢开源......
  • 【无标题】
    操作系统实验报告4实验四 内存分配器的实现实习编号:操作系统实验_实验_4实习名称:内存分配器的实现巩固知识点了解并熟悉Linux操作系统的常用命令操作;了解基于Linux的功能开发。实习对应培养点学习使用Linux环境编写C程序;学习内存管理的开发相关知识。实验目的熟悉掌握......
  • 【无标题】
    CSS选择器以及权重问题选择器:就是给标签取名字一、选择器的类型1、标签(类型)选择器:(权重为1)标签选择器可以对所有的同类标签起作用,对应标签div/p/i/strong语法:标签{属性:属性值;}应用场景:需要统一或者清除标签内容的样式时;2、id选择器:(权重为100)语法:在标签内给用id给标......
  • 【无标题】基于[具体技术]的烟雾识别算法研究
    本文主要探讨了一种高效的烟雾识别算法,通过对[相关技术或特征]的分析和利用,实现了对烟雾的准确检测和识别。详细介绍了算法的原理、流程以及实验结果,并结合实际应用案例展示了其应用价值。一、引言(阐述烟雾识别的重要性及应用场景)二、相关工作(回顾以往烟雾识别算法的研究......
  • 【无标题】
    Web_Person简单的制作一个个人主页。在这里面我们需要制作一个表头,Tabs导航栏。这个·做的比较简单,所以比较复杂的东西。表头先自定义一个组件制作表头,这里面的使用的Text、Image和Button组件。并且我们需要在Texr添加点击事件:页面返回到上一级。@Componentstruct Head1......
  • 【无标题】Spark基础编程
    一、创建RDD    1.从内存中创建RDD      (1)parallelize()方法       (2)makeRDD()方法通过Linux本地文件创建RDD 二,使用map方式转换数据  使用sortBy方式转换数据  用collect方法查询数据flat方法转换数据 take方法 ......