《深入解析:水果销售数据库操作与查询技巧》

文章目录

  • 一、数据库结构与数据源插入
    • 1.1 创建数据库与表
    • 1.2 插入数据
  • 二、基础数据查询
    • 2.1 查询客户信息
    • 2.2 查询供应商信息
  • 三、查询优化与技巧
    • 3.1 使用LIMIT子句
  • 四、高级查询技巧
    • 4.1 使用聚合函数
    • 4.2 连接查询
    • 4.3 使用子查询
  • 五、案例分析
    • 5.1 客户订单详情查询


一、数据库结构与数据源插入

本节将介绍如何构建一个水果销售数据库,包括创建数据库、数据表,并插入初始数据。

1.1 创建数据库与表

CREATE DATABASE fruitsales;USE fruitsales;CREATE TABLE fruits(f_id    char(10)    NOT NULL  PRIMARY KEY,s_id    INT        	NOT NULL,f_name  char(255)  	NOT NULL,f_price decimal(8,2)
);

1.2 插入数据

INSERT INTO fruits (f_id, s_id, f_name, f_price)VALUES('a1', 101,'apple',5.2),('b1',101,'blackberry', 10.2),('bs1',102,'orange', 11.2),('bs2',105,'melon',8.2),('t1',102,'banana', 10.3),('t2',102,'grape', 5.3),('o2',103,'coconut', 9.2),('c0',101,'cherry', 3.2),('a2',103, 'apricot',2.2),('l2',104,'lemon', 6.4),('b2',104,'berry', 7.6),('m1',106,'mango', 15.6),('m2',105,'xbabay', 2.6),('t4',107,'xbababa', 3.6),('m3',105,'xxtt', 11.6),('b5',107,'xxxx', 3.6);CREATE TABLE customers(c_id      int       NOT NULL AUTO_INCREMENT,c_name    char(50)  NOT NULL,c_address char(50)  NULL,c_city    char(50)  NULL,c_zip     char(10)  NULL,c_contact char(50)  NULL,c_email   char(255) NULL,PRIMARY KEY (c_id)
);
INSERT INTO customers(c_id, c_name, c_address, c_city, c_zip,  c_contact, c_email) 
VALUES(10001, 'RedHook', '200 Street ', 'Tianjin', '300000',  'LiMing', 'LMing@163.com'),
(10002, 'Stars', '333 Fromage Lane','Dalian', '116000',  'Zhangbo','Jerry@hotmail.com'),
(10003, 'Netbhood', '1 Sunny Place', 'Qingdao',  '266000','LuoCong', NULL),
(10004, 'JOTO', '829 Riverside Drive', 'Haikou','570000',  'YangShan', 'sam@hotmail.com');CREATE TABLE orderitems(o_num      int          NOT NULL,o_item     int          NOT NULL,f_id       char(10)     NOT NULL,quantity   int          NOT NULL,item_price decimal(8,2) NOT NULL,PRIMARY KEY (o_num,o_item)
) ;
INSERT INTO orderitems(o_num, o_item, f_id, quantity, item_price)
VALUES(30001, 1, 'a1', 10, 5.2),
(30001, 2, 'b2', 3, 7.6),
(30001, 3, 'bs1', 5, 11.2),
(30001, 4, 'bs2', 15, 9.2),
(30002, 1, 'b3', 2, 20.0),
(30003, 1, 'c0', 100, 10),
(30004, 1, 'o2', 50, 2.50),
(30005, 1, 'c0', 5, 10),
(30005, 2, 'b1', 10, 8.99),
(30005, 3, 'a2', 10, 2.2),
(30005, 4, 'm1', 5, 14.99);CREATE TABLE suppliers(s_id      int      NOT NULL AUTO_INCREMENT,s_name    char(50) NOT NULL,s_city    char(50) NULL,s_zip     char(10) NULL,s_call    CHAR(50) NOT NULL,PRIMARY KEY (s_id)
) ;
INSERT INTO suppliers(s_id, s_name,s_city,  s_zip, s_call)
VALUES(101,'FastFruit Inc.','Tianjin','300000','48075'),
(102,'LT Supplies','Chongqing','400000','44333'),
(103,'ACME','Shanghai','200000','90046'),
(104,'FNK Inc.','Zhongshan','528437','11111'),
(105,'Good Set','Taiyuang','030000', '22222'),
(106,'Just Eat Ours','Beijing','010', '45678'),
(107,'DK Inc.','Zhengzhou','450000', '33332');CREATE TABLE orders(o_num  int      NOT NULL AUTO_INCREMENT,o_date datetime NOT NULL,c_id   int      NOT NULL,PRIMARY KEY (o_num)
) ;
INSERT INTO orders(o_num, o_date, c_id)
VALUES(30001, '2021-09-01', 10001),
(30002, '2021-09-12', 10003),
(30003, '2021-09-30', 10004),
(30004, '2021-10-03', 10005),
(30005, '2021-10-08', 10001);

