MySQL学习笔记:第五天(一)高级查询

分组函数

分组函数常用函数

分组函数常用到以下五个函数:

  • MIN:最小值
  • MAX:最大值
  • SUM:总和
  • AVG:平均值
  • COUNT:返回满足条件的每组记录条数

注意:

  • MIN和MAX可以用于任何数据类型
  • SUM和AVG函数都是只能够对数值类型的列或表达式操作

组函数中DISTINCT

DISTINCT会消除重复记录后再使用组函数

分组函数中空值处理

除了COUNT(*)之外,其它所有分组函数都会忽略列中的空值,然后再进行计算。

在分组函数中使用IFNULL函数

IFNULL 函数可以使分组函数强制包含含有空值的记录

创建数据组

通过 GROUP BY 子句可将表中满足WHERE条件的记录按照指定的列划分成若干个小组

其中GROUP BY子句指定要分组的列

在SELECT列表中除了分组函数那些项,所有列都必须包含在GROUP BY 子句中。但是,GROUP BY 所指定的列并不是必须出现在SELECT 列表中。

排除组结果

  • 不能在 WHERE子句中限制组
  • 可以通过 HAVING 子句限制组

使用 HAVING 子句限制组

  • 记录已经分组.
  • 使用过 组函数.
  • 与 HAVING 子句匹配的结果才输出

SELECT语句执行过程

SELECT语句执行过程:

  • 1.通过FROM子句中找到需要查询的表;
  • 2.通过WHERE子句进行非分组函数筛选判断;
  • 3.通过GROUP BY子句完成分组操作;
  • 4.通过HAVING子句完成组函数筛选判断;
  • 5.通过SELECT子句选择显示的列或表达式及组函数;
  • 6.通过ORDER BY子句进行排序操作。

子查询

括号内的查询叫做子查询,也叫内部查询,先于主查询执行。

子查询的结果被主查询(外部查询)使用 expr operator包括比较运算符。

  • 单行运算符:>、=、>=、<、<>、<=
  • 多行运算符: IN、ANY、ALL

子查询可以嵌于以下SQL子句中:

  • WHERE子句
  • HAVING子句
  • FROM子句

多行子查询

子查询返回记录的条数 可以是一条或多条

和多行子查询进行比较时,需要使用多行操作符,多行操作符包括:

  • IN
  • ANY
  • ALL

IN操作符和以前介绍的功能一致,判断是否与子查询的任意一个返回值相同。

ANY的使用

ANY:表示和子查询的任意一行结果进行比较,有一个满足条件即可。

  • < ANY:表示小于子查询结果集中的任意一个,即小于最大值就可以。
  • > ANY:表示大于子查询结果集中的任意一个,即大于最小值就可以。
  • = ANY:表示等于子查询结果中的任意一个,即等于谁都可以,相当于IN

ALL的使用

ALL:表示和子查询的所有行结果进行比较,每一行必须都满足条件。

  • < ALL:表示小于子查询结果集中的所有行,即小于最小值
  • > ALL:表示大于子查询结果集中的所有行,即大于最大值
  • = ALL :表示等于子查询结果集中的所有行,即等于所有值,通常无意义

子查询中的空值

如果子查询的结果中有一条空值,这条空值导致主查询没有记录返回

你可能感兴趣的:(mysql,数据库,database)