排序

升序(默认)

SELECT * FROM [表名] ORDER BY [列名] ASC;

降序

SELECT * FROM [表名] ORDER BY [列名] DESC;

多列排序

先对第一列排序,第一列相同后再对第二例进行排序

 SELECT * FROM [表名] ORDER BY [列名1] [ASC/DESC],[列名2] [ASC/DESC]...;

聚合函数

聚合函数是用来做纵向运算的函数:

COUNT()

统计指定列不为NULL的记录行数;

SELECT COUNT([列名]) FROM 表名;

MAX()

计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

SELECT MAX([列名]) FROM [表名];

MIN()

计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

SELECT MIN([列名]) FROM [表名];

SUM()

计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

SELECT SUM([列名]) FROM [表名];

AVG()

计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

SELECT AVG([列名]) FROM [表名];

分组查询

当需要分组查询时需要使用GROUP BY子句
注:凡和聚合函数同时出现的列名,一定要写在group by 之后

select [列名]count(*) from [表名] group by[列名];

HAVING子句

select [列名]count(*) from [表名] group by[列名] HAVING [条件];

注:having与where的区别:
1.having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
2.having后面可以使用聚合函数(统计函数)
where后面不可以使用聚合函数。
WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

LIMIT

LIMIT语法

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

SELECT * FROM [表名] LIMIT [参数1], [参数2];

第一个参数是开始的条数(从0开始),第二个参数是查询的条数

查询语句书写顺序:select – from- where- group by- having- order by-limit
查询语句执行顺序:from - where -group by - having - select - order by-limit

附录:示例代码

-- 查询所有学生,按年龄升序排列
SELECT * FROM stu ORDER BY age ASC;
-- 查询所有学生,按年龄升序排列
SELECT * FROM stu ORDER BY age DESC;
-- 查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序
SELECT * FROM emp ORDER BY sal DESC,empno ASC;
-- 查询emp表中记录数
SELECT COUNT(*)FROM emp;
-- 查询emp表中月薪大于2500的人数
SELECT COUNT(*)FROM emp WHERE sal>2500;
-- 查询所有雇员月薪和
SELECT SUM(sal) FROM emp;
-- 统计所有员工的平均工资
SELECT AVG(sal) FROM emp;
-- 查询最高工资和最低工资
SELECT MAX(sal),MIN(sal) FROM emp;
-- 查询男生女生分别多少人
select gender,count(*) from stu group by(gender);
-- 查询工资总和大于9000的部门编号以及工资和:
SELECT deptno, SUM(sal)FROM emp GROUP BY deptno HAVING SUM(sal) > 9000;
 -- 查询5行记录,起始行从0开始
SELECT * FROM emp LIMIT 0, 5;


Last modification:January 31, 2018
If you think my article is useful to you, please feel free to appreciate