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

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

时间:2024-09-23 17:21:50浏览次数:10  
标签:NULL 查询 name price id 解析 数据库 SELECT

文章目录


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

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

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', '[email protected]'),
(10002, 'Stars', '333 Fromage Lane','Dalian', '116000',  'Zhangbo','[email protected]'),
(10003, 'Netbhood', '1 Sunny Place', 'Qingdao',  '266000','LuoCong', NULL),
(10004, 'JOTO', '829 Riverside Drive', 'Haikou','570000',  'YangShan', '[email protected]');

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 suppliers
  WHERE s_id=101;

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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


SELECT c_id,c_name FROM customers
 WHERE c_email IS NULL;

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

  • 查询fruits表中s_id为101、102和103,且f_price不小于10元的供应商编号、水果名称和价格的信息。
SELECT s_id,f_name,f_price FROM fruits
    WHERE 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 fruits
 WHERE s_id IN(101,102)
 ORDER BY s_id DESC,f_price;

在这里插入图片描述

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

在这里插入图片描述

三、查询优化与技巧

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

3.1 使用LIMIT子句

  • 使用LIMIT子句,显示customers表中第2-3条记录。
SELECT * FROM customers
 LIMIT 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 fruits
    GROUP BY s_id;

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 显示水果种类大于2种的供应商编号和提供的水果种类数。
SELECT s_id,COUNT(*) 种类数 FROM fruits
 GROUP BY s_id
  HAVING 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 s
   WHERE f.s_id = s.s_id AND s.s_id = 101
   ORDER BY f_price DESC;

在这里插入图片描述

4.2 连接查询

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

在这里插入图片描述

4.3 使用子查询

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

在这里插入图片描述

  • 查询供应商’ACME’供应且大于水果平均价格的水果编号、名称及价格。
SELECT f_id,f_name,f_price FROM fruits
  WHERE 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 orderitems
 WHERE o_num IN (SELECT o_num FROM orders
   WHERE c_id=10001);

在这里插入图片描述

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

在这里插入图片描述

标签:NULL,查询,name,price,id,解析,数据库,SELECT
From: https://blog.csdn.net/weixin_49345320/article/details/142452500

相关文章

  • 主从数据库同步配置详解(MySQL/MariaDB)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、环境准备与安装配置本地部署MySQLUbuntu系统:CentOS系统:MariaDBUbuntu系统:CentOS系统:容器部署MySQLMariaDB二、配置主从库的同步设置四、测试与维护总结前言在数据库管理中,......
  • 【艾思科蓝】前端框架巅峰对决:React、Vue与Angular的全面解析与实战指南
    【JPCS独立出版】​第三届能源与动力工程国际学术会议(EPE2024)_艾思科蓝_学术一站式服务平台更多学术会议请看:https://ais.cn/u/nuyAF3 引言在快速发展的前端技术领域,选择合适的框架或库对于项目的成功至关重要。React、Vue和Angular作为当前最流行的三大前端框架/库,各自......
  • PARTIV-Oracle数据库存储结构-物理存储结构
    11.物理存储结构11.1.物理存储结构简介11.1.1.存储数据库文件的机制11.1.2.Oracle自动存储管理(OracleASM)11.1.3.Oracle管理文件和用户管理文件11.2.数据文件简介11.2.1.数据文件用途11.2.2.永久数据文件和临时数据文件11.2.3.联机和离线数据文件11.2.4.数据文......
  • wincc利用VBS脚本读取SQL数据库中的数值
    一、建立wincc项目变量建立的变量可以是内部变量,目的是为了用VBS脚本读写变量,跟SQL数据库里的变量建立链接。二、创建SQL数据库1、单击connect(连接)按钮,注意服务器的名称必须是XXX\WINCC的格式;这一步注意要看电脑里有没有安装数据库管理软件,没有的话需要安装一下,WINCC默认会......
  • LLM大模型: Denoising Diffusion Probabilistic Models 原理解析与核心代码
      根据文本生成图片是AI的核心应用之一,2020年后主流的生成方式都是基于DenoisingDiffusionProbabilisticModels原理的,逐渐替代了之前使用GAN的方式生成图片!那么DDPM为啥能取代GAN了?其优势在哪?或者说GAN的劣势在哪?  1、CLIP模型都知道吧?text和image都通过各自的enco......
  • 数据库范式简易总结
    这里只对第一范式,第二范式,第三范式与BCNF范式做了相应的总结。(用于自己理解)1NF第一范式:属性(原子值)不可分割,即每个字段的值必须是单一的、不可再分的数据项。例如:表中的有animal(动物)列,存放数据为{老虎,猫科,肉食}则这个列里的数据可拆分出来,即无法满足第一范式不可再分的数据项......
  • DM(达梦数据库基本操作)
    1、创建用户XTF密码为XTF123321SQL>CREATEUSERXTFIDENTIFIEDBY"XTF123321";2、权限(1)--给用户建表权限SQL>GRANTCREATETABLEtoXTF;总共1个语句正依次执行...[执行语句1]:GRANTCREATETABLEtoXTF;执行成功,执行耗时7毫秒.执行号:10322影响了0条记......
  • SQLSyntaxErrorException: Unknown database ‘server‘ ---数据库相关报错解决方案
    java.sql.SQLSyntaxErrorException:Unknowndatabase'server'这个错误通常表示你尝试连接的数据库名称(在这个例子中是server)在你的数据库服务器上不存在。这可能是由于以下几种原因之一:数据库名称拼写错误:检查你在连接字符串中指定的数据库名称是否正确,确保没有拼写错......
  • 访问WordPress网站提示“建立数据库连接时出错”或者“Error establishing a database
    当访问WordPress网站时出现“建立数据库连接时出错”或“Errorestablishingadatabaseconnection”的提示时,这通常表示WordPress无法成功连接到数据库。以下是几个可能的原因及解决方法:原因数据库连接信息错误:WordPress配置文件中的数据库连接信息(如用户名、密码、主机名)不......
  • dede数据库连接异常的解决过程
    当遇到DedeCMS(织梦CMS)数据库连接异常的情况时,可以按照以下步骤进行排查和解决:检查数据库配置首先确保数据库配置文件data/common.inc.php中的数据库连接信息(如数据库地址、用户名、密码)是正确的。如果不确定,可以通过FTP工具下载该文件并用文本编辑器打开查看或修改。清理......