一、介绍
DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。
查询关键字:SELECT
二、语法
DQL查询语句,语法结构如下:
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
2.1 基本查询
在基本查询的DQL语句中,不带任何的查询条件,语法如下:
-
查询多个字段
select 字段1, 字段2, 字段3 from 表名;
-
查询所有字段(通配符)
select * from 表名;
-
设置别名
select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] from 表名;
-
去除重复记录
select distinct 字段列表 from 表名;
2.2 条件查询
- 语法:
select 字段列表 from 表名 where 条件列表 ; -- 条件列表:意味着可以有多个条件
在SQL语句当中构造条件的运算符分为两类:
-
比较运算符
-
逻辑运算符
常用的比较运算符如下:
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
between ... and ... | 在某个范围之内(含最小、最大值) |
in(...) | 在in之后的列表中的值,多选一 |
like 占位符 | 模糊匹配(_匹配单个字符, %匹配任意个字符) |
is null | 是null |
常用的逻辑运算符如下:
逻辑运算符 | 功能 |
---|---|
and 或 && | 并且 (多个条件同时成立) |
or 或 || | 或者 (多个条件任意一个成立) |
not 或 ! | 非 , 不是 |
2.3 分组查询
- 聚合函数
使用聚合函数查询就是纵向查询,它是对一列的值进行计算,然后返回一个结果值。
常用聚合函数:
函数 | 功能 |
---|---|
count | 统计数量(按照列去统计有多少行数据。) |
max | 最大值(计算指定列的最大值) |
min | 最小值(计算指定列的最小值) |
avg | 平均值(计算指定列的平均值) |
sum | 求和(计算指定列的数值和,如果不是数值类型,那么计算结果为0) |
注意 : 聚合函数会忽略空值,对NULL值不作为统计。
- 分组查询
分组: 按照某一列或者某几列,把相同的数据进行合并输出。
分组查询通常会使用聚合函数进行计算。
语法:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
注意:
• 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
• 执行顺序:where > 聚合函数 > having
where与having区别
-
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
-
判断条件不同:where不能对聚合函数进行判断,而having可以。
2.4 排序查询
语法:
select 字段列表
from 表名
[where 条件列表]
[group by 分组字段 ]
order by 字段1 排序方式1 , 字段2 排序方式2 … ;
排序方式:
-
ASC :升序(默认值)
-
DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
2.5 分页查询
语法:
select 字段列表 from 表名 limit 起始索引, 查询记录数 ;
注意:
• 起始索引从0开始。 计算公式:起始索引 = (查询页码 - 1)* 每页显示记录数
• 不同的数据库分页查询有不同的实现,MySQL中是LIMIT,Oracle中是ROWNUM
• 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 条数