MySQL学习笔记-数据查询语言
SQL-数据查询语言(DQL)
- DQL语法结构
#DQL语句编写顺序
select
字段列表
from
表名列表
where
条件列表
group by
分组字段列表
having
分组后条件列表
order by
排序字段列表
limit
分页参数
一.基本查询
1. 查询多个字段
select {字段1},{字段2},{字段3}... from {表名};
#返回所有字段
select * from {表名};
2. 设置别名
select {字段1} [as {别名1}],{字段2} [as {别名1}]... from {表名};
- as可以省略
- 别名就是展示的时候把字段名换成别名,看起来更直观
3. 去除重复记录
select distinct {字段列表} from {表名};
- 去除重复记录只是展示时候重复的部分不展示出来了,不是删除(DQL不能操作数据)。
二.条件查询(where)
select {字段列表} from {表名} where {条件列表};
- 条件:
- 字段列表:指的是查找出来的最终结果包括哪些列(* 为全部),如想找18岁的人的名,那列表就是name,条件是age=18。
- 条件也可以组合:如is null查询是null的,is not null查询非null的。
- between...and...条件只能从小到大,从大到小会查询不到。
- in(...)条件相当于多个or,括号内使用逗号分隔:
- link 占位符条件使用:
注意:%匹配任意字符需要关注%所在位置,比如找李姓的,就是'李%',找中间字是‘一’的,就是'%一%'
三.聚合函数(count,max,min,avg,sum)
聚合函数:将一列数据作为一个整体,进行纵向计算。
select {聚合函数}({字段列表}) from {表名};
- null值不参与所有聚合函数运算。
- 可以和其他函数结合使用,如和where函数结合寻找特定条件下的聚合函数结果。
1. 统计数量(count)
2. 最大值(max)
3. 最小值(min)
4. 平均值(avg)
5. 求和(sum)
四.分组查询(group by)
select {字段列表} from {表名} [where {条件}] group {分组字段名} [having {分组后过滤条件}];
- where和having的区别:
- 执行时机不同:where是分组之前进行过滤,不满足where条件的不参与分组;having是分组之后进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,而having可以。
- 执行顺序:where -> 聚合函数 -> having
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无意义。
- 例子:
五.排序查询(order by)
对某个字段(或多个字段)使用指定的排序方式(升序或降序)查询
select {字段列表} from {表名} order by {字段1} {排序方式1},{字段2} {排序方式2};
- 如果是多字段排序,会从第一个字段开始排,如果第一个字段相同,则根据第二个字段排序……以此类推。
1. 升序(ASC)(默认值)
2. 降序(DESC)
六. 分页查询(limit)
select {字段列表} from {表名} limit {起始索引},{查询记录数};
- 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
- 如果查询第一页数据,则起始索引可以省略。
- MySQL和Oracle中分页查询的关键字不一样。
七. 执行顺序
DQL的语法顺序和执行顺序并不相同,实际查询结果受执行顺序影响。
- from 表名列表
- where 条件列表
- group by 分组字段列表
- having 分组后条件列表
- select 字段列表
- order by 排序字段列表
- limit 分页参数