在这里插入图片描述

二、基础数据查询

2.1 查询客户信息

  • 查询客户表customers中的客户编号c_id、客户名c_name和地址c_address信息。
SELECT c_id,c_name,c_address FROM customers; 

在这里插入图片描述

  • 在customers表中查询每个客户的c_id、c_name、c_email,输出的列名为客户编号、客户姓名、邮箱。
SELECT c_id AS '客户编号',c_name '客户姓名',c_email '邮箱' 
FROM customers;

在这里插入图片描述

2.2 查询供应商信息

  • 查询供应商表suppliers中供应商编号s_id为101的供应商名称s_name和供应商电话s_call。
SELECT s_name,s_call FROM suppliersWHERE s_id=101;

在这里插入图片描述

  • 查询fruits表中s_id为102的供应商所供应的orange和banana水果的名称及价格信息。
SELECT f_name,f_price FROM  fruitsWHERE s_id=102 AND (f_name='orange' OR f_name='banana');

在这里插入图片描述

  • 查询orders表中订购日期o_date为2021年9月份的订单编号o_num信息。
SELECT o_num FROM ordersWHERE o_date BETWEEN '2021-09-01' AND '2021-9-30';

在这里插入图片描述

  • 查询suppliers表中供应商名以Inc.结尾或供应商名第3个字母为M的供应商名称及所在城市的信息。
SELECT s_name,s_city FROM suppliersWHERE s_name LIKE '%Inc.' OR s_name LIKE '__M%';

在这里插入图片描述

  • 查询customers表中e_mail值为空的客户编号和客户姓名信息。
SELECT c_id,c_name FROM customersWHERE c_email = NULL;SELECT c_id,c_name FROM customersWHERE c_email IS NULL;

在这里插入图片描述
在这里插入图片描述

  • 查询fruits表中s_id为101、102和103,且f_price不小于10元的供应商编号、水果名称和价格的信息。
SELECT s_id,f_name,f_price FROM fruitsWHERE s_id IN(101,102,103) AND f_price>=10;

在这里插入图片描述

  • 以s_id的降序、s_id相同以f_price升序,显示fruits表中s_id为101和102的s_id、f_id和f_price的信息。
SELECT s_id,f_id,f_price FROM fruitsWHERE s_id IN(101,102)ORDER BY s_id DESC,f_price;

在这里插入图片描述

  • 显示fruits表中水果价格最高的3种水果的信息。
SELECT * FROM fruitsORDER BY f_price DESCLIMIT 3;

在这里插入图片描述

三、查询优化与技巧

探讨如何优化查询语句,以及一些实用的查询技巧。

3.1 使用LIMIT子句

  • 使用LIMIT子句,显示customers表中第2-3条记录。
SELECT * FROM customersLIMIT 1,2;

在这里插入图片描述

  • 统计customers表中客户的总人数和有电子邮箱的客户人数。
SELECT COUNT(*) '总人数',COUNT(c_email) '邮箱人数' FROM customers;

在这里插入图片描述

四、高级查询技巧

展示如何使用更复杂的SQL查询语句,包括使用聚合函数、连接查询等。

4.1 使用聚合函数

  • 在fruits表中,查询每个供应商水果价格的平均值、最高值和最低值。
SELECT s_id,AVG(f_price) '平均价格',MAX(f_price) '最高价格',MIN(f_price) '最低价格' FROM fruitsGROUP BY s_id;

在这里插入图片描述

  • 查询orderitems表中每份订单总金额,并按总金额的降序排列。
SELECT o_num,SUM(quantity*item_price) '总金额'  FROM orderitemsGROUP BY o_numORDER BY '总金额' DESC;

在这里插入图片描述

  • 查询orderitems中每个订单中订购数量相同的订单数
