数据库——水果商店进阶

news2024/9/30 7:14:59

 智能2112杨阳

一、目的与要求:

综合运用SQL语言相关知识如变量、游标、函数、触发器等解决实际问题。

二、内容:

设计并完成以下实验,要求附上源码(非截图),测试效果截图

  1. 在订单详情表orderitems插入新订单时自动获得水果价格。

源码:

delimiter //

create trigger get_price before insert on orderitems for. each row

begin

declare g_price decimal(6,2);

select f_price into g_price from fruits

where f_id=new.f_id;

set new.item_price=g_price;

end

//

insert into orderitems (o_num,o_item,f_id,quantity)values(30003,2,'b3',60);//

运行测试结果截图:

 

  1. 在orders表(总订单)中新增三个属性original_pricediscountpay,说明如下:
  • 属性名分别为original_price(原价格)、discount(折扣)、pay(应付款)数据类型都是decimal(10,2);
  • “原价格”是表orderitems(订单详情)中同一订单的总金额,该属性要求非空,初值0;
  • “折扣”是当前折扣信息(后续根据VIP等级自动更新,本题用初值1计算),该属性要求非空,初值1;
  • “应付款”是打折后的价格,该属性要求非空,初值0。

源码:

alter table orders

    add original_price decimal(10,2) not null default(0),

    add discount decimal(10,2) not null default(1),

add pay decimal(10,2) not null default(0);//

运行测试结果截图:

  1. 设计实验完成以下三项功能
  • 对总订单表orders修改已销售总订单

源码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `modify_order`()

begin

       declare number int;

       declare new_price decimal(10,2);

   declare done int default 0;

     declare modify_order cursor for select. o_num,sum(quantity*item_price) from orderitems group by o_num;

   declare continue handler for not found set done=1;

open modify_order;

read_loop:loop

       fetch modify_order into number,new_price;

       if done then leave read_loop;

       end if;

            update orders set original_price=new_price where. orders.o_num=number;

            update orders set pay=(new_price*orders.discount) where. orders.o_num=number;

       end loop read_loop;

close modify_order;

end

运行测试结果截图:

  • 在订单详情表orderitems新增订单项时同步修改总订单表orders相关属性值

源码:

create trigger orderitems_order after insert on orderitems. for each row update orders set original_price=new.quantity*new.item_price+original_price,

pay=new.quantity*new.item_price+pay where new.o_num=orders.o_num;

insert into orderitems(o_num,o_item,f_id,quantity). values(30004,2,'b1',5);

运行测试结果截图:

 

 

 

  • 在订单详情表orderitems删除订单项时同步修改总订单表orders相关属性值

源码:

create trigger deleteorderitems_order after delete on. orderitems for each row

update orders set original_price=original_price-(old.quantity*old.item_price),pay=pay-(old.quantity*old.item_price*discount) where old.o_num=orders.o_num;

delete from orderitems where o_num=30004 and o_item=4;

运行测试结果截图:

 

  • 在订单详情表orderitems修改订单项时同步修改总订单表orders相关属性值

源码:

create trigger updateorderitems_order after update on. orderitems for each row

    update orders set original_price=original_price-(old.quantity*old.item_price)+(new.quantity*new.item_price),pay=pay-(old.quantity*old.item_price*discount)+(new.quantity*new.item_price*discount) where new.o_num=orders.o_num;

运行测试结果截图:

 

三、小结

1.遇到的问题及解决过程

问题:测试样例是测试失败

解决过程:确保主键唯一的情况下测试样例

2.  产生的错误及原因分析

错误:插入游标失败

原因分析:定义变量必须放在游标之前,而我放在了游标后面,所以导致此错误    

3.体会和收获。

本次博客综合之前所学知识来完善水果商店功能,让我对mysql的应用更加得心应手,对mysql编程有了新的理解和认识,能运用mysql解决一些实际问题,总的来说收获满满。

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

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

相关文章

【openGauss/MogDB列存表的delta表测试】

列存储格式是OLAP类数据库系统最常用的数据格式,适合复杂查询、范围统计类查询的在线分析型处理系统。cstore列存储的主体数据文件以CU为I/O单元,只支持追加写操作,因此cstore只有读共享缓冲区。CU间和CU内的可见性由对应的CUDESE表&#xff…

高项-【整合管理】

8.1管理基础 项目整合管理由项目经理负责,责任不能被授权和转移。对整个项目承担最终责任。执行项目整合是担任双重角色: 组织层面,与项目发起人携手合作,了解战略目标,确保项目目标和成果与项目组合、项目集一集业务…

自助借还办证一体机软件需求说明书

1. 简介 1.1 项目概括 本项目主要实现读者自助办证、借书、还书、查询、续借的功能,减轻管理员的工作量,提升读者的借阅体验,提高了图书的借阅量与流通率,是图书馆智能化、无人化建设的重要步骤。 1.2 项目背景 ​ 目前各大图…

【ArkTS】如何修改应用的首页

