首页 > 数据库 >宋红康MySQL笔记

宋红康MySQL笔记

时间:2024-07-10 19:40:49浏览次数:13  
标签:salary MAX id 笔记 宋红康 MySQL department WHERE HAVING

MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板

https://www.bilibili.com/video/BV1iq4y1u7vj?p=43&vd_source=ecbebcd4db8fad7f74c518d13e78b165

HAVING的使用

#练习:查询各个部门中最高工资比10000高的部门信息
#错误的写法:
SELECT department_id,MAX(salary)
FROM employees
WHERE MAX(salary) > 10000
GROUP BY department_id;


#要求1:如果过滤条件中使用了聚合函数,则必须使用HAVING来替换WHERE。否则,报错。
#要求2:HAVING 必须声明在 GROUP BY 的后面。

#正确的写法:
SELECT department_id,MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary) > 10000;

#要求3:开发中,我们使用HAVING的前提是SQL中使用了GROUP BY。

 

 #练习:查询部门id为10,20,30,40这4个部门中最高工资比10000高的部门信息

#方式1:推荐,执行效率高于方式2.
SELECT department_id,MAX(salary)
FROM employees
WHERE department_id IN (10,20,30,40)
GROUP BY department_id
HAVING MAX(salary) > 10000;

#方式2:
SELECT department_id,MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary) > 10000 AND department_id IN (10,20,30,40);

#结论:当过滤条件中有聚合函数时,则此过滤条件必须声明在HAVING中。
# 当过滤条件中没有聚合函数时,则此过滤条件声明在WHERE中或HAVING中都可以。
# 但是,建议大家声明在WHERE中。

/*
WHERE 与 HAVING 的对比
1. 从适用范围上来讲,HAVING的适用范围更广。
2. 如果过滤条件中没有聚合函数:这种情况下,WHERE的执行效率要高于HAVING
*/

select语句的完整结构

SQL语句的执行顺序

 where在group by之前执行,一些行被删选掉了,所以比having效率高。因为还没分组,所以where中用聚合函数错误。

 

 在select中起了别名,可以再order中使用,不能在where中使用。

 

标签:salary,MAX,id,笔记,宋红康,MySQL,department,WHERE,HAVING
From: https://www.cnblogs.com/wuminggaodi/p/18294800

相关文章

  • Halcon学习笔记——Day1
    题外话:最近因为项目需要halcon,所以开始学习一下halcon,顺便记录一下学习的笔记,如果感兴趣就给个关注,后续我会持续更新关于halcon的学习笔记;一、视觉包含的学科:1、数学2、软件3、图像4、光学5、控制6、电气二、视觉需求1、识别定位2、测量(2D、3D)3、缺陷(外观检测)......
  • 2024 暑假学习笔记
    向量我们定义向量是多维空间中一条带方向的线段,由于不太需要考虑其绝对位置关系,只考虑相对位置,一般都是平移到原点然后记录终点的坐标,记为\(\vecx=(a_1,a_2,...,a_n)\)。一般来说我们只探讨二维向量,因为是比较容易想的。比如说:我们可以称这个向量为\(u\),也可以表示为......
  • 基于SpringBoot + SpringCloud+ElasticSear的在线教育管理系统设计与实现(MySQL、Mongo
    本项目适合做计算机相关专业的毕业设计,课程设计,技术难度适中、工作量比较充实。完整资源获取点击下载完整资源1、资源项目源码均已通过严格测试验证,保证能够正常运行;2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;3、本项目比较适合计算......
  • MySQL和Redis更新一致性问题
    1.先更新数据库,再更新缓存适用场景:适用于对数据一致性要求不是特别高,且缓存更新失败对系统影响较小的场景。例如,某些非关键数据的缓存更新。风险:如果缓存更新失败,会导致数据库和缓存数据不一致。//更新数据库updateMySQL(data);//更新缓存updateRedis(data);2......
  • MySQL中datetime和timestamp的区别
    #MySQL中datetime和timestamp的区别相同点两个数据类型存储时间的格式一致。均为YYYY-MM-DDHH:MM:SS两个数据类型都包含「日期」和「时间」部分。两个数据类型都可以存储微秒的小数秒(秒后6位小数秒)自动更新和默认值TIMESTAMP:支持默认值为当前时间,且在记录更新时可以......
  • mysql数据库中毒恢复
    一、立即隔离受感染的系统断开网络连接:首先,立即断开受感染系统的网络连接,以防止病毒进一步传播或黑客获取更多敏感信息。隔离受感染设备:将受感染的计算机或服务器从网络中隔离出来,以避免对其他系统造成影响。二、评估损害范围检查日志文件:查看系统日志和MySQL日志文件,了解病毒......
  • BKP备份寄存器和实时时钟笔记
    BKP(BackupRegisters)备份寄存器BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位TAMPER引脚产生的侵入事件将所有备份寄存器内容清除RTC引脚输出RTC校准时钟、RTC闹......
  • STM - PWR 笔记
    PWR(PowerControl)电源控制PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务低功耗模式包括睡眠模式(Sleep)、......
  • JavaSE学习笔记第二弹——对象和多态(上)
    目录面向对象基础面向对象程序设计的定义类的基本结构成员变量成员方法方法定义与使用设计练习方法重载构造方法静态变量和静态方法String和StringBuilder基本含义区别总结今天我们继续来学习JavaSE,扩展和Java相关的知识,与大家共勉。今天的主题是对象和多态,希......
  • C语言学习笔记(04)——内存空间的使用
    指针指针概述:内存类型资源的地址、门牌号的代名词指针只是个概念,要用还得用指针变量:存放指针这个概念的盒子C语言编译器对指针这个特殊的概念,有2个疑问?1、分配一个盒子,盒子要多大?​ 在32bit系统中,指针就是4个字节,指针大小都固定了,就是4字节,跟你指向什么类型没有关系2、盒子......