[toc]
## 聚合函数
求和、求平均数、求最大值、最小值、四舍五入、总记录数(不包含null)
### SUM
```
计算ID=1的学生的的总分
select SUM(grade) as '总分' from score where student_id = 1;
```
### AVG
```
计算ID=1的学生的的平均分
select AVG(grade) as '平均分' from score where student_id = 1;
```
### MAX、MIN
```
计算ID=1的学生的的平均分
select AVG(grade) as '平均分',MAX(grade) 最高分,MIN(grade) 最低分 from score where student_id = 1;
```
### ROUND
ROUND(...,n)
### 关于count
- 若select的字段对应的记录的信息为null,count是不会算的
- count中若是一个常量,会添加一列
```
SELECT COUNT(1) FROM score
```
## 分组
分组查询就是按某列的值进行分组,相同的值分成一组,然后可以对此组内进行求平均、求和等计算
>语法:
>SELECT 列名,查询表达式
FROM <表名>
WHERE <条件>
GROUP BY <分组字段>
HAVING 分组后的过滤条件
ORDER BY 列名 [ASC,DESC]
LIMIT 偏移量,条数
### 注意事项
>having 过滤的是分组后得到的列表里的
>SELECT列表中只能包含:
>- 被分组的列
>- 为每个分组返回一个值的表达式,如聚合函数

## 子查询
### 比较运算与子查询

### all 与 子查询
大于最大值

等于`select MAX(age) from...`
### any
ALL 全部
```
from student WHERE age = ANY (SELECT age FROM student WHERE province = '陕西省')
```
### some
SOME 某些
```
SELECT * from student WHERE age = SOME (SELECT age FROM student WHERE province = '陕西省')
```
### in/not in;exists/not exists
## 表连接
### 连接类型
- JOIN=INNER JOIN=CROSS JOIN 内连接
- LEFT [OUTER] JOIN 左外连接
- RIGHT [OUTER] JOIN 右外连接
- ON 连接条件

### 内连接
两种写法
