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

文章目录

  • 一、数据库结构与数据源插入
    • 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.xdnf.cn/news/150223.html

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

相关文章

无法将“allure”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方法-allure的安装配置全过程

新手在使用allure之前,以为只是pip install allure-pytest就可以,no!!! 其实,还需要下载allure,allure的具体步骤如下: 1.下载 allure。 allure的下载地址:Central Re…

828华为云征文 | 使用Linux管理面板1Panel管理华为云Flexus云服务器X实例

828华为云征文 | 使用Linux管理面板1Panel管理华为云Flexus云服务器X实例 一、华为云Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点 二、1Panel介绍2.1 1Panel 简介2.2 1Panel 特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、购…

报表做着太费劲?为你介绍四款好用的免费报表工具

1. 山海鲸可视化 介绍: 山海鲸可视化是一款免费的国产可视化报表软件,与许多其他宣传免费的软件不同,山海鲸的报表功能完全免费并且没有任何限制,就连网站管理后台这个功能也是免费的。同时山海鲸可视化还提供了种类丰富的可视化…

「数组」离散化 / Luogu B3694(C++)

目录 概述 思路 算法过程 复杂度 Code 概述 Luogu B3694: 给定一个长度为 n 的数列 aa。定义 rank(i) 表示数列 a 中比 ai 小的不同数字个数再加一。 对 1≤i≤n,现在请你求出所有的 rank(i)。 输出格式 对每组数据,输出一行 n 个整数&a…

BUUCTF [SCTF2019]电单车

使用audacity打开,发现是一段PT2242 信号 PT2242信号 有长有短,短的为0,长的为1化出来 这应该是截获电动车钥匙发射出的锁车信号 0 01110100101010100110 0010 0前四位为同步码0 。。。中间这20位为01110100101010100110为地址码0010为功…

关于预处理的一系列问题

1. 预定义符号 C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。 2. #define定义常量 #define name stuff 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反…

值得入手的宠物空气净化器——希喂、352、IAM三款产品真实测评

在快节奏的现代生活中,养宠成为很多人的精神寄托,回到家中与猫咪玩耍是一天中最放松的时刻。但这美好的生活也存在着一些烦恼——宠物毛发清理与异味。宠物空气净化器作为一种新兴的清理工具,以其高效、全面的特点,受到了越来越多…

PMP--二模--解题--91-100

文章目录 14.敏捷91、 [单选] 在敏捷团队完成三次迭代之后,项目经理确定团队在这三次迭代中的平均速度是30个故事点。还有292个故事点来完成项目的剩余部分。团队需要多少次额外的迭代才能完成项目? 9.资源管理92、 [单选] 项目经理前往另一个国家执行最…

Go基础学习04-变量重声明;类型转换;类型断言;Unicode代码点;类型别名;潜在类型

目录 变量重声明 类型断言 类型转换 类型转换注意事项 Unicode代码点 类型别名、潜在类型 类型别名的意义 变量重声明 编写代码: package mainimport "fmt"var container []string{"Beijing", "Shanghai"}func main() {fmt.Pr…

关于Python升级以后脚本不能运行的问题

近日将Python从3.11升级到了3.12,然后把几个包例如numpy等也通过pip给upgrade了一下,结果原来运行的好好的脚本,都运行不了了,还出现各种报错。怀疑是自己升级了环境导致的,因此通过搜索引擎检索了一下,有这…

两个月学习大语言模型(LLM)的详细计划,保姆级教程非常详细收藏我这一篇就够了!

随着人工智能技术的发展,大语言模型(Large Language Models, LLMs)因其在自然语言处理、机器翻译、文本生成等领域的广泛应用而受到越来越多的关注。对于希望掌握这一前沿技术的朋友来说,制定一个系统的学习计划至关重要。本计划旨…

ATTCK实战系列-Vulnstack靶场内网域渗透(二)

ATT&CK实战系列-Vulnstack靶场内网域渗透(二) 前言一、环境搭建1.1 靶场下载地址1.2 环境配置1.2.1 DC域控服务器:1.2.2 WEB服务器:1.2.3 PC域内主机:1.2.4 攻击者kali: 1.3 靶场拓扑图 二、外网渗透2.…

Ubuntu磁盘不足扩容

1.问题 Ubuntu磁盘不足扩容 2.解决方法 安装一下 sudo apt-get install gpartedsudo gparted

Selenium 自动化测试:如何搭建自动化测试环境?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差…

mybaits获取sqlsession对象后自动开启事务,增删改要记得提交事务!

mybaits中在使用 SQLSession 对象进行数据库操作时,需要注意事务的处理。 以下是关于这个问题的详细说明: 一、SQLSession 与事务的关系 SQLSession 是 MyBatis 框架中用于执行 SQL 语句和与数据库交互的关键对象。当获取 SQLSession 对象后&#xff…

2024年主流前端框架的比较和选择指南

在选择前端框架时,开发者通常会考虑多个因素,包括框架的功能、性能、易用性、社区支持和学习曲线等。以下是一些主流前端框架的比较和选择指南。 1. 主流前端框架简介 React 优点: 组件化开发,易于复用和维护。虚拟DOM提高了性能。强大的生…

每日算法1(快慢指针)

通过一道题来了解快慢指针 这是一道力扣的算法题,首先来读题,是删除链表的中间元素,先来分析一下题,链表一共有三种可能,第一种是空链表,第二种链表的个数是偶数,第三种是链表的个数是奇数&…

【ARM】MDK-当选择AC5时每次点击build都会全编译

1、 文档目标 解决MDK中选择AC5时每次点击build都会全编译 2、 问题场景 在MDK中点击build时,正常会只进行增量编译,但目前每次点击的时候都会全编译。 3、软硬件环境 1 软件版本:Keil MDK 5.38a 2 电脑环境:Window 10 4、解决…

【计算机视觉】YoloV8-训练与测试教程

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! 制作数据集 Labelme 数据集 数据集选用自己标注的,可参考以下&#xff1a…

企业网盘能作为FTP替代产品吗?

在数字化办公日益普及的今天,企业对于文件存储、传输和协作的需求不断增长。传统的FTP协议虽然在文件传输领域有着不可替代的地位,但其在用户体验、安全性、协作功能等方面逐渐显得力不从心。企业网盘作为一种新兴的数据管理解决方案,正逐渐成…