Mysql基础篇-DQL
DQL 数据查询语言(频率高)
关键字 SELECT
select 字段列表
from 表名列表
where 条件列表
group by 分组字段列表
having 分组后条件列表
order by 排序字段列表
limit 分页参数
- 小技巧 : select form 中间的字段搜索其实就是第一行的一些名称 , 然后分组排序group by 就是选定每一行的第一个名称是什么,然后后面的数据与第一个对齐
基本查询
首先先给他插入几条数据
- 查询返回多个字段
select 字段1,字段2… from 表名;
select * from 表名;(尽量不要写*) - 设置别名
select 字段1 [as 别名1],字段2[as 别名2]… from 表名;
去除重复记录
select distinct 字段列表 from 表名;
条件查询(where)
select 字段列表 from 表名 where 条件列表;
其中的like(比如查询名字为四个字的人)和in(比如查询年龄为20,23,21的女生)可以特别记一下
聚合函数(count,max,min,avg,sum)
聚合函数就是将一列数据作为一个整体,进行纵向计算(聚合函数是作用于某一列的)
所有的NULL值是不参与聚合运算的
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
select 聚合函数(字段列表) from 表名;
….
分组查询(group by)
- select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后的过滤条件]
- where 与 having 区别
- 执行时机不同, where是分组之前过滤,不满足where 不参与分组; 而having是分组之后过滤,对结果进行筛选
- 判断条件不同,where 不能对聚合函数进行判断,而having可以
- 注意
(执行顺序 where>聚合函数>having)
分组之后查询的字段一般为聚合函数和分组字段,查询其他字段没有任何意义
排序查询(order by)
- select 字段列表 from 表名 order by 字段名1 排序方式,字段2 排序方式;
ASC 升序(默认值)
desc 降序
如果是多字段排序,当第一个字段相同时,才会根据第二个字段进行排序
分页查询(limit)
就相当于,视频网站上资源,第一页,第二页….
- select 字段列表 from 表名 limit 起始索引, 查询记录数;
- 注意
起始索引从零开始 ,起始索引=(查询页码-1)’*’每页显示记录数;
分页查询是数据库的方言,不同的数据库有不同的实现,Mysql是limit
如果查询的是第一页的数据,起始索引可以胜率,直接简写为limit 10;
DQL 案例分析
1 | -- ---------------------------- DQL练习 -------------------------- |
DQL 执行顺序(最终)
编写顺序
select 字段列表 from 表名列表 where 条件列表 group by 分组列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数
执行顺序
from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 select 字段列表 order by 排序字段列表 limit 分页参数