SELECT o_num,quantity,count(*) 订单数 FROM orderitemsGROUP BY o_num,quantity;

在这里插入图片描述

  • 显示水果种类大于2种的供应商编号和提供的水果种类数。
SELECT s_id,COUNT(*) 种类数 FROM fruitsGROUP BY s_idHAVING COUNT(*)>2;

在这里插入图片描述

  • 查询s_id为101的供应商名称s_name及所供应水果的f_id、f_name和f_price,查询结果按f_price的降序排列。
SELECT s_name,f_id,f_name,f_price FROM fruits f,suppliers AS sWHERE f.s_id = s.s_id AND s.s_id = 101ORDER BY f_price DESC;

在这里插入图片描述

4.2 连接查询

  • 通过customers和orders表,查询所有客户的订单信息,包括没有下订单的的客户。
SELECT c.c_id,c_name,o_num,o_date FROM customers c LEFT JOIN orders oON c.c_id = o.c_id;

在这里插入图片描述

4.3 使用子查询

  • 查询供应商’ACME’供应的水果编号、名称及价格。
 SELECT f_id,f_name,f_price FROM fruitsWHERE s_id = (SELECT s_id FROM suppliersWHERE s_name='ACME')

在这里插入图片描述

  • 查询供应商’ACME’供应且大于水果平均价格的水果编号、名称及价格。
SELECT f_id,f_name,f_price FROM fruitsWHERE s_id = (SELECT s_id FROM suppliers WHERE s_name='ACME')AND f_price > (SELECT AVG(f_price) FROM fruits);

在这里插入图片描述

五、案例分析

  • 通过具体案例,展示如何综合运用SQL知识解决实际问题。

5.1 客户订单详情查询

  • 查询客户10001所下订单的详细信息。
SELECT * FROM orderitemsWHERE o_num IN (SELECT o_num FROM ordersWHERE c_id=10001);

在这里插入图片描述

  • 查询fruits表中f_price高于供应商101供应的全部水果价格的f_id和f_price信息。
 SELECT f_id,f_price FROM fruitsWHERE f_price >ALL (SELECT f_price FROM fruits WHERE s_id = 101);

在这里插入图片描述

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

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

相关文章

MySQL篇(窗口函数/公用表达式(CTE))(持续更新迭代)

目录 讲解一:窗口函数 一、简介 二、常见操作 1. sumgroup by常规的聚合函数操作 2. sum窗口函数的聚合操作 三、基本语法 1. Function(arg1,..., argn) 1.1. 聚合函数 sum函数:求和 min函数 :最小值 1.2. 排序函数 1.3. 跨行函数…

DeiT(ICML2021):Data-efficient image Transformer,基于新型蒸馏且数据高效的ViT!

Training data-efficient image transformers & distillation through attention:通过注意力训练数据高效的图像转换器和蒸馏 论文地址: https://arxiv.org/abs/2012.12877 代码地址: https://github.com/facebookresearch/deit 这篇论文…

14.第二阶段x86游戏实战2-C++语言开发环境搭建-VisualStudio2017

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

vue-入门速通

setup是最早的生命周期,在vue2里边的data域可以使用this调用setup里面的数据,但是在setup里边不能使用thisvue项目的可执行文件是index,另外运行前端需要npm run vue的三个模块内需要三个不同的结构,里边放置js代码,注…

2024/9/21 leetcode 21.合并两个有序链表 2.两数相加

目录 21.合并两个有序链表 题目描述 题目链接 解题思路与代码 2.两数相加 题目描述 题目链接 解题思路与代码 --------------------------------------------------------------------------- 21.合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返…

CVPT: Cross-Attention help Visual Prompt Tuning adapt visual task

论文汇总 当前的问题 图1:在VTAB-1k基准测试上,使用预训练的ViT-B/16模型,VPT和我们的CVPT之间的性能和Flops比较。我们将提示的数量分别设置为1、10、20、50,100,150,200。 如图1所示,当给出大量提示时,VPT显示了性能的显著下降…

【MySQL 04】数据类型

目录 1.数据类型分类 2.数值类型 2.1 tinyint 类型 2.2 bit类型 2.3 float类型 2.4decimal 3.字符串类型 3.1 char类型 3.2 varchar类型 4.日期和时间类型 6. enum和set类型 6.1.enum和set类型简介: 6.2.enum和set的一般使用方法 6.3.用数字的方式…

