DQL(数据查询语言,用来查询数据库中表的记录)
查询关键字:SELECT
语法:
SELECT
字段列表
FROM
表名字段
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后的条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
基础查询
查询多个字段:
SELECT 字段1, 字段2, 字段3, ... FROM 表名;
SELECT * FROM 表名;
设置别名:
SELECT 字段1 [ AS 别名1 ], 字段2 [ AS 别名2 ], 字段3 [ AS 别名3 ], ... FROM 表名;
SELECT 字段1 [ 别名1 ], 字段2 [ 别名2 ], 字段3 [ 别名3 ], ... FROM 表名;
去除重复记录:
SELECT DISTINCT 字段列表 FROM 表名;
转义:
SELECT * FROM 表名 WHERE name LIKE '/_张三' ESCAPE '/'
/ 之后的_不作为通配符
注意:*号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。
条件查询
语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件:
常用的比较运算符如下:
比较运算符功能>大于>=大于等于<小于<=小于等于=等于<> 或 !=不等于BETWEEN … AND …在某个范围内(含最小、最大值)IN(…)在in之后的列表中的值,多选一LIKE 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)IS NULL是NULL
常用的逻辑运算符如下:
逻辑运算符功能AND 或 &&并且(多个条件同时成立)OR 或 ||或者(多个条件任意一个成立)NOT 或 !非,不是
聚合查询(聚合函数)
介绍:
将一列数据作为一个整体,进行纵向计算
常见聚合函数:
函数功能count统计数量max最大值min最小值avg平均值sum求和
语法:
SELECT 聚合函数(字段列表) FROM 表名;
注意:NULL值是不参与所有聚合函数运算的。
分组查询
语法:
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后的过滤条件 ];
where 和 having 的区别:
- 执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;having是分组后对结果进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,而having可以。
注意事项:
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
- 执行顺序:where > 聚合函数 > having
- 支持多字段分组,具体语法为:group by columnA,columnB
排序查询
排序在日常开发中是非常常见的一个操作,有升序排序,也有降序排序。
语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
排序方式:
- ASC: 升序(默认)
- DESC: 降序
注意事项
- 如果是升序,可以不指定排序方式ASC
- 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
分页查询
分页操作在业务系统开发时,也是非常常见的一个功能,我们在网站中看到的各种各样的分页条,后台都需要借助于数据库的分页操作。
语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;
注意事项
- 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数
- 分页查询是数据库的方言,不同数据库有不同实现,MySQL是LIMIT
- 如果查询的是第一页数据,起始索引可以省略,直接简写 LIMIT 10