MySQL必知必会6
汇总数据
聚集函数
我们经常需要汇总数据而不是把他检索出来,例如确定表的行数,获得表的行组的和及求表列的最大值或最小值,这些都需要对表中的数据进行汇总,为此,MySQL中提供了聚集函数来进行汇总数据。
以下是5个常用聚集函数:
以下说明各函数的使用:
MySQL还提供了一系列的标准偏差函数,在此不去叙述。
AVG( )函数
AVG( )可以求出特定列的平均值。
这个例子返回prod_price的平均值。函数的参数为列的名字。
AVG( ) 函数也可以求特定行的平均值,这个时候就要使用WHERE子句来过滤数据。
这个例子就是查找vend_id = 1003的行的数据的平均值。
AVG( )函数只能用来求特定列的平均值,且函数参数是列名,如果想查询多个列的平均值,需要使用多个AVG( )函数。
AVG( )函数忽略值为NULL的行。
COUNT( )函数
COUNT( )函数用来计数,可以确定行的数目,或符合条件的行的数目。
COUNT( )函数有两种使用方式:
1)使用COUNT(*)对表中行的数目进行计算。(包含值为NULL的行)
2)使用COUNT(column)对特定列中具有值得行进行计数,忽略值为NULL得行。
例如在customers表中
假设我们使用COUNT(*)和使用COUNT(cust_email),其结果是不同的。
主要是因为COUNT(*)查询表中的行数,而COUNT(column)只查询这一列值不为空的行数。
MAX( )函数
MAX( )返回指定列的最大值,参数要指定列名。
假设我们要查找的最大值有限定条件,我们也可以使用WHERE子句:
这个例子就加了限定条件vend_id = 1003。
MAX( )允许对于非数值数据的列进行检索,例如用于文本数据的时候,返回字典排序的最大值。
MAX( )函数忽略值为NULL的行。
MIN( )函数
MIN( )函数返回特定列的最小值,同MAX( )用法相同。
SUM( )函数
SUM( )函数返回指定列的和。
例如下面这个例子返回20005订单中quantity列的和。
聚集不同值
对于上述5各函数,都可以使用ALL和DISTINCT用以修饰,DISTINCT只对行中的不同的值进行操作。
这个返回列中不同行的平均值。
DISTINCT只能用于修饰列名,如果使用COUNT(DISTINCT *)会显示错误。
组合聚集函数
以上的例子都只涉及一个函数,但在实际操作中,可以包含多个函数。
这个例子通过多个函数,返回了列的行数,最小值,最大值,平均值。
分组数据
数据分组
在上一节中我们已经可以计算出某一个vend_id的产品数量,但如果我们想要得到每一个vend_id的数量该怎么做呢?
这个时候就可以使用分组来进行检索。
创建分组
分组是使用SELECT语句中的GROUP BY 子句来创建的。
来看一个例子以更好的理解GROUP BY 子句:
在这个例子中,通过GROUP BY 子句,把vend_id列分成几个不同的组,分组依据是vend_id,即vend_id中的不同值。
在使用GROUP 子句之前,要知道一些重要的规定。
1)GROUP BY 子句可以包含任意数目的列,即对分组进行嵌套,为数据分组进行更好的控制。
2)如果嵌套分组,数据将在最后的分组上进行汇总,即最后得出的分组时依据最后规定的分组条件。
3)GROUP BY 子句中列出的每一个列都是有效的列或表达式,但不能是聚集函数之类的(还记得聚集函数吗?)如果在SELECT语句中使用表达式,那么在GROUP BY 子句中也要使用表达式,不能使用别名。
4)除聚集计算语句以外,SELECT 中的所有列,都要在GROUP BY 中列出。
5)如果分组中有NULL值,则NUL为一个新的分组,所有NULL为一组。
6)GROUP BY 必须在WHERE字句之后,在ORDER子句之前。
过滤分组
除了能使用GROUP BY子句进行分组之外,MySQL还支持过滤分组,什么是过滤分组呢? 还记得过滤数据吗?过滤数据使用WHERE进行过滤,但分组中WHERE子句并不能完成任务。因为WHERE过滤的是行而不是分组,这个时候我们就要使用HAVING子句来进行过滤分组。
先看一个例子:
这个例子和上一个例子非常相似,只是多了一个过滤分组子句,他过滤了数量小于3的分组,和WHERE子句很相似。
但事实上WHERE 和HAVING 子句有很大的区别,WHERE子句其实是在分组之前进行过滤,而HAVING则是在分组之后进行过滤。因为HAVING子句在GROUP之后,WHERE 在GROUP之前。
那么有没有WHERE和HAVING混用的情况呢?
看一个例子:
这个例子中相较于上一个例子只是多了一个WHERE子句来过滤数据,先是把所有prod_price>=10的先过滤掉在进行分组,这样分组的结果就会变少。
SELECT 子句顺序
下表是SELECT一些子句的用法与顺序。
MySQL必知必会6相关推荐
- MySQL必知必会教程:深入理解MySQL技术内幕
2019独角兽企业重金招聘Python工程师标准>>> MySQL必知必会教程:深入理解MySQL技术内幕 作为最流行的开源数据库软件之一,MySQL数据库软件已经是广为人知了.当前 ...
- mysql必知必会_《MySQL必知必会》学习小结
关于SQL,之前通过sqlzoo的题目,完成了入门,也仅仅是入门而已. 最近都在忙着投简历和找新的数据分析项目做(为了练python和面试的时候有的聊),所以SQL放了一段时间没练.目前的工作用不到, ...
- mysql正则表达式关键字_《MySQL必知必会》正则表达式
<MySQL必知必会>正则表达式 正则表达式 1.1.关键字 REGEXP 正则表达式的使用需要用到关键字 REGEXP . select prod_name from products ...
- 《MySQL必知必会》所有SQL语句图表集合(可作为查询表使用)---已完结
本篇文章是对<MySQL必知必会>所有语句知识点的图表集合,适合快速查询遗忘的SQL语句. 本文的脉络结构,首先先给出<MySQL必知必会>的目录和本书中用到的数据表的UML图 ...
- MYSQL必知必会学习笔记(二)
MYSQL必知必会四-五章--检索.排序 书中部分代码展示: ##第四第五章 SELECT prod_name FROM products; /*从products表中检索一个叫prod_name的列 ...
- mysql必知必会学习笔记(一)
MYSQL必知必会第三章--了解数据库和表 书中部分代码展示: CREATE DATABASE crashcourse; /*创建名为 crashcourse 的新数据库*/SHOW DATABASE ...
- mysql第四章分页显示查询出租房屋信息_MYSQL必知必会读书笔记第四章之检索数据...
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 使用Select语句返回的数据,可能会发现显 ...
- 《MySQL必知必会》[01] 基本查询
<MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...
- mysql必_MySQL必知必会(一)
摘自<MySQL必知必会> 1.1.1 什么是数据库 数据库:保存有组织的数据的容器(通常是一个文件或一组文件) 人们通常用数据库这个术语来代表他们使用的数据库软件.这是不正确的,它是引起 ...
- mysql中用完即删用什么_MySQL使用和操作总结(《MySQL必知必会》读书笔记)
简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机--服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...
最新文章
- python 数组升序_python简单数据清洗和分析
- (原)调用jpeglib对图像进行压缩
- IAR 增加头文件注意事项
- Oracle之数据库设计概述
- 项目周期一般多久_办公家具定制的特殊性是需要一定的制作周期
- (计算机组成原理)第六章总线-第一节:总线概述(概念,分类,系统总线的结构和性能指标)
- MediaCodec 编码时间戳问题
- 【Kafka】kafka console received unknown topic or partition error listOffset request
- ASP.NET的Session会导致的性能问题
- 傅里叶变换matlab学习笔记
- ECSHOP二次开发之给商品增加新字段
- matlab一维数组操作,Matlab创建一维数组的具体操作讲解
- win11怎么进安全模式,win11进入安全模式的方法
- php工程师的学习之道以及需要掌握的知识体系
- 在北大国家发展研究院发言
- Ht7038 三相电能计量芯片 测量6路电流。
- Your Customers Do Not Mean What They Say
- C++~STL容器实例——三国武将阵营管理系统
- python实现 Python蟒蛇绘制(嵩天老师 )
- 如何通过RSS来订阅天气预报
热门文章
- nba2k online名字大全
- 世界名画陈列馆(最少机器人问题和不重复监视问题)
- 苹果cmsv10+2022新版海螺影视主题模板“带后台“M3.1全解密版本+萌芽采集插件
- 2008中国网游老总语录之史玉柱
- 在Oracle中,什么是物理读和逻辑读?
- 黑苹果电源键睡眠关机的分析及解决办法
- 关于enq: US – contention
- zabbix 自带模板监控mysql_zabbix使用自带模板监控mysql
- 分析复联系列电影台词,看看每个英雄说得最多的词是什么
- 小丑改造计划之动态规划