如何用AI实现自动更新文章?(全自动更新网站)

AI的诞生确实给我们的生活和工作都带来了很大的改变,从我自身来讲,也渐渐习惯了遇到事情先问问AI,不管是翻译、专业性问题、PPT制作、总结写作这些,确实帮我迅速理清了思路,也可以有很多内容的借鉴。 作为一个业余爱好…

kismet和war driving具体准备(仅供无线安全学习)

war driving准备 一台笔记本 一个最好是双频的网卡,单频搜集信号少 我自己买的是http://e.tb.cn/h.grI4EmkDLOqQXHG?tkKZ5g3RVeH6f 如果经济条件允许可以去买大功率天线(我买的车载的 大概40db这样子 范围广) http://e.tb.cn/h.grCM0CQ6L…

Davinci 大数据可视化分析

Davinci 大数据可视化分析 一、Davinci 架构设计1.1 Davinci定义1.2 Davinci 应用场景 二、Davinci 安装部署2.1 部署规划2.2 前置环境准备2.3 Davinci部署2.3.1 物料准备2.3.2 安装配置 2.4 环境变量配置2.5 初始化数据库2.5.1 创建数据库及用户 2.5.2 建表2.6 初始化配置 三、…

7天速成前端 ------学习日志 (继苍穹外卖之后)

前端速成计划总结: 全26h课程,包含html,css,js,vue3,预计7天内学完。 起始日期:9.16 预计截止:9.22 每日更新,学完为止。 学前计划 课…

使用IDA Pro动态调试Android APP

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 关于 android_server android_server 是 IDA Pro 在 Android 设备上运行的一个调试服务器。 通过在 Android 设备上运行android_server,IDA Pro …

IDEA 2024.3 EAP新特征早览!

0 前言 IntelliJ IDEA 2024.3 第一个 EAP 版本已发布,提前体验 下一个重大版本的一部分改进。 持续关注 EAP 更新,未来几周内将推出更多 IntelliJ IDEA 新功能。尝试这些新功能,分享您的反馈,共同完善 IDE。 1 AI 助手 1.1 内…

计算机毕业设计之:基于微信小程序的电费缴费系统(源码+文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【自动化测试】Appium Server如何安装和Appium Server安装困难的原因和解决方法以及常见的一些安装失败的错误和解决方法

引言 Appium Server安装过程时常出现问题,以下是安装Appium Server过程一些原因、常见错误和解决方法 文章目录 引言一、Appium Server如何安装1.1 Node.js 安装1.2 使用NPM安装Appium1.3 验证Appium安装1.4 运行Appium Server1.5 使用Appium Desktop(可…

Flutter 安装,配置,运行第一个app 1

起因, 目的: flutter, 其实几年前,我就写过。 当时纯属是个人兴趣,随意探索。 当时我也写了几篇笔记: 比如这一篇还有这个 flutter,其实不难,比较繁琐,小的知识点很多. flutter, 又是环境配…

独立站技能树/工具箱1.0 总纲篇丨出海笔记

正所谓要把一件事做到90分很难,但做到60分基本上照着SOP做到位都没问题,如果我们能把每件事都做到60分,那绝对比至少60%的人都强,除非你的对手不讲武德——那就是他很可能看了我这篇文章,不但每方面都超过及格线&#…

【Linux探索学习】第一弹——Linux的基本指令(上)——开启Linux学习第一篇

前言: 在进入Linux学习之前,我们首先要先做好以下两点:1、已经基本掌握C语言或C,2、已经配置好了Linux的环境,做完以上两点后我们就开始Linux的学习,今天我们首先要学习的就是Linux中最基础的操作&#xff…

网络安全-ssrf

目录 一、环境 二、漏洞讲解 三、靶场讲解 四、可利用协议 4.1 dict协议 4.2 file协议 4.3 gopher协议 五、看一道ctf题吧(长亭的比赛) 5.1环境 5.2开始测试 ​编辑 一、环境 pikachu,这里我直接docker拉取的,我只写原…

如何在SpringCloud中使用Consul进行服务发现与配置管理

Spring Cloud是一个用于构建分布式系统的开发工具包。它提供了一系列解决方案,用于在分布式系统中管理和协调服务发现、配置管理、负载均衡、容错机制等功能。Consul是一种用于服务发现、配置管理和分布式一致性的工具,与Spring Cloud可以很好地集成在一…