文章目录

  • 1 数据操作语言:聚合函数
  • SUM函数
  • MAX函数
  • MIN函数
  • AVG函数
  • COUNT函数
  • 2 数据操作语言:分组查询
  • 逐级分组
  • 对 SELECT 子句的要求
  • GROUP CONCAT函数
  • 各种子句的执行顺序
  • 3 数据操作语言:表连接查询
  • 表连接的分类
  • 内连接的简介
  • 表的外连接
  • 4 数据操作语言:子查询
  • WHERE子查询
  • FROM子查询
  • SELECT子查询
  • 单行子查询和多行子查询
  • WHERE子句中的多行子查询
  • EXISTS关键字


1 数据操作语言:聚合函数

什么是聚合函数?

  • 聚合函数在数据的查询分析中,应用十分广泛。聚合函数可以对数据求和、求最大值和最小值、求平均值等等。

SUM函数

  • SUM函数用于求和,只能用于数字类型,字符类型的统计结果为0,日期类型统计结果是毫秒数相加。

mysql 获取查询消耗日志_mysql

MAX函数

  • MAX函数用于获得非空值的最大值。

mysql 获取查询消耗日志_子查询_02

MIN函数

  • MN函数用于获得非空值的最小值。

mysql 获取查询消耗日志_数据库_03

AVG函数

  • AVG函数用于获得非空值的平均值,非数字数据统计结果为0

mysql 获取查询消耗日志_mysql 获取查询消耗日志_04

COUNT函数

  • COUNT(*)用于获得包含空值的记录数,COUNT(列名)用于获得包含非空值的记录数。

mysql 获取查询消耗日志_MySQL_05

2 数据操作语言:分组查询

  • 默认情况下汇总函数是对全表范围内的数据做统计
  • GROUP BY子句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对每个小区域分别进行数据汇总处理

mysql 获取查询消耗日志_数据库_06

逐级分组

  • 数据库支持多列分组条件,执行的时候逐级分组。
  • 查询每个部门里,每种职位的人员数量和平均底薪

mysql 获取查询消耗日志_mysql 获取查询消耗日志_07

对 SELECT 子句的要求

  • 查询语句中如果含有 GROUP BY子句,那么 SELECT-子句中的内容就必须要遵守规定:SELECT子句中可以包括聚合函数,或者 GROUP BY子句的分组列,其余内容均不可以出现在 SELECT-子句中

mysql 获取查询消耗日志_数据库_08

GROUP CONCAT函数

  • GROUP CONCAT函数可以把分组查询中的某个字段拼接成一个字符串
  • 查询每个部门内底薪超过2000元的人数和员工姓名

各种子句的执行顺序

mysql 获取查询消耗日志_mysql_09

3 数据操作语言:表连接查询

从多张表中提取数据:

  • 从多张表中提取数据,必须指定关联的条件。如果不定义关联条件就会出现无条件连接,两张表的数据会交叉连接,产生笛卡尔积。

mysql 获取查询消耗日志_mysql 获取查询消耗日志_10

  • 规定了连接条件的表连接语句,就不会出现笛卡尔积

mysql 获取查询消耗日志_子查询_11

表连接的分类

  • 表连接分为两种:内连接和外连接
  • 内连接是结果集中只保留符合连接条件的记录
  • 外连接是不管符不符合连接条件,记录都要保留在结果集中

内连接的简介

  • 内连接是最常见的一种表连接,用于查询多张关系表符合连接条件的记录。

mysql 获取查询消耗日志_MySQL_12

内连接的多种语法形式

mysql 获取查询消耗日志_数据库_13

mysql 获取查询消耗日志_mysql_14

mysql 获取查询消耗日志_mysql 获取查询消耗日志_15

表的外连接

  • 外连接与内连接的区别在于,除了符合条件的记录之外,结果集中还会保留不符合条件的记录。

左连接和右连接

  • 左外连接就是保留左表所有的记录,与右表做连接。如果右表有符合条件的记录就与左表连接。如果右表没有符合条件的记录,就用NUL与左表连接。右外连接也是如此。

4 数据操作语言:子查询

子查询简介:

  • 子查询是一种查询中嵌套查询的语句
  • 查询底薪超过公司平均底薪的员工的信息

mysql 获取查询消耗日志_子查询_16

子查询的分类

  • 子查询可以写在三个地方:WHERE子句、FROM子句、SELECT子句,但是只有FROM子句子查询是最可取的

WHERE子查询

  • 这种子查询最简单,最容易理解,但是却是效率很低的子查询

mysql 获取查询消耗日志_数据库_17

FROM子查询

  • 这种子查询只会执行一次,所以查询效率很高

mysql 获取查询消耗日志_mysql_18

SELECT子查询

  • 这种子查询每输出一条记录的时候都要执行一次,查询效率很低

mysql 获取查询消耗日志_MySQL_19

单行子查询和多行子查询

  • 单行子查询的结果集只有一条记录,多行子查询结果集有多行记录
  • 多行子查询只能出现在 WHERE子句和FROM子句中

WHERE子句中的多行子查询

  • WHERE子句中,可以使用N、AL、ANY、EXISTS关键字来处理多行表达式结果集的条件判断

EXISTS关键字

  • EXISTS关键字是把原来在子查询之外的条件判断,写到了子查询的里面。

mysql 获取查询消耗日志_mysql 获取查询消耗日志_20