目录
聚合查询
聚合查询就是针对表中行与行之间的查询。
聚合函数
count()
count(列名):查询当前列下面有多少条数据。
selectcount(*)from 表名;#查询当前表有多少行selectcount(列名)from 表名;#查询该列有多少行
- count(1),里面加个数字常量也可以达到count()的效果,推荐写count()。
- 使用count(列名)查询到null时不算入行数。
sum()
把查询到的结果相加。
selectsum(列名)from 表名;#将该列所有值相加
- 必须是数字,不是数字会报警告没结果。
- 使用该函数会将null不计算,不会出现加上null和为null的结果。
avg()
求查询到结果的平均值。
selectavg(列名/表达式)from 表名;#将该列所有值的平均数
- 必须是数字,不是数字会报警告没结果。
- 使用该函数会将null那行不计算,比如1,2,null平均值为(1 + 2)/
2
= 1.5000。
max()和min()
分别返回查到的最大值和最小值。
selectmax(列名)from 表名;#返回该列最大值selectmin(列名)from 表名;#返回该列最小值
- 必须是数字,不是数字会报警告没结果。
- null不参与。
总结
函数说明count (列名)返回查询到的数据的 数量sum(列名)返回查询到的数据的 总和,不是数字没有意义avg(列名)返回查询到的数据的 平均值,不是数字没有意义max(列名)返回查询到的数据的 最大值,不是数字没有意义min(列名)返回查询到的数据的 最小值,不是数字没有意义
分组查询
group by 子句
查询(select) 中使用 group by子句可以对指定列进行分组查询。
功能就是将查询到的结果中 group by 子句后的列完全相同的合并在一起。
select 列名....from 表名 groupby 列名1, 列名2;
group by 子句后也可以跟 order by子句排序。
having 子句
group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 where语句,而需要用having。
因为分组结果在结果集中是临时表,不是真是的数据,where处理的事是真实数据。
select 列名....from 表名 groupby 列名1, 列名2having 条件;
联合查询
联合查询就是将多张表联合起来查询,将需要的信息一起取出来。
笛卡尔积
笛卡尔积就是将表中每行与其他表的行进行全排列。
select....from 表1,表2;
例如:
- 当使用笛卡尔积的表含有主外键查询时,因为是全排列,必然会产生无效数据,我们就可以使用条件查询,但是必须要使用 表名.列名。
- 通过指定列查询精简结果集时也需要使用 表名.列名。
- 可以通过给表名起别名来精简SQL语句。
内连接
两种写法:
select 列名 from 表1as 别名1,表2as 别名2where 条件 and 其他条件;select 列名 from 表1as 别名1join 表2as 别名 on 条件 and 其他条件;
外连接
外连接分为左外连接和右外连接。
如果联合查询,join 左侧的表完全显示我们就说是左外连接;
join右侧的表完全显示我们就说是右外连接。
select 列名 from 表1as 别名1rightjoin 表2as 别名2on 条件;#右外连接,表2全显示select 列名 from 表1as 别名1leftjoin 表2as 别名2on 条件;#左外连接,表1全显示
自连接
自连接是指在同一张表连接自身进行查询。
但是必须要对表进行起不同的别名。
select 列名 from 表名 as 别名1,表名 as 别名2where 条件 and 其它条件;select 列名 from 表名 as 别名1join 表名 as 别名2on 条件 and 其它条件;
子查询
子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。
select 列名 from 表名 where 列 =(select语句 );#例子
单行子查询
作为条件的子查询语句返回值只有一行数据。
多行子查询
作为条件的子查询语句返回值有多行行数据。
- 可以使用in来处理:
- 可以使用多列包含: 将where条件括号中与返回值一一进行比较
- 使用[not] exists关键字
select 列名 from 表名 whereexists(select语句);
后面查询语句返回结果集为空就不执行前面的查询语句,反之不为空执行。
from子句使用子查询
在from子句中使用子查询:子查询语句出现在from子句中。
把一个子查询当做一个临时表使用。
合并查询
为了合并多个select的执行结果,可以使用集合操作符 union,union all。
使用union 和union all时,前后查询的结果集中,字段需要一致。
- union操作符用于取得两个结果集的并集。当使用该操作符时, 会自动去掉结果集中的重复行。
- union all 操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。
版权归原作者 鸽鸽程序猿 所有, 如有侵权,请联系我们删除。