where、having、group by、order by、limit的区别和使用顺序

本文详细介绍了数据库查询中where、having、group by、order by和limit的区别及使用顺序。where子句用于在分组前筛选条件,having则用于分组后的条件过滤;GROUP BY用于数据分组,ORDER BY进行结果排序,LIMIT限制返回的记录数。where效率高于having,order by需置于where之后,limit之前。

where子句:

通过在SELECT语句的WHERE子句中指定条件进行查询,WHERE子句必须紧跟在FROM子句之后。

如:从员工表里查询员工id为h0001的员工的工资

select 工资 from 工资表 where id='h0001';

 

having:

having一般与group by组合来使用,表示在得到分类汇总记录的基础之上,进一步筛选记录。

如:从部门表里查部门内员工薪水总和大于100000的部门的编号

select 部门编号,sum(薪水) from 部门表 group by 部门编号 having sum(薪水)>100000;

 

相同点:where和having都可以加条件

区别:1.where在分组之前加条件,having在分组之后加条件.

           2.where的效率要远远高于having. 分组本身消耗资源非常大.

GROUP BY:

当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部门来分组。

select 部门编号,sum(薪水) from 部门表 group by 部门编号;

ORDER BY:

order by 用来指定数据的排序方式。有升序和降序两种。desc表示降序,asc为升序,默认为升序,asc可省略。

order by 要写在where之后limit之前。

select * from stu_info order by id asc;// 按照id升序排序,其中asc可省略。
select * from stu_info order by id desc; //按照id降序

LIMITE:

LIMIT用来限定查询结果的起始行,以及总行数。

如:查询10行记录,起始行从3开始

select * from emp limit 3,10;

综合运用时的使用顺序:

有如下表中数据:

从employee表中查询salary列的值>0且prize字段值>0的记录,结果以id字段分组且降序排列,起始行从0开始,显示5行:

select *  from employee where salary>0  group by id  having  prize>0  order by id desc limit 0,5 ;

结果:

查询到的记录条数小于5行,所以只能显示查询到的总行数。

注意各个关键字使用时的位置和顺序,where在分组之前加条件,having在分组之后加条件,where的效率要远远高于having, 分组本身消耗资源非常大。order by 要写在where之后,limit之前。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

技术交流微信:intboy520

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值