当前位置: 首页 > news >正文

【SQL学习进阶】从入门到高级应用(七)

在这里插入图片描述

文章目录

  • ✨数据处理函数
    • ✨if函数
    • ✨cast函数
    • ✨加密函数
  • ✨分组函数
    • ✨max
    • ✨min
    • ✨avg
    • ✨sum
    • ✨count
    • ✨分组函数组合使用
    • ✨分组函数注意事项
  • ✨分组查询
    • ✨group by
    • ✨having
    • ✨组内排序
  • ✨总结单表的DQL语句

🌈你好呀!我是 山顶风景独好
💕欢迎来到我的博客,很高兴能够在这里和您见面!
💕希望您在这里可以感受到一份轻松愉快的氛围!
💕这里不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

🏠大家订阅本专栏!本专栏旨在为SQL初学者提供一条逐步迈向高级应用的学习之路,带您从零开始,一步一步练习,逐步掌握SQL的精髓,实现技能的提升与飞跃!😊

✨数据处理函数

✨if函数

如果条件为TRUE则返回“YES”,如果条件为FALSE则返回“NO”:

SELECT IF(500<1000, "YES", "NO");

例如:如果工资高于3000,则输出1,反之则输出0
image.png
再例如:如果名字是SMITH的,工资上调10%,其他员工工资正常显示。
image.png
再例如:工作岗位是MANAGER的工资上调10%,是SALESMAN的工资上调20%,其他岗位工资正常。
image.png
上面这个需求也可以使用:case… when… then… when… then… else… end来完成:
image.png

✨cast函数

cast函数用于将值从一种数据类型转换为表达式中指定的另一种数据类型
语法:cast(值 as 数据类型)
例如:cast(‘2020-10-11’ as date),表示将字符串’2020-10-11’转换成日期date类型。
在使用cast函数时,可用的数据类型包括:

  • date:日期类型
  • time:时间类型
  • datetime:日期时间类型
  • signed:有符号的int类型(有符号指的是正数负数)
  • char:定长字符串类型
  • decimal:浮点型

image.png
image.png
image.png
image.png

✨加密函数

md5函数,可以将给定的字符串经过md5算法进行加密处理,字符串经过加密之后会生成一个固定长度32位的字符串,md5加密之后的密文通常是不能解密的:
image.png

✨分组函数

分组函数的执行原则:先分组,然后对每一组数据执行分组函数。如果没有分组语句group by的话,整张表的数据自成一组。
分组函数包括五个:

  • max:最大值
  • min:最小值
  • avg:平均值
  • sum:求和
  • count:计数

✨max

找出员工的最高薪资

select max(sal) from emp;

✨min

找出员工的最低工资

select min(sal) from emp;

✨avg

计算员工的平均薪资

select avg(sal) from emp;

✨sum

计算员工的工资和

select sum(sal) from emp;

计算员工的津贴之和

select sum(comm) from emp;

重点:所有的分组函数都是自动忽略NULL的。

✨count

统计员工人数

select count(ename) from emp;
select count(*) from emp;
select count(1) from emp;

count(*)和count(1)的效果一样,统计该组中总记录行数。
count(ename)统计的是这个ename字段中不为NULL个数总和。
例如:count(comm) 结果是 4,而不是14

select count(comm) from emp;

统计岗位数量

select count(distinct job) from emp;

✨分组函数组合使用

select count(*),max(sal),min(sal),avg(sal),sum(sal) from emp;

✨分组函数注意事项

分组函数不能直接使用在where子句当中
select ename,job from emp where sal > avg(sal); 这个会报错的
原因:分组的行为是在where执行之后才开始的。

✨分组查询

✨group by

按照某个字段分组,或者按照某些字段联合分组。注意:group by的执行是在where之后执行。
语法:
group by 字段
group by 字段1,字段2,字段3…
找出每个岗位的平均薪资

select job, avg(sal) from emp group by job;

找出每个部门最高工资

select deptno,max(sal) from emp group by deptno;

找出每个部门不同岗位的平均薪资

select deptno,job,avg(sal) from emp group by deptno,job;

当select语句中有group by的话,select后面只能跟分组函数或参加分组的字段

select ename,deptno,avg(sal) from emp group by deptno; // 这个SQL执行后会报错。

image.png

✨having

having写在group by的后面,当你对分组之后的数据不满意,可以继续通过having对分组之后的数据进行过滤。
where的过滤是在分组前进行过滤。
使用原则:尽量在where中过滤,实在不行,再使用having。越早过滤效率越高。

找出除20部分之外,其它部门的平均薪资。

select deptno,avg(sal) from emp where deptno<>20 group by deptno; // 建议
select deptno,avg(sal) from emp group by deptno having deptno <> 20; // 不建议

查询每个部门平均薪资,找出平均薪资高于2000的。

select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;

✨组内排序

案例:找出每个工作岗位的工资排名在前两名的。
substring_index函数的使用:
image.png
group_concat函数的使用:
image.png
学习了这两个函数之后,自己可以尝试写出来吗?

✨总结单表的DQL语句

select …5
from …1
where …2
group by …3
having …4
order by …6
重点掌握一个完整的DQL语句执行顺序。


✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊

🏠 我在CSDN等你哦!我的主页😍

在这里插入图片描述

http://www.lryc.cn/news/358669.html

相关文章:

  • 20231911 2023-2024-2 《网络攻防实践》实践十一报告
  • 5G专网驻网失败分析(suci无效)
  • 【PHP项目实战训练】——laravel框架的实战项目中可以做模板的增删查改功能(1)
  • go语言使用model Gorm MySQL查询数据 定时十分钟查询一次 查询十分钟前新建的数据
  • 透视AI技术:探索折射技术在去衣应用中的奥秘
  • 计算机网络工程师需要掌握的知识点
  • Java-Collection家族(List接口)
  • 成绩发布小程序哪个好用?
  • 如何让大模型在智能时代背景下更加先进:一种基于时代特征的探讨
  • Mac 分享 WIFI 后,iPhone 连接 WIFI,但无法上网
  • C语言编程:揭秘平均输入三个数的艺术
  • jvm 触发GC的时机和条件
  • UML用例图
  • fluent UI v9版本Dialog右上角x按钮聚焦问题解决
  • 【SAP HANA 33】前端参数多选情况下HANA如何使用IN来匹配?
  • Go 语言中常量和变量的定义、使用
  • 活动预告|6月13日Apache Flink Meetup·香港站
  • 算法(七)插入排序
  • 抖音太可怕了,我卸载了
  • AI大模型在测试中的深度应用与实践案例
  • OOP一元多项式类(运算符重载)
  • Docker compose 的方式一键部署夜莺
  • 解锁私域流量的奥秘:构建独特的私域生态
  • 在CentOS系统上安装Oracle JDK(华为镜像)
  • 7 步解决Android Studio模拟器切换中文输入
  • 如何搭建B2B2C商城系统?开发语言、功能扩展、优势分析
  • Rust的高效易用日志库—tklog
  • LabVIEW调用外部DLL(动态链接库)
  • Python图形界面(GUI)Tkinter笔记(十六):Radiobutton选项功能按钮(单选按钮)
  • 静态路由原理与配置