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的女生)可以特别记一下


test 3


test 1


test 2
test 4


test 5
test 6


test 7
test 8


test 9
test 10


聚合函数(count,max,min,avg,sum)

聚合函数就是将一列数据作为一个整体,进行纵向计算(聚合函数是作用于某一列的)
所有的NULL值是不参与聚合运算的

count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和

  • select 聚合函数(字段列表) from 表名;
    test 1


    test 2


  • test 3
    ….

分组查询(group by)

  • select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后的过滤条件]
    test all
  • where 与 having 区别
    1. 执行时机不同, where是分组之前过滤,不满足where 不参与分组; 而having是分组之后过滤,对结果进行筛选
    2. 判断条件不同,where 不能对聚合函数进行判断,而having可以
  • 注意

    (执行顺序 where>聚合函数>having)
    分组之后查询的字段一般为聚合函数和分组字段,查询其他字段没有任何意义


排序查询(order by)

  • select 字段列表 from 表名 order by 字段名1 排序方式,字段2 排序方式;

    ASC 升序(默认值)
    desc 降序
    如果是多字段排序,当第一个字段相同时,才会根据第二个字段进行排序
    test all


分页查询(limit)

就相当于,视频网站上资源,第一页,第二页….

  • select 字段列表 from 表名 limit 起始索引, 查询记录数;
  • 注意
  1. 起始索引从零开始 ,起始索引=(查询页码-1)’*’每页显示记录数;

  2. 分页查询是数据库的方言,不同的数据库有不同的实现,Mysql是limit

  3. 如果查询的是第一页的数据,起始索引可以胜率,直接简写为limit 10;
    test all



DQL 案例分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- ---------------------------- DQL练习 --------------------------
-- 1. 查询年龄为20,21,22,23岁的女性员工信息
select * from employee where gender = '女' and age in (21,20,22,23);

-- 2. 查询性别为男,并且年龄在20-40岁以内的性别为三个字的员工
select * from employee where gender = '男' and (age between 20 and 40) and name like '___';

-- 3. 统计员工表中,年龄小于六十岁的,男性员工和女性员工的人数
select gender ,count(*) as '员工人数' from employee where age < 60 group by gender ;

-- 4. 统计查询所有年龄小于等于三十五岁的员工的性别和年龄,并且对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select name , age from employee where age <= 35 order by age asc , entrydate desc ;

-- 5. 查询性别为男,且年龄在20-40岁以内的 前五个员工的信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序
select * from employee where gender='男' and (age between 20 and 40 ) order by age asc ,entrydate desc limit 0, 5 ;

DQL 执行顺序(最终)

  • 编写顺序

    select 字段列表 from 表名列表 where 条件列表 group by 分组列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数

  • 执行顺序

    from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 select 字段列表 order by 排序字段列表 limit 分页参数