DQL语句(数据查询语言,用来查询数据库中表的数据)
基本语法
- select 字段列表
- from 表名列表
- where 条件列表
- group by 分组字段列表
- having 分组后条件列表
- ordey by 排序字段列表
- limit 翻页参数
基本查询
查询字段
- 查询多个字段
select 字段1,字段2,字段3...from 表名
- 查询所有字段
select * from 表名
- 查询多个字段
设置别名
select 字段[as 别名1],[as 别名2]...from表名
去除重复记录
select distinct 字段列表 from 表名
条件查询
语法
select 字段列表 from 表名 where 条件列表;
条件
比较运算符 功能 逻辑运算符 功能 >
大于 AND
或&&
并且(多个条件同时成立) >=
大于等于 OR
或||
或者(多个条件任意一个成立) <
小于 NOT
或!
非,不是 <=
小于等于 =
等于 <>
或!=
不等于 BETWEEN … AND …
在某个范围之内(含最小、最大值) IN(…)
在 in 之后的列表中的值(多选一) LIKE
模糊匹配( _
匹配单个字符,%
匹配任意字符)IS NULL
是 NULL
聚合函数
介绍
- 将一列数据为一个整体,进行纵向计算
常见的聚合函数
函数 功能 count 统计数量 max 最大值 min 最小值 avg 平均值 sum 求和
语法
select 聚合函数(字段列表) from 表名;
分组查询
- 语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后的过滤条件]
- where条件和having条件的区别:
- 执行时机不同:where是分组之前执行,不满足where条件,不参加分组,而having是对分组之后的结果进行过滤
- 判断条件不同:where不能对聚合函数进行判断,而having可以
- where条件和having条件的区别:
排序查询
- 语法
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
- 排序方式:
- asc:升序(默认)
- desc:降序
- 排序方式:
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
分页查询
- 语法
- select 字段列表 from 表名 limit 起始索引,查询记录
- 注意
- 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
- 分页查询是数据库的方言,因为不同的数据库有不同的是实现方法,MySQL中使用的是的limit
- 如果查询的第一页数据,起始索引可以省略,直接简写成limit 10
- 注意
- select 字段列表 from 表名 limit 起始索引,查询记录
执行顺序和执行顺序
编写顺序(书写SQL时的顺序)
SELECT
- 字段列表FROM
- 表名列表WHERE
- 条件列表GROUP BY
- 分组字段列表HAVING
- 分组后条件列表ORDER BY
- 排序字段列表LIMIT
- 分页参数
执行顺序(数据库实际执行的顺序)
顺序 | 关键字 | 作用 | 对应编写顺序编号 |
---|---|---|---|
1 | FROM | 确定数据来源表 | 2 |
2 | WHERE | 行级条件过滤 | 3 |
3 | GROUP BY | 分组操作 | 4 |
4 | HAVING | 组级条件过滤 | 5 |
5 | SELECT | 选择输出字段/聚合计算 | 1 |
6 | ORDER BY | 结果排序 | 6 |
7 | LIMIT | 分页限制 | 7 |