当前课程知识点:数据库技术应用 >  学习情境三、银行存取款机数据操纵 >  模块5、银行存取款机分类汇总与排序 >  3.5分类汇总与排序

返回《数据库技术应用》慕课在线视频课程列表

3.5分类汇总与排序在线视频

下一节:任务实施:银行存取款机分类汇总与排序

返回《数据库技术应用》慕课在线视频列表

3.5分类汇总与排序课程教案、知识点、字幕

大家好

欢迎来到数据库技术应用在线开放课程

今天的任务是BankDB数据库分类汇总与排序

我们要完成三个子任务

第一按照cardinfo表余额大小升序排列

第二查询每个客户的银行卡个数

第三查询银行卡超过一张的客户的姓名

那么本节课的目标就是通过掌握分类汇总的方法

掌握排序的方法去实现我们前面的子任务

我们一起进入知识技能学习

首先我们来看第一个问题排序

说到排序大家并不陌生

说到排序大家肯定想到的不就两种情况嘛

要么是升序要么是降序

升序就是从小到大的排列

降序就是从大到小的排列

那我们在查询的过程当中也可以控制它的排列顺序

怎么来控制

通过一个子句来控制叫order by后面跟上列名

那你如果控制排序方式的话

可以借助ASC升序

或者是DESC降序来表示你现在的一个需求

第二个叫分组 什么叫分组

就是用于根据字段进行的分组

让他的语法格式是group by后面加上一列名

我们就可以达到分组这样一个目标

分组经常和聚合函数一起使用

比如说我想查询一下

每个学生选了几门课

每门课有多少个学生选

在这一个班级当中

每一种政治面貌有多少人

每一种民族又有多少人

每一种性别

又有多少人

这些问题实际上都用到了分组

我来举个例子

比如说我想知道男女生各有多少人

实际上换一种说法

就是每一种性别有多少人

那大家实际生活当中怎么数

是不是把男生放在一堆女生放在一堆

然后我在数个数

那所谓的男生放在一堆女生放在一堆

实际上就是按照性别进行了分组

同样的道理

比如说我想看每种政治面貌有多少人

那我就可以把团员放在一堆

党员放在一堆群众放在一堆

那么每种政治面貌就出来了

实际上按政治面貌进行了分组

那刚才我说了

我想查询一下每个学生选了多少门课

每个学生选了多少门课

那我按学生分组呗

那学生的什么分组

肯定是按学生的学号进行分组

那每门课有多少人选

我们已经找到规律了是什么

按照课号进行分组

那刚才我说的这些描述

都用到了一个字叫每

所以分组看起来有一点难度

但是我们可以找到规律

以后再碰到问题解决的时候

只要想到每个各个

我们首先想到能不能用分组来解决

如果能我们就用group by

好那分组之后可能还有需求

比如说我想查一下

男生超过三人的学生这个班级的情况

我想查一下选课门数超过五人的这个课程的情况

在分组之后又有一个附加条件

那是涉及附加条件的时候

我们就用到一个子句叫having后面跟上条件

那说到条件这个词

前面我们加where子句当中也用到了条件

他们俩有什么区别

Where子句里面所涉及到的条件是基础条件

而having这个条件的是附加条件

再简单来说

where子句是配合在select from 后面来用的

而having子句是配合在group by 后面来用的

也就是说你要用having那前面一定是有group by的

所以大家要注意having是跟group by一起使用的

好我们来看第一个子任务

按照cardinfo表余额大小升序排列

实际上他就是cardinfo表当中所有信息的一个查询

那我大家都会做select * from cardinfo

但是在这个基础上加了一个问题

叫余额大小升序排列

那么我们刚刚学过了排序的子句

叫order by余额是balance

balance后面

他说是升序排列

升序我的关键字是ASC

但是大家来看我的代码并没有ASC

那大家猜到了什么情况

是默认情况下他就是升序

所以我把ASC省略掉了

那相反如果这道问题变成是降序排列

那么order by balance后面就得加上DESC这个关键字

他是不能省的

因为默认情况下就是升序

所以如果你要解决排序的问题是比较简单的

接下来我们看第二个任务

查询每个客户的银行卡个数

拿到这个问题的时候

想想我刚才总结的经验

我说看到每个

看到各个我们首先想到的是分组

那怎么分组

一个group by就分组了

group by后面要加的是分组字段

那怎么来选择这个分组字段

我们需要看每个各个后面说的是什么

对于这个问题来说

每个后面说的是客户

那对于客户来说唯一标识是什么 是customerID

所以group by后面我就加customerID

那让查的是什么银行卡个数

而且是每个客户的银行卡个数

那我是不是需要把客户的ID显示出来

所以select后面先是customerID逗号

这里面是银行卡个数 个数

前面我们已经做了很多问题了

涉及到数数12345数数

我们想到一个聚合函数叫count

括号参数是什么

对银行卡数数参数就是cardID

from哪个表

Cardinfo表group by customerID

那这个问题也解决了

所以当题目当中真的出现每个个个的时候

其实对我们来说难度就已经降低了

但是如果说没有个个

没有每个

那我们就需要分析一下

我们接下来看第三个子任务

查询银行卡超过一张的客户姓名

这里面又加大了难度

什么难度统计完还不行

还要求你超过一张

也就是说

在分组的情况下又加了一个附加条件

