1
智慧物流与供应链基础
1.7.2.2 任务二 SQL查询的应用
任务二 SQL查询的应用

一、SQL数据查询的工具

(一)常用工具:MySQL数据库服务器、Navicat工具

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品。

Navicat是一套可创建多个连接的数据库管理工具,用以方便管理MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB和/或MongoDB等不同类型的数据库,并支持管理某些云数据库,如阿里云、腾讯云。Navicat的功能足以符合专业开发人员的所有需求。Navicat的用户界面(GUI)设计良好,可以安全且简单地创建、组织、访问和共享信息。

小思考:SQL和MySQL有何区别?

(二)MySQL的环境配置

MySQL数据库安装完成之后,接下来就是对其进行配置:

步骤一:选择【查看高级系统设置】选项;

步骤二:单击【环境变量】按钮,找到“path”;

步骤三:将bin文件夹地址存入环境变量“path”中,如图11-2所示;

文档 MySQL安装

图11-2 path环境的配置

步骤四:用简单的客户端DOS窗口进入cmd命令窗口即可连接MySQL,输入“mysql-u账号-p密码”;

步骤五:创建一个需要的数据库,输入“create database数据库名;”;

步骤六:连接创建的数据库,输入“use数据库名;”;

步骤七:导入需要的数据,输入“source数据地址”。

图11-3结果显示,成功创建了一个名为wuliu(物流)的数据库,并成功连接到名为wuliu(物流)的数据库。

图11-3 创建并连接wuliu(物流)数据库

(三)Navicat的使用

通过上述介绍,明确了所有的操作,包括创建数据库、连接数据库、导入数据、创建需要的表文件等都要在cmd命令窗口进行操作,但是没有一个很好的可视化界面,给用户的操作带来了极大的不便,为了解决上述问题,需要用到Navicat软件对MySQL数据库进行可视化。

如图11-4所示,单击【连接】选项,可以选择想要连接的数据库,输入相应的信息,即可成功连接,如图11-5所示。

图11-4 使用Navicat连接本地数据库

图11-5 使用Navicat成功连接本地数据库

图标变亮,说明已经打开了连接,单击相应的表文件即可查询数据,如图11-6所示。

图11-6 使用Navicat进行数据查询

除了可以直接单击查询外,还可以用SQL语句进行查询,如图11-7所示。

图11-7 语句查询的基本步骤

二、智慧物流项目数据分析

利用SQL数据查询可实现物流订单数据分析,包括基础查询、聚合查询、连接查询和嵌套查询。

(一)基础查询语法

常见的SQL基础查询语法如表11-3所示。

表11-3 SQL基础查询语法

1.通过SQL语句选取居住省份为“江苏”的客户

步骤一:进入SQL数据库;

步骤二:在SQL查询编辑框中输入语句“select * from客户表where城市=‘江苏’”。

步骤三:单击【查询】按钮。

查询后的部分客户信息截取如表11-4所示。

表11-4 部分客户信息截取

2.从客户表(Customers)中统计来自每个城市的客户数量

步骤一:进入SQL数据库;

步骤二:在SQL查询编辑框中输入语句“select城市,count(*)as客户量from客户表group by城市”。

步骤三:单击【查询】按钮。客户表中的每个城市的客户数量如表11-5所示。

步骤四:输入语句“select城市,count(*)as客户量from客户表group by城市order by客户量desc”可以将查询结果按降序排列,如表11-6所示。

表11-5 客户数量

表11-6 客户数量降序

步骤五:输入语句“select城市,count(*)as客户量from客户表group by城市order by客户量asc”可以将查询结果按升序排列,如表11-7所示。

步骤六:输入语句“select城市,count(*)as客户量from客户表group by城市order by having客户量>= 3000”可以在上述结果的基础上,设置条件进行筛选,如表11-8所示。

表11-7 客户数量升序

表11-8 客户数量筛选

(二)聚合查询

常见的SQL聚合查询语法如表11-9所示。

表11-9 SQL聚合查询语法

SQL查询中常用的聚合函数有sum、avg、min、max、count五种。

任务:基于产品表查询所有产品的平均价格、最低价格和最高价格。

步骤一:进入SQL数据库;

步骤二:在SQL查询编辑框中输入语句“select avg(价格),min(价格),max(价格)from产品表”,如表11-10所示。

表11-10 聚合查询结果展示

(三)连接查询

常见的SQL连接查询语法如表11-11所示。

表11-11 SQL连接查询语法

1.任务一:获取每个订单是哪些客户订购的,以及具体的订单时间

任务分析:首先,任务中的数据来源为客户表和订单表,而这两个表的关联字段为客户ID,如表11-12所示。

表11-12 客户ID关联展示

步骤一:进入SQL数据库;

步骤二:在SQL查询编辑框中输入语句“select a.订单ID,b.客户姓名,a.订单日期from订单表a inner join客户表b on a.客户ID=b.客户ID”。客户订单详情如表11-13所示。

表11-13 客户订单详情

2.任务二:查看客户表中的所有用户是否都有下单

任务分析:任务中的数据来源为客户表和订单表,而这两个表的关联字段为客户ID。

步骤一:进入SQL数据库;

步骤二:在SQL查询编辑框中输入语句“select a.姓名,b.订单ID,b.订单日期from客户表a left join订单表b on a.客户ID=b.客户ID”,如表11-14所示。

表11-14 客户订单详情

根据结果显示发现,冯晓琴、顾磊没有对应的订单ID和订单日期信息,是由于两者没有购物,在订单表中没有信息与之匹配,但由于采用左连接,就将主表(客户表)中的信息全部显示出来了。

(四)嵌套查询

嵌套查询是一种嵌套在其他SQL查询的where子句中的查询。

任务:查询指定员工发货的客户信息。

任务分析:首先,基于订单表查询员工的发货记录,其次查询记录中的客户信息,如表11-15所示。

表11-15 客户ID与员工ID关联展示

步骤一:进入SQL数据库;

步骤二:在SQL查询编辑框中输入语句“select * from客户表where客户ID in(select客户ID from订单表where员工ID=2)”,如表11-16所示。

表11-16 嵌套查询结果展示