ORDER BY排序
ORDER BY排序查询:对SELECT语句查询得到的结果,按某些字段进行排序,与DESC或ASC搭配使用,默认为ASC
#查询所有学生记录,按年龄升序排序
SELECT *
FROM stu
ORDER BY sage ASC;
#或者
SELECT *
FROM stu
ORDER BY sage;
#查询所有学生记录,按年龄降序排序
SELECT *
FROM stu
ORDER BY age DESC;
#查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序
SELECT * FROM emp
ORDER BY sal DESC,empno ASC;
MySQL的LIMIT
LIMIT [m,]n 或 LIMIT n OFFSET m:限制SELECT返回结果的行数,m 制定第一个返回记录行的偏移量,n 制定返回记录行的最大数目
注意:m不指定则偏移量为0,从第一条开始返回前n条记录 LIMIT 常用于分页显示
SELECT * FROM `result` LIMIT 5 #返回前5条记录
SELECT * FROM `result` LIMIT 5,10 #返回6-15条记录
查询语句书写顺序:select – from- where- group by- having- order by-limit
查询语句执行顺序:from - where -group by - having - select - order by-limit
MySQL函数
数学函数
字符串函数
日期和时间函数
系统信息函数
MySQL的统计函数
函数名称 | 描述 |
COUNT( ) | 返回满足SELECT条件的记录总和数,如 SELECT COUNT(*)… |
SUM( ) | 返回数字字段或表达式列作统计,返回一列的总和 |
AVG( ) | 通常为数值字段或表达列作统计,返回一列的平均值 |
MAX( ) | 可以为数值字段、字符字段或表达式列作统计,返回最大的值 |
MIN( ) | 可以为数值字段、字符字段或表达式列作统计,返回最小的值 |
不建议使用*,效率低
GROUP BY分组
使用GROUP BY关键字对查询结果分组
对所有的数据进行分组统计
分组的依据字段可以有多个,并依次分组
与HAVING结合使用,进行分组后的数据筛选
#查询每个部门的部门编号和每个部门的工资和:
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno;
#查询每个部门的部门编号以及每个部门的人数:
SELECT deptno,COUNT(*)
FROM emp
GROUP BY deptno;
子查询
在查询语句中的WHERE条件子句中,又嵌套了另外一个查询语句
注意:嵌套查询可由多个子查询组成,求解的方式是由里及外 子查询返回的结果一般都是集合,故而建议使用 IN 关键字
子查询出现的位置:
where后,作为条为被查询的一条件的一部分;
from后,作表;
当子查询出现在where后作为条件时,还可以使用如下关键字:
any
all
子查询结果集的形式:
单行单列(用于条件)
单行多列(用于条件)
多行单列(用于条件)
多行多列(用于表)
工资高于JONES的员工。
分析:
查询条件:工资>JONES工资,其中JONES工资需要一条子查询。
第一步:查询JONES的工资
SELECT sal FROM emp WHERE ename='JONES'
第二步:查询高于甘宁工资的员工
SELECT * FROM emp WHERE sal > (${第一步})
结果:
SELECT * FROM emp WHERE sal > (SELECT sal FROM emp WHERE ename='JONES')