那么这个问题我选择加一个having子句

所以代码变成了

select customerID count cardID,

from cardifo group by customerID

然后 having count cardID>1

那如果差超过两张

就是大于二

我把这个问题解决了

但是大家有没有发现问题

如果按照这样一个查询得到的结果是什么

查询的是每个客户的银行卡个数

但是这个客户将来在显示的时候

显示的可不是客户名字

显示的是客户的编号

那怎么办客户名字在哪

客户名字是在我们的userinfo里的

所以说如果你要实现第三个子任务

其实这样做还是不行的

我们需要再把userinfo表加进来

也就是from后面是cardinfo逗号userinfo

然后还得加一个

where条件cardinfo和我们的userinfo要做一个链接

找到公共字段做连接啊

然后select后面

你才可以加你的username

也就是我们的客户姓名

叫什么customer那么还是username

那么大家下去可以核实一下

那么需要用到了我们的多表连接查询

所以要完成第三个子任务

真的要实现客户姓名的查询

那么大家需要我们用到连接查询

大家下去可以在我们的环境当中进行一个测试

好今天的拓展任务是员工管理数据库表的分类汇总练习

感谢大家的聆听

数据库技术应用课程列表:

学习情境一、银行存取款机数据库创建与管理

-模块1、数据库的基础知识

--1.1.1数据库设计-数据库的基本概念

--1.1.2数据管理的发展和数据库体系结构

--数据库的基础知识

-模块2、MYSQL介绍与安装

--MYSQL介绍与安装

--MYSQL介绍与安装

-模块3、银行存取款机数据库的创建与维护

--1.3数据库的创建与维护

--银行存取款机数据库的创建与维护

-模块4、银行存取款机数据库的设计

--1.4.1数据库的概念模型设计

--1.4.2数据库的数据模型设计

--1.4.3数据库的关系规范化

--银行存取款机数据库的设计

学习情境二、创建和管理银行存取款机数据表

-模块1、表的创建

--2.1表的创建

--任务实施:银行存取款机表的创建

--表的创建

-模块2、表的管理

--2.2表的管理

--任务实施:银行存取款机表的管理

--表的管理

-模块3、索引

--2.3索引

--任务实施:银行存取款机索引

--索引

-实践小课堂:宠物电商管理平台数据库和表的创建

--实践小课堂:宠物电商管理平台数据库和表的创建

学习情境三、银行存取款机数据操纵

-模块1、银行存取款机数据插入、修改和删除

--3.1.1数据插入

--任务实施:银行存取款机数据插入

--3.1.2数据修改和删除

--任务实施:银行存取款机数据修改和删除

--实践小课堂:宠物电商管理平台数据插入

--银行存取款机数据插入、修改和删除

-模块2、银行存取款机简单查询

--3.2.1简单查询

--任务实施:银行存取款机简单查询

--实践小课堂:宠物电商管理平台简单查询

--3.2.2统计查询

--任务实施:银行存取款机统计查询

--实践小课堂:宠物电商管理平台条件查询

--银行存取款机简单查询和统计查询

-模块3、银行存取款机连接查询

--3.3连接查询

--任务实施:银行存取款机连接查询

--银行存取款机连接查询

-模块4、银行存取款机子查询

--3.4子查询

--任务实施:银行存取款机子查询

--实践小课堂:宠物电商管理平台多表查询

--银行存取款机子查询

-模块5、银行存取款机分类汇总与排序

--3.5分类汇总与排序

--任务实施:银行存取款机分类汇总与排序

--实践小课堂:宠物电商管理平台分类汇总和排序

--银行存取款机分类汇总与排序

-模块6、银行存取款机视图

--3.6.1视图的创建与管理

--任务实施:银行存取款机视图的创建与管理

--3.6.2视图的更新

--任务实施:银行存取款机视图的更新

--实践小课堂:宠物电商管理平台视图

--银行存取款机视图

学习情境四、银行存取款机数据库编程

-模块1、银行存取款机存储过程

--4.1.1创建和执行存储过程

--任务实施:银行存取款机创建和执行存储过程

--实践小课堂:宠物电商管理平台存储过程

--4.1.2事务

--任务实施:银行存取款机事务

--实践小课堂:宠物电商管理平台存储函数

--银行存取款机存储过程

-模块2、银行存取款机触发器

--4.2.1INSERT触发器

--任务实施:银行存取款机INSERT触发器

--实践小课堂:宠物电商管理平台INSERT触发器

--4.2.2UPDATE触发器

--任务实施:银行存取款机UPDATE触发器

--实践小课堂:宠物电商管理平台UPDATE触发器

--4.2.3DELETE触发器

--任务实施:银行存取款机DELETE触发器

--实践小课堂:宠物电商管理平台DELETE触发器

--银行存取款机触发器

教学情境五、银行存取款机数据库安全性

-模块1、MYSQL用户管理

--模块1、MYSQL用户管理

--MYSQL用户管理

-模块2、MYSQL权限管理

--模块2、MYSQL权限管理

--MYSQL权限管理

-模块3、MYSQL数据库的锁机制

--MYSQL数据库的锁机制

--MYSQL数据库的锁机制

-模块4、MYSQL备份和恢复

--模块4、MYSQL备份和恢复

--MYSQL备份和恢复

3.5分类汇总与排序笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。