补充④:jjoin using和join on的区别 join using 后面接 两张表中都存在的字段 (字段名称 一样) join on 后面接 两张表中中需要关联的字段 (字段名称不需要一样 a.id = b.id )
4.3附加运算查询
类型
含义
as
将as前的关系起一个别名,在此语句中,可以用别名来代指这个表
*
在select中通过: “表名.*” 来表示查找出这个表中所有的属性
order by
让查询结果中的信息按照给定的属性排序(默认升序,上小下大)
desc
在order by之后的属性后使用,表示采用降序排序
asc
在order by之后的属性后使用,表示采用升序排序(默认)
between
在where中使用between表示一个数在两个数值之间取值
not between
between的反义词,在两个数之外取值
union/union all
将两个SQL语句做并运算,并且自动去重,添加all表示不去重
intersect/intersect all
将两个SQL语句做交运算,并且自动去重,添加all表示不去重
except/except all
将两个SQL语句做差运算,并且自动去重,添加all表示不去重
is null
在where中使用is null表示这个值是空值
is not null
在where中使用is not null表示这个值不是空值
4.4聚集函数运算查询
类型
含义
avg
平均值
min
最小值
max
最大值
sum
总和
count
计数
distinct
表示将distinct后的属性去重
group by
将在group by上取值相同的信息分在一个组里;可用于大表去重、挑选分组
having
对group by产生的分组进行筛选,可以使用聚集函数
select class,avg(score) as avg_score
from Student natural join Math
group by class
having avg(score)< 60;
#在Student与Math表自然连接的结果中按照班级分组,并且去除那些班级的平均成绩没到60的班级,剩下的班级和该班成绩的平均数(该班成绩的平均数这个属性被重命名为avg_score)作为一张新表被输出出来
补充①:where语句中不能使用聚合函数 大致解释如下,sql语句的执行过程是:from–>where–>group by -->having — >order by --> select; 聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误, 而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后