三、数据库查询补充
1、常用聚合函数
1.count()
- 计数:满足条件的数据行数
- 忽略null值 语法: select count(*) as 别名 from 表名 where 条件表达式;
2.sum()
- 求和:满足条件的数据求和
- 只能操作数字类型
- 忽略null值 语法: select count(列名) as 别名 from 表名 where 条件表达式;
3.avg()
- 平均值:满足条件的数据求平均值
- 只能操作数字类型
- 忽略null值语法: select avg(列名) as 别名 from 表名 where 条件表达式;
4.max()
- 最大值:满足条件的数据最大值语法: select max(列名) as 别名 from 表名 where 条件表达式;
5.min()
- 求和:满足条件的数据最小值语法: select min(列名) as 别名 from 表名 where 条件表达式;
2、分组
1. group by子句
语法: select * from 表名 where 条件表达式 group by 条件1 having 条件2 order by 排序方式;
2.having子句
3、查询语句的执行顺序
- from 子句:从后往前、从右到左
- where 子句:自下而上,从后往左
- group by:从左往右分组
- having:消耗资源,尽量避免使用
- select
- order by:从左到右,消耗资源
* SQL优化: 先筛选掉不需要的数据量大的数据,再进行操作
4、关联查询
查询两个或两个以上数据表或视图的查询叫做连接查询,连接查询通常建立在存在相互关系的父子表之间。
1. 笛卡尔积
笛卡尔积指做关联操作的每个表的每一行都和其它表的每一行做组合,假设两个表的记录条数分别是X和Y,笛卡尔积将返回X * Y条记录。当两个表关联查询时,不写连接条件,得到的结果即是笛卡尔积。
2. 等值连接
等值连接是连接查询中最常见的一种,通常是在有主外键关联关系的表间建立,并将连接条件设定为有关系的列,使用等号”=”连接相关的表。
3. 内连接
内连接返回两个关联表中所有满足连接条件的记录。
4. 外连接
外连接不仅返回满足连接条件的记录,还将返回不满足连接条件的记录。
1. 左连接 2. 右连接5. 分页查询
语法: limit ?,? 第一个问号是起始行号(行号从0开始),第二个问号是返回条目数* 在Oracle中不是通过limit实现分页查询,而是通过rownum(伪列)实现分页查询