一、概念
DQL:数据查询语言,用来查询数据库中表的记录。
二、基本查询
1.查询指定字段
语法:
SELECT 字段1, 字段2, 字段3 ... FROM 表名;
SQL语句:
select name from sys_user;
2.查询表中所有字段
语法:
select * from 表名;
SQL语句:
select * from sys_user;
3.为查询的字段设置别名
语法:
SELECT 字段1 [ AS 别名1 ],字段2 [ AS 别名2 ] ... FROM 表名;
SQL语句:
select id,name as userName,age from sys_user;
三、条件查询
语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
SQL语句:
查询ID大于5的数据
select * from sys_user WHERE id>5
四、聚合函数查询
常见的聚合函数如下图所示:
函数 | 描述 |
count | 获取数量 |
max | 获取最大值 |
min | 获取最小值 |
avg | 获取平均值 |
sum | 求和 |
SQL语句:
select max(age),count(*),min(age),sum(age),avg(age) from sys_user;
五、分组查询
语法:
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];
我们为了分组方便,新增了一个性别的字段。
并设置初始数据
我们来根据性别来分组,统计各个分组的人数。
select sex,count(*) from sys_user GROUP BY sex;
我们还可以使用having来对分组的结果进行过滤。
select sex,count(*) as nums from sys_user GROUP BY sex HAVING nums>=2;
六、排序查询
语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式;
- 排序方式类别 ASC:升序(默认值) DESC: 降序
- 注意事项 如果是升序, 可以不指定排序方式ASC ;如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
SQL语句:
我们编写一个根据年龄从大到小的排序
SELECT * from sys_user order by age desc;
七、分页查询
语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
注意事项:起始索引从0开始,计算规则为:(查询页码如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
SQL语句:
SELECT * from sys_user limit 0,2
我们查询起始索引为0,记录数为2的数据
八、复合查询
同时使用上述多种查询时必须严格遵循以下顺序书写:
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