数据库常用操作(2)

来源:互联网 发布:电脑桌面工作便签软件 编辑:程序博客网 时间:2024/06/07 00:18

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. 右连接用法同左连接,按右边的表为主表。