• 7.MySQL DQL(数据查询语言) 语句


    关键字:select

    【注意】!!! 去除查询重复记录不要用group by 使用distinct

    -- 查询语句 
    select 字段 from 表名 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数
    
    -- 查询多个字段 select 字段1,字段2... from 表名
    select id,name from mysql_test.test_user_new;
    
    -- 设置别名 使用【as 别名】 或者直接在后面省略as 
    select id as id1,name name1 from mysql_test.test_user_new;
    
    -- 查询【去除重复记录】 distinct
    select distinct id from mysql_test.test_user_new;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    ① DQL 条件查询
    -- 条件查询 select 字段列表 from 表名 where 条件列表
    -- 比较运算符 >, <, >=, <=, <>, !=, between and, in(...), like, is null
    select id,name from mysql_test.test_user_new where id > 1
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    在这里插入图片描述

    · like 模糊匹配, 下划线代表单个字符 【当然下划线可以有多个】;百分号代表 匹配任意个字符;

    -- like 百分号匹配任意多个字符  下面的含义【'小'的前面与后面有任意个字符的】
    select id,name from mysql_test.test_user_new where name like '%小%'
    
    -- like 下划线匹配一个字符 下面的含义【'小'开头的后面只有两个字符的】
    select id,name from mysql_test.test_user_new where name like '小__'
    
    • 1
    • 2
    • 3
    • 4
    • 5

    · between … and … 范围之内查询

    -- between and 查询
    -- 【between 最小值 and 最大值】
    select id,name from mysql_test.test_user_new where id between 1 and 10;
    
    • 1
    • 2
    • 3
    ② DQL 聚合查询

    聚合查询的含义时查询时使用聚合函数进行查询:将一列数据作为一个整体进行纵向计算;

    常见的聚合函数:

    ​ · count() 统计数量

    ​ · max() 最大值

    ​ · min() 最小值

    ​ · avg() 平均值

    ​ · sum() 求和

    【注意】使用聚合函数时,null 不参数所有的聚合函数运算;

    【举例】使用count(id) 时,当id字段为null时不被统计;

    -- 聚合函数直接作用于字段
    -- 求最大值 max()
    select max(age) from mysql_test.test_user_new;
    
    -- 求平均值 avg()
    select avg(age) from mysql_test.test_user_new;
    
    -- 求和 sum()
    select sum(age) from mysql_test.test_user_new;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    ③ DQL 分组查询
    -- 分组查询 select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]
    -- 分组查询 经常配合聚合函数使用
    -- 分组之后只能查询分组的字段与聚合函数,其他字段查询没有意义
    select age,count(1) from mysql_test.test_user_new group by age;
    
    • 1
    • 2
    • 3
    • 4
    [1] where 与 having的区别
    /* 
     *【注意】where 与 having之间的区别:
     * 时机不同: where是在分组之前进行过滤的,不符合条件不参与分组;having 是分组之后进行结果过滤的;
     * 判断条件不同: 【where 不能对聚合函数进行判断】,【having 可以对聚合函数判断】也就是聚合函数不能够出现在where里面,可以出现在having里面  
     */
    
    -- 【错误】聚合函数出现在where 里面
    select id from mysql_test.test_user_new where id = max(id);
    
    -- 【正确】聚合函数出现在having 里面
    select id,count(1) from mysql_test.test_user_new group by id having id = count(1);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    ⑤ DQL 排序查询

    · 排序方式:

    ​ · ASC : 升序;

    ​ · DESC : 降序

    · 可以根据多个字段进行排序

    · 如果是多字段排序,只有第一个字段的值是相同的时候,才会根据第二个字段进行排序;

    -- DQL 排序查询 select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
    select * from mysql_test.test_user_new order by id desc,age asc;
    
    • 1
    • 2
    ⑥ DQL 分页查询

    【注意】

    起始索引从 0 开始,起始索引 = (查询页码 -1 ) * 每页显示记录数;

    分页查询是数据库的方言,不同的数据库有不同的实现,MySQL里面是limit;

    如果查询的是第一页的数据,起始索引可以省略,直接简写为 limit 10;

    -- 分页查询 select 字段列表 from 表名 limit 起始索引,查询记录数;
    select * from mysql_test.test_user_new limit 0,4;
    
    • 1
    • 2
    ⑦ DQL 执行顺序

    【注意】

    select … from … where … group by … having … order by … limit 的顺序是编写顺序 不等于 执行顺序;

    执行顺序:

    ​ (1) from … 找表

    ​ (2) where … 判断表的条件

    ​ (3) group by … 分组的列表

    ​ (4) having … 分组后的条件列表

    ​ (5) select … 查询字段列表

    ​ (6) order by … 排序字段列表

    ​ (7) limit … 分页参数

  • 相关阅读:
    【SNMP】snmp trap 与介绍、安装、命令以及Trap的发送与接收java实现
    编译原理网课笔记——第一章
    java如何使用流式编程实现post请求呢?
    促成交、推复购、提效率……我们是认真的!
    中秋学习Qt6
    react:值得一看的“react哲学”
    【人因工程】认知行为可靠性评价浅谈
    【kali-信息收集】(1.4)识别活跃的主机/查看打开的端口:Nmap(网络映射器工具)
    【python学习】基础篇-常用函数-sorted() 对可迭代对象进行排序
    关于Windows11的优化内容 - 进阶者系列 - 学习者系列文章
  • 原文地址:https://blog.csdn.net/weixin_52578409/article/details/127644631