之前看到一种说法,说是应用首页是 entry > src > main > resources > base > profile > main_pages.json 中src配置中数组第一个路径元素。这种说法是不对的!!! 如果需要修改应用加载时的首页,需要…

软件测试面试题之测试基础,轻松面对面试,一篇足矣

软件测试的流程是什么?(测试流程) (1)需求调查:全面了解系统概况、应用领域、软件开发周期、软件开发环境、开发组织、时间安排、功能需求、性能需求、质量需求及测试要求等。根据系统概况进行项目所需的人…

oracle与gbase8s迁移数据类型对照

声明:以下为笔者阅读gbase官方文档和oracle官方文档的理解,如有错误,敬请指正。oracle与gbase8s迁移数据类型对照及举例说明 最终结论:oracle与gbase8s数据类型对应关系关于单精度与双精度的区别关于定点与浮点定义的区别精度的定…

linux之Samba服务器

环境:虚拟机CENTOS 7和 测试机相通 一、Samba服务器_光盘共享(匿名访问) 1.在虚拟机CENTOS 7安装smb服务,并在防火墙上允许samba流量通过 2. 挂载光盘 3.修改smb.conf配置文件,实现光盘匿名共享 4. 启动smb服务 5.在…

Bezier 曲线 2D

Bezier 曲线于 1962 年由法国雪铁龙汽车公司的工程师 Bezier 所发表,主要应用于汽车的外形设计。虽然 Bezier 曲线早在 1959 年便由法国雷诺汽车公司的 De Casteljau 运用递推算法开发成功,但是 Bezier 却给出了曲线的详细的曲线计算公式。所以&#xff…

游戏、算法竞赛与退役(流水账版)

写在前面 不出意外的话,这东西本该咕到翻年之后再发的,但好像催稿催的有点厉害,于是就找个机会把他写了(笑) 最初是只想写个算法竞赛退役记的,后面发觉写起来就有点收不住,算法竞赛牵扯到太多…

linux网络管理_配置网络参数

11.2 配置网络参数 ls /etc/sysconfig/network-scripts/ 11.2.1 配置IP 配置网卡参数 # 可考虑先备份 # cp /etc/sysconfig/network-scripts/ifcfg-ens33 . # 复制到当前目录 ​ vim /etc/sysconfig/network-scripts/ifcfg-ens33 ifcfg-ens33文件中的内容 TYPEEthernet PROX…

MATLAB 平面拟合并可视化(34)

MATLAB 平面拟合并可视化(34) 一、效果二、代码一、效果 二、代码 % 生成三维点数据 x = rand(100, 1); y = rand(100, 1

LLaMA系列模型

1.LLama 1.1 简介 Open and Efficient Foundation Language Models (Open但没完全Open的LLaMA) 2023年2月,Meta(原Facebook)推出了LLaMA大模型,使用了1.4T token进行训练,虽然最大模型只有65B,但在相关评…

Python实战:信用卡客户历史数据挖掘与分析

Python实战:信用卡客户历史数据挖掘与分析 引言数据获取与预处理描述性分析模型建立与评估结果分析Web应用展示(可选) 引言 信用卡客户历史数据分析是金融领域中的重要课题之一。通过对公开数据集的挖掘,本文将利用Python编程语言…

51单片机LED与无源蜂鸣器模块

IO口的使用1 本文主要对51单片机的LED灯的使用以及蜂鸣器的使用进行介绍,其中包括一些实例分析: 1.实现发光二极管的从左到右的流水点亮 2.左右来回循环的流水灯 3.蜂鸣器以一定频率响 文章目录 IO口的使用1一、LED灯举个栗子一举个栗子二 二、蜂鸣器2.1…

华为OD机试 - 连续出牌数量 - 深度优先搜索dfs算法(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路1、题目解读2、具体步骤 五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08…

Linux--学习记录(3)

G重要编译参数 -g(GDB调试) -g选项告诉gcc产生能被GNU调试器GDB使用的调试信息,以调试程序编译带调试信息的可执行文件g -g hello.c -o hello编译过程: -E(预处理) g -E hello.c -o hello.i-S(编…

基于springboot+vue 的智能物流管理系统

简介 基于springbootvue 的智能物流管理系统 适用于 设计,课程设计参考与学习用途。仅供学习参考。 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料 **项目编号:springboot074 ** **…

C++刷题 -- KMP算法

C刷题 – KMP算法 文章目录 C刷题 -- KMP算法1.算法讲解2.算法实现 https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/description/ 1.算法讲解 KMP算法是一种字符串匹配算法,当出现字符串不匹配时,可以记录一部分之…

数据可视化---箱线图

类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…

【MySQL】Sql优化之索引的使用方式(145)

索引分类 1.单值索引 单的意思就是单列的值,比如说有一张数据库表,表内有三个字段,分别是 id name numberNo,我给name 这个字段加一个索引,这就是单值索引,因为只有name 这一列是索引; 一个表…