目录
1、编写顺序
2、基本查询
3、条件查询
4、聚合函数
5、分组查询
6、排序查询
7、分页查询
8、执行顺序
1、编写顺序
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数
2、基本查询
查询多个字段
SELECT 字段1,字段2,字段3... FROM 表名
SELECT name,age,gender from emp
查询所有字段
SELECT * FROM 表名
SELECT * FROM emp
设置别名
SELECT 字段1 [AS 别名1],字段2[AS 别名2] ...FROM 表名SELECT name AS '姓名' from emp
去除重复记录
SELECT DISTINCT 字段列表 FROM 表名SELECT DISTINCT name FROM emp
3、条件查询
查询age等于5的数据
SELECT * FROM emp WHERE age = 5
查询age小于5的数据
SELECT * FROM emp WHERE age < 5
查询age大于等于5的数据
SELECT * FROM emp WHERE age >= 5
查询age不等于5的数据
SELECT * FROM emp WHERE age <> 5 -- 或者 SELECT * FROM emp WHERE age != 5
查询age为空的数据
SELECT * FROM emp WHERE age IS NULL
查询age不为空的数据
SELECT * FROM emp WHERE age IS NOT NULL
查询age在3(包含) 到7(包含)之间的数据
SELECT * FROM emp WHERE age >= 3 && age <= 7 -- 或者 SELECT * FROM emp WHERE age >= 3 AND age <= 7 -- 或者 SELECT * FROM emp WHERE age BETWEEN 3 AND 7
查询name为3且age小于5的数据
SELECT * FROM emp WHERE name = 3 && age < 5
查询age等于3或5或7的数据
SELECT * FROM emp WHERE age = 3 OR age = 5 OR age = 7 -- 或者 SELECT * FROM emp WHERE age in(3,5,7)
查询detail为2个字的数据
SELECT * FROM emp WHERE detailLIKE '__'
查询detail最后以为是1的数据
SELECT * FROM emp WHERE detail LIKE '%1'
4、聚合函数
注意:所有的null值不参与聚合函数的运算
统计数据的数量
SELECT COUNT(*) from emp
统计age的平均值
SELECT AVG(age) from emp
获取age的最小值
SELECT MIN(age) from emp
获取age的最大值
SELECT MAX(age) from emp
5、分组查询
查询语句:
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]
WHERE和HAVING区别
- 执行时机不同:WHERE是分组之前进行顾虑 不满足WHERE条件 不参与分组;而HAVING是分组之后对结果进行过滤
- 判断条件不同:WHERE不能对聚合函数进行判断,二HAVING可以
根据性别分组 统计男性员工和女性员工的数量
SELECT gender, COUNT(*) from emp GROUP BY gender
根据性别分组 统计男性员工和女性员工的平均年龄
SELECT gender,AVG(age) from emp GROUP BY gender
查询年龄大于5的员工 并根据detail进行分组 获取员工数量大于等于2的detail
SELECT test '地址',COUNT(*) '数量' from emp WHERE age > 5 GROUP BY detail HAVING COUNT(*) >= 2
6、排序查询
查询语句 :
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2
排序方式:
- ASC:升序(默认值)
- DESC:降序
注意:如果是多字段排序 当第一个字段值相同时 才会根据第二个字段进行排序
根据age对数据进行升序排序
SELECT age from emp ORDER BY age ASC
根据age对数据进行升序排序 如果age相同 再按照idcard进行降序排序
SELECT * from emp ORDER BY age ASC,idcard DESC
7、分页查询
查询语句:
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条数
注意:
- 起始索引从0开始 起始索引=(查询页码-1)*每页显示记录数
- 分页查询是数据库中的方言 不同的数据库有不同的实现 mysql中是LIMIT
- 如果查询的是第一页的数据 起始索引可以省略 直接简写为limit 3
查询第1页的数据 每页展示3条记录
SELECT * from emp LIMIT 0,3
查询第2页的数据 每页展示3条记录
SELECT * from emp LIMIT 3,3
8、执行顺序
FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 SELECT 字段列表 ORDER BY 排序字段列表 LIMIT 分页参数