• 【MySQL】的相关面试题(四)


    面试题

    1. HAVNG 子句 和 WHERE 的异同点?
      • having子句和where子句在sql中都用于指定筛选条件,但他们在功能和使用场景上存在明显的不同
      • 相同点:
        • 两者都用于基于特定的条件对数据进行筛选
      • 不同点:
        • 应用阶段 :where子句在数据分组前进行筛选,作用于原始数据。你可以使用where子句来过滤掉不需要的行然后才对结果进行分组,例如使用group by。having子句则在数据分组后进行筛选,组合与分组后的聚合数据。他通常与group by 子句一起使用,用于筛选分组后满足特定条件的组
        • 使用场景:where 子句用于筛选原始数据集中的行,不能用于聚合函数,having子句主要用于筛选使用聚合函数后的结果,例如sum,avg,count等
        • 操作对象:where子句作用于表中的每一行,having子句作用于由group by 产生的每一个组
      • 示例:
    -- 使用where过滤特定年份的销售记录
    select year,sum(revenue) from sales where year > 2000 group by year;
    -- 使用havaing过滤特定条件的分组结果
    select year ,sum(revenue) from sales group by year having sum(revebye) > 10000;
    
    • 1
    • 2
    • 3
    • 4
    1. union与unino all的区别
      • 在sql 中,union和union all都用于合并两个或者多个select语句的结果集。
      • union
        • union操作符用于合并两个或者多个select语句的结果集,并自动移除重复的行。
        • 在执行union操作的时候,数据库会进行额外的处理来确保每个返回的行都是唯一的。这通常涉及到对结果集进行排序和比较,一并找出并去除重复项
        • 由于这个去重和排序的过程,union操作可能会比union all更慢,特别是在处理大量数据的时候
      • union all
        • union all操作符与用于合并两个或者多个select语句的结果集,但他不会移除重复的行。
        • union all不执行去重操作,因此通常比union快
    2. mysql中in 和exists的区别
      • In操作符
        • in通常检查某个值是否存在另外一个列表中
        • 当使用in的时候,mysql会对内部的子查询结果集进行一次全量查询,然后将外部查询中的每个元素与这个结果集进行比较
        • in通常用于值比较少的情况,因为他需要将外部查询的每个元素都与内部查询结果集进行比较,当内部查询结果集较大的时候,着可能会导致性能问题
        • exists操作符
          • exists用来测试一个子查询是否至少返回一个行
          • 与in不同的事exists执行的是,他会在找到第一个匹配的行后立刻返回结果,不会继续执行处理更多的行。
          • exists通常用于那些只需要判断存在性而不关心具体的值的场景。由于exists在找到第一个符合条件的结果后就会停止搜索,这使得他在处理大量数据集时可能比in更好。
            什么是内连接、外连接、交叉连接、笛卡尔积呢?
            InnoDB引擎的4大特性,了解过吗
  • 相关阅读:
    面试官问我,Redis分布式锁如何续期?
    fiddler 监听不到接口怎么办
    集群节点状态监控和flink作业监控
    【kali-信息收集】(1.5)系统指纹识别:Nmap、p0f
    Cocos creator 学习笔记(2)
    图论|684.冗余连接 685. 冗余连接 II
    chapter8 Dimensionality Reduction(降维)
    455. 分发饼干 --力扣 --JAVA
    聊城两化融合管理体系贯标
    LeetCode 189. 轮转数组
  • 原文地址:https://blog.csdn.net/HelloFif/article/details/136681574