当前课程知识点:数据库技术应用 > 学习情境三、银行存取款机数据操纵 > 模块2、银行存取款机简单查询 > 3.2.2统计查询
大家好欢迎来到数据库技术应用在线开放课程
今天我们的任务是BankDB数据库的统计查询
我们把它分成五个子任务
第一个假定存款年利率是3.6%
查询账户到期后的利息额
第二个统计userinfo表当中的用户个数
第三个查询cardinfo表当中最高的帐户余额
第四个查询cardinfo表当中最低的帐户余额
第五个查询transinfo表当中银行卡的支取总额
那我们来看一下本节课的目标就是
通过这五个任务让大家学会掌握聚合函数的用法
那我们一起进入知识技能环节
第一个聚合函数
也就是说要完成我们的统计查询
要借助的就是聚合函数
那在mysql当中select语句
后面可以包含聚合函数
我们常用的聚合函数有下面几个
大家可以看一下这个表
第一个叫count
求组当中的项数返回的是整形
也就是简单来说统计个数的
第二个max求的是最大值
第三个叫min求的是最小值
第四个是SUM求的是所有值的和
第五个是AVG求的是平均数
这是五个函数
那么说到函数根据
大家以前所学的程序设计的思想
只要说到函数
实际上我们关心的就这么几个问题
一个就是函数的名代表了它的作用
第二个函数他都有返回值
我们需要关心
比如说count,max, min,sum ,avg
它的返回值类型都是什么样的类型
我们刚才提到了count返回整形
然后sum 、avg,max和Min返回的是数值型
有可能是浮点型有可能是整形
那么第三个问题对于函数来说
我们还关心这个函数的参数
也就是他有几个参数
参数的类型是什么
那么同样的道理
我们今天在用这些聚合函数的时候
大家也需要去关心这几个方面的内容
那我们来看第一个任务
假定存款年利率是3.6%
让我们查询的是帐户到期后的
利息金额是多少
这是我们在银行系统当中
经常用到的这样一个应用
那怎么来做这个查询
他竟然是个查询
必然要用到我们前面所说的
查询的基本语法select from
如果带条件加where
不带条件select from 就解决了
那在这个问题当中有没有条件
我们来看这个问题并没有条件
所以我们就直接用select from就可以完成
那根据我们前面说的
查什么select后面加什么
那我看要查什么
查询账户到期后的利息额
那我需要把银行卡号显示出来
也需要把利息显示出来
那大家都知道银行卡号
是在我们cardinfo表当中已经存在的一个字段
直接select后面加上cardID银行卡号
起个别名逗号隔开就可以了
那后面这个利息怎么来处理
利息在我们的cardinfo表当中并没用
但是前面给大家说了
查询的时候select后面
加的是我们要查询的内容
那么这个内容可以是现有的字段
也可以是计算得到的列
也可以是通过函数计算得到的列
那么这个问题利息怎么求
用我们的balance乘以三点六
除以一百就可以得到我们的利息
那么as利息给他起个别名
那么我们第二个利息额也出来了
那from哪个表 cardinfo 表
也就是说
大家看到的这个代码
就可以实现我们的第一个任务
我们来看第二个
第二个字任务是统计userinfo表当中的用户个数
userinfo表是我们的一个用户信息表
那里面有多少用户
对于我们现在的测试系统来说
里面用户数很少
但是对于银行的真正的自动存取款机系统来说
它的用户量是很大的
我们不能用数一个一个的手指头去数
是数不过来的
所以这个问题我们一样用查询来解决
那用查询来解决
我们前面在知识储备的时候看到
可以有很多函数借给我们用
那这里面我们可以借助哪个函数
大家想一下
统计个数我们可以用到count函数
count函数它返回的是一个整数
就是我们的个数
那括号里参数是什么
我们统计的是userinfo表当中所有用户的个数
那count后面括号里的参数
我们就可以写一个* 写个*
那么在计算这个个数的时候
系统会自动通过组建去识别
它有多少条记录
就代表有多少个用户
那么后面如果大家需要的话
可以给它起个别名叫用户个数
这样在显示结果显示的时候
这一列上面是有个名称的
不至于用户看到后不知道这85是什么
不知道这100是什么意思
如果加上用户个数
用户就很清楚说
查询出来这个结果是用户的个数
那from什么
userinfo表
select from 两个子句就把这个任务解决了
接下来我们看第三个子任务
查询cardinfo表当中最高的帐户余额
最高的帐户余额一说最高
我们首先还是在脑子里想一想
前面说到的那些函数有没有可以借用的
最高我们可以借用max这个函数
max括号里这个参数写什么
他说账户余额最高的那不能加星号了
一定要对帐户余额求最大值
那么账户余额是balance
所以就变成了max括号balance
那我们的查询就出来了
Select max 括号 balance
最高余额给他起个别名
from cardinfo也是两条子句
就可以解决求最高的问题
第四个子任务查询cardinfo表当中
最低的账户余额
这个任务看起来是个新任务
但实际上和我们的子任务三很相似
刚才是求最高的账户余额
而现在求的是最低的帐户余额
那实际上我们只要在语句当中
替换一个函数就可以了
刚刚用到的是max求最大
而现在最低我们当然要用MIN这个函数
MIN括号balance最低余额
那么他的语气就变成了
select min balance 最低余额
from cardinfo这是第四个子任务
接下来我们看第五个子任务
查询transinfo表当中银行卡的支取总额
transinfo是我们的交易信息表
这里面涉及到了一个支取总额
什么是总额肯定是总数是吧
总数的话我们用到一个函数sum求和的函数
那对谁求和
支取的总额当然对我们的交易金额来求和
交易金额在字段当中是transMoney
那就是sum 括号 transMoney
select后面要加的内容就已经确定了
那from哪个表
Transinfo表
这个问题当中和前面的问题有个差别
他指定了这个银行卡号
也就是说他是有条件的
除了这个条件以外
里面还说了两个字叫支取
换句话来说
在我们建的交易信息表当中
transMoney它指的是交易金额
有可能交易类型是支取
有可能交易类型是存入
而我们这道题要查的是支取
所以支取应该作为另外一个条件
所以这道题要解决需要用到where子句
那where子句当中
第一个条件就是cardID等于
你给定的这个银行卡号
第二个条件就是我们的transType
也就是交易类型应该是支取
那同样的问题
这两个条件是什么关系
是同时满足还是或者
很显然他是必须同时满足的
那么竟然同时满足的话
那么我们需要中间用一个and进行连接
那么我们子任务五来实现的代码就变成了
select from where
大家下去的时候可以测试一下
今天的拓展任务是员工管理数据库数据的查询
感谢大家的聆听
-模块1、数据库的基础知识
--数据库的基础知识
-模块2、MYSQL介绍与安装
--MYSQL介绍与安装
-模块3、银行存取款机数据库的创建与维护
--银行存取款机数据库的创建与维护
-模块4、银行存取款机数据库的设计
--银行存取款机数据库的设计
-模块1、表的创建
--2.1表的创建
--表的创建
-模块2、表的管理
--2.2表的管理
--表的管理
-模块3、索引
--2.3索引
--索引
-实践小课堂:宠物电商管理平台数据库和表的创建
-模块1、银行存取款机数据插入、修改和删除
--银行存取款机数据插入、修改和删除
-模块2、银行存取款机简单查询
--银行存取款机简单查询和统计查询
-模块3、银行存取款机连接查询
--3.3连接查询
--银行存取款机连接查询
-模块4、银行存取款机子查询
--3.4子查询
--银行存取款机子查询
-模块5、银行存取款机分类汇总与排序
--银行存取款机分类汇总与排序
-模块6、银行存取款机视图
--银行存取款机视图
-模块1、银行存取款机存储过程
--4.1.2事务
--银行存取款机存储过程
-模块2、银行存取款机触发器
--银行存取款机触发器
-模块1、MYSQL用户管理
--MYSQL用户管理
-模块2、MYSQL权限管理
--MYSQL权限管理
-模块3、MYSQL数据库的锁机制
--MYSQL数据库的锁机制
-模块4、MYSQL备份和恢复
--MYSQL备份和恢复