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都可以加条件
区别:在分组之前加条件,having在分组之后加条件.
的效率要远远高于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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>