文章目录
- 1 数据操作语言:聚合函数
- SUM函数
- MAX函数
- MIN函数
- AVG函数
- COUNT函数
- 2 数据操作语言:分组查询
- 逐级分组
- 对 SELECT 子句的要求
- GROUP CONCAT函数
- 各种子句的执行顺序
- 3 数据操作语言:表连接查询
- 表连接的分类
- 内连接的简介
- 表的外连接
- 4 数据操作语言:子查询
- WHERE子查询
- FROM子查询
- SELECT子查询
- 单行子查询和多行子查询
- WHERE子句中的多行子查询
- EXISTS关键字
1 数据操作语言:聚合函数
什么是聚合函数?
- 聚合函数在数据的查询分析中,应用十分广泛。聚合函数可以对数据求和、求最大值和最小值、求平均值等等。
SUM函数
- SUM函数用于求和,只能用于数字类型,字符类型的统计结果为0,日期类型统计结果是毫秒数相加。
MAX函数
- MAX函数用于获得非空值的最大值。
MIN函数
- MN函数用于获得非空值的最小值。
AVG函数
- AVG函数用于获得非空值的平均值,非数字数据统计结果为0
COUNT函数
- COUNT(*)用于获得包含空值的记录数,COUNT(列名)用于获得包含非空值的记录数。
2 数据操作语言:分组查询
- 默认情况下汇总函数是对全表范围内的数据做统计
- GROUP BY子句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对每个小区域分别进行数据汇总处理
逐级分组
- 数据库支持多列分组条件,执行的时候逐级分组。
- 查询每个部门里,每种职位的人员数量和平均底薪
对 SELECT 子句的要求
- 查询语句中如果含有 GROUP BY子句,那么 SELECT-子句中的内容就必须要遵守规定:SELECT子句中可以包括聚合函数,或者 GROUP BY子句的分组列,其余内容均不可以出现在 SELECT-子句中
GROUP CONCAT函数
- GROUP CONCAT函数可以把分组查询中的某个字段拼接成一个字符串
- 查询每个部门内底薪超过2000元的人数和员工姓名
各种子句的执行顺序
3 数据操作语言:表连接查询
从多张表中提取数据:
- 从多张表中提取数据,必须指定关联的条件。如果不定义关联条件就会出现无条件连接,两张表的数据会交叉连接,产生笛卡尔积。
- 规定了连接条件的表连接语句,就不会出现笛卡尔积
表连接的分类
- 表连接分为两种:内连接和外连接
- 内连接是结果集中只保留符合连接条件的记录
- 外连接是不管符不符合连接条件,记录都要保留在结果集中
内连接的简介
- 内连接是最常见的一种表连接,用于查询多张关系表符合连接条件的记录。
内连接的多种语法形式
表的外连接
- 外连接与内连接的区别在于,除了符合条件的记录之外,结果集中还会保留不符合条件的记录。
左连接和右连接
- 左外连接就是保留左表所有的记录,与右表做连接。如果右表有符合条件的记录就与左表连接。如果右表没有符合条件的记录,就用NUL与左表连接。右外连接也是如此。
4 数据操作语言:子查询
子查询简介:
- 子查询是一种查询中嵌套查询的语句
- 查询底薪超过公司平均底薪的员工的信息
子查询的分类
- 子查询可以写在三个地方:WHERE子句、FROM子句、SELECT子句,但是只有FROM子句子查询是最可取的
WHERE子查询
- 这种子查询最简单,最容易理解,但是却是效率很低的子查询
FROM子查询
- 这种子查询只会执行一次,所以查询效率很高
SELECT子查询
- 这种子查询每输出一条记录的时候都要执行一次,查询效率很低
单行子查询和多行子查询
- 单行子查询的结果集只有一条记录,多行子查询结果集有多行记录
- 多行子查询只能出现在 WHERE子句和FROM子句中
WHERE子句中的多行子查询
- WHERE子句中,可以使用N、AL、ANY、EXISTS关键字来处理多行表达式结果集的条件判断
EXISTS关键字
- EXISTS关键字是把原来在子查询之外的条件判断,写到了子查询的里面。