一、DQL介绍
DQL全称:Data Query Language(数据查询语言),用来查询数据库中表的记录。
关键字:select
二、DQL语法
select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数
注意:本章节只涉及到单表查询,多表查询会在后面的文章中介绍
三、基本查询 1、原始表数据
2、查询多个字段
语法:select 字段1,字段2,… from 表名 或者 select * from 表名(查询所有数据)
查询指定字段
3、设置别名
语法:select 字段1 [as 别名1], 字段2 [as 别名2] … from 表名;
对查询结果设置别名
4、去重查询
语法:select distinct 字段列表 from 表名;
四、条件查询
语法:select 字段列表 from 表名 where 条件列表
运算符 | 功能 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
或 != | 不等于 |
between … and … | 在某个范围之间(包含最大值和最小值) |
in(…) | 在in之后的列表中的值,多选一 |
like 占位符 | 模糊匹配( “_” 匹配单个字符,”%”匹配任何字符) |
is null | 是null |
and 或者 && | 并且 |
or 或者 || | 或者 |
not 或者 ! | 非 |
1、查询年龄等于18的所有人的姓名
2、查询年龄小于21的人的姓名
3、查询年龄大于18,小于20的
4、查询地址不为空的人的姓名和地址信息
5、查询年龄小于20并且地址在西安的人的姓名和地址
6、查询地址在列表[“北京”,”上海”,”广州”,”深圳”]中的人的姓名和地址
五、聚合函数 1、介绍
将一列数据作为一个整体,进行纵向计算
2、常见聚合函数
count:统计数量
max: 最大值
min:最小值
avg:平均值
sum:求和
3、语法
select 聚合函数(字段列表) from 表名;
4、示例
4.1 统计table_test表中一共有多少数据
4.2 统计table_test表中年龄最大的数据
4.3 统计table_test表中年龄最小的数据
4.4 统计table_test表中年龄的平均值
4.5 统计table_test表中所有人的年龄之和
4.6 统计北京地区所有员工的年龄之和
注意:在使用聚合函数的时候,所有的null值是不参与运算的,虽然table_test表中有6个数据,但是address列有一个是null,所以统计address字段时是5
六、分组查询
1、语法:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]
2、where与having区别
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组,而having是分组之后对结果进行过滤
判断条件不同:where不能对聚合函数进行判断,而having可以
3、示例
3.1 统计不同地区的平均年龄,需要根据address做分组
3.2 统计各个地区的平均年龄(不统计空地区的),先使用where做条件筛选,然后再分组
3.3 统计各个地区的平均年龄(不统计空地区),并且显示平均年龄要大于19岁的
注意:
1、执行顺序:where > 聚合函数 > having
2、分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段没有意义
七、排序查询
1、语法:
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;
2、排序方式
ASC:升序(默认)
DESC:降序
3、示例
3.1 table_test表中数据按照年龄升序排列
3.2 table_test 表中数据按照年龄降序排列
3.3 table_test 表中数据按照年龄降序排列,年龄一样的,在继续按照id降序排列
八、分页查询
1、语法
select 字段列表 from 表名 limit 起始索引,查询记录数;
2、注意
* 其实索引从0开始,其实索引等于(查询页码-1)* 每页显示的记录数
* 分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是limit
* 如果查询的是第一页,起始索引可以省略,直接写为limit 数量
3、示例
3.1 查询第一页数据,每页展示5条数据
3.2 查询第二页数据,每页展示5条数据,因为每页的数据是5条,所以第二页的索引其实位置是(2-1)*5 = 5,第三页的起始位置是(3-1)*5=10
又因为一共只有6条数据,所以第二页只有一条数据可以展示
九、DQL执行顺序
侯哥语录:我曾经是一个职业教育者,现在是一个自由开发者。我希望我的分享可以和更多人一起进步。分享一段我喜欢的话给大家:”我所理解的自由不是想干什么就干什么,而是想不干什么就不干什么。当你还没有能力说不得时候,就努力让自己变得强大,拥有说不得权利。”