结构
1 | select DISTINCT c1 AS alias_name, c2, ... |
执行顺序
- FROM
- WHERE
- GROUP BY
- HAVING
- DISTINCT
- SELECT
- ORDER BY
- LIMIT
GROUP BY
group by 一般用于分组统计,
SELECT 后的表达式 和 HAVING 后的表达式 只能使用 GOURP BY 后的字段
1 | -- 统计每个 gender 的数量 |
多个字段,分组之后再分组。例如:每个班级每个性别的学生人数。
1 | -- 每个班级每个性别的学生人数。 |
HAVING
仅用于配合 GROUP BY 使用。
DISTINCT (adj.明显不同的)
删除重复
LIMIT
1 | SELECT |
offset
偏移量,跳过前N条数据, 忽略时等同于0
row_count
返回结果数量
oracle数据库不支持mysql中limit功能,其使用rownum
语法
查询:
1 | -- 多个字段 |
别名有空格:'姓 名'
去除重复记录:
1 | select distinct 字段列表 from 表名; |
分组查询
聚合函数
只能在字段列表处使用
常见聚合函数
count(字段)
count(*) count(常量)
min()
max()
avg()
平均值,有小数
sum()
null 值不参与所有聚合函数计算
聚合函数不能写在 where 后(只可以写在字段后和having后)
排序查询
1 | select ... from ... order by 字段1 排序方式1,字段2 排序方式2,...; |
字段1相同时,根据字段2排序
排序方式:
ASC 升序(默认值)
DESC 降序
分页查询
1 | select ... from ... limit 起始索引,展示数据条数 |
分页查询不同的数据库有不同的实现,MySQL用limit,Oracle不用这个
如果查询的是首页数据,可省略起始索引,写作 limit 展示数据条数