一、概念

DQL:数据查询语言,用来查询数据库中表的记录。

二、基本查询

1.查询指定字段

语法:

SELECT 字段1, 字段2, 字段3 ...  FROM   表名;

SQL语句:

select name from sys_user;

MySQL入门系列4-数据查询语言(DQL)_MySQL

2.查询表中所有字段

语法:

select * from 表名;

SQL语句:

select * from sys_user;

MySQL入门系列4-数据查询语言(DQL)_查询_02

3.为查询的字段设置别名

语法:

SELECT 字段1 [ AS 别名1 ],字段2 [ AS 别名2 ] ...  FROM 表名;

SQL语句:

select id,name as userName,age from sys_user;

MySQL入门系列4-数据查询语言(DQL)_查询_03

三、条件查询

语法:

SELECT 字段列表 FROM 表名 WHERE 条件列表;

SQL语句:

查询ID大于5的数据

select * from sys_user WHERE id>5

MySQL入门系列4-数据查询语言(DQL)_查询_04

四、聚合函数查询

常见的聚合函数如下图所示:

函数

描述

count

获取数量

max

获取最大值

min

获取最小值

avg

获取平均值

sum

求和

SQL语句:

select max(age),count(*),min(age),sum(age),avg(age) from sys_user;

MySQL入门系列4-数据查询语言(DQL)_查询_05

五、分组查询

语法:

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];

我们为了分组方便,新增了一个性别的字段。

MySQL入门系列4-数据查询语言(DQL)_MySQL_06

并设置初始数据

MySQL入门系列4-数据查询语言(DQL)_MySQL_07

我们来根据性别来分组,统计各个分组的人数。

select sex,count(*) from sys_user GROUP BY sex;

MySQL入门系列4-数据查询语言(DQL)_MySQL_08

我们还可以使用having来对分组的结果进行过滤。

select sex,count(*) as nums from sys_user GROUP BY sex HAVING nums>=2;

MySQL入门系列4-数据查询语言(DQL)_MySQL_09

六、排序查询

语法:

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式;
  1. 排序方式类别 ASC:升序(默认值)  DESC: 降序
  2. 注意事项 如果是升序, 可以不指定排序方式ASC ;如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

SQL语句:

我们编写一个根据年龄从大到小的排序

SELECT * from sys_user order by age desc;

MySQL入门系列4-数据查询语言(DQL)_查询_10

七、分页查询

语法:

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

注意事项:起始索引从0开始,计算规则为:(查询页码如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

SQL语句:

SELECT * from sys_user limit 0,2

我们查询起始索引为0,记录数为2的数据

MySQL入门系列4-数据查询语言(DQL)_MySQL_11

八、复合查询

 同时使用上述多种查询时必须严格遵循以下顺序书写:

SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数

DQL语句复合使用系统执行顺序为: from ... where ... group by ... having ... select ... order by ... limit ... 

测试:

SELECT sex,count(*) as nums from sys_user WHERE 1=1 GROUP BY sex HAVING nums>=1 order by age desc limit 0,2

MySQL入门系列4-数据查询语言(DQL)_查询_12