1. 查询最大值、最小值、平均值
以查询每学科的最高分、最低分和平均分为例
selectitem max(score),min(score),avg(score) from stu_score group by item;
2. 去重统计课程的数量
selectcount(distinct course)from stu_score;
3. order by的简单用法,默认升序ASC,DESC为倒叙排序
按照查询条件的第一个字段倒序排序,简便在于不需要知道第一个字段是什么
select *from 表A order by 1 desc;
4. 分组查询的关键字是group by,group by 是不能单独使用的,需要结合聚合函数,聚合函数有sum,count
例:SELECT sname ,count(*) FROM stuinfo GROUP BY sname;这个例子说的是sname相同的记录数有多少条
5. having 语句的使用
例:select clientuuid ,sum(resultCount) from clientrom group by clientuuid having sum(resultCount)>0;查询客户端查询结果数大于0的有哪些客户端。
having字句限制的是组,不是行。什么意思呢,就是用having语句不能限制你查询表中的某一行数据,而是 限制你查询分组后的数据,所以通用的用法就是结合group by使用。
使用顺序:
where 条件字句 --对标原始数据进行过滤
group by字句 --对查询结果分组
having字句 --对分组结果进行判断过滤
6. 内连接 inner join,内连接不以任何表为主表,只取出两个表中能匹配的内容,内连接有点像用where条件连接一样
例:select * from 表A inner join 表B on A.id = B.id;查询结果就是两个表里都有的内容。
7. 左连接 left join, 左连接的结果集left 字句中指定发左表中所有行,不仅仅是连接列所匹配的行,如果左表中的某行在右表中没有匹配的行,则在相关联的结果集中右表中所有选择列表的列均为空值
例:select * from 表A left join 表B on A.id=B.parent_id;
8. 右连接用法同左连接,按右边的表为主表。