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

MySQL—函数—流程控制函数(基础)

一、引言

    接下来,我们就进入函数的最后一个部分:流程函数。而流程控制函数在我们的日常开发过程是很有用的。

流程控制函数在我们 sql 语句当中,经常用来实现条件的筛选,从而提高语句的一个执行效率。

我们主要介绍以下4个流程控制函数。

注意:

1、第三个和第四个基本上是一致的,都是 case 函数。

2、IF(value,t,f):意思是如果 value 的值为 true ,则返回 t ,否则返回 f

3、IFNULL(value1,value2):先判断第一个参数 value1 是否为空,如果不为空,返回 value1 ,而如果为,返回 value2

4、CASE WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END

case when :当什么时候。

val1 值为 true 的时候,则返回 res1 ,否则返回默认值 default ,语法块结束后面加一个 end

5、CASE [ expr ] WHEN [ val1 ] THEN [ res1 ] ... ELSE [ default ] END:

下面这个也是类似:如果表达式 expr 的值为 val1 ,则返回 res1 ,否则返回默认值,语法块结束用 end

二、操作

接下来回到工具 DataGrip 去一一操作刚刚学习的函数。

1、IF(value,t,f);

如果  value的值为 true 则返回第二个字段的值 t,否则返回 f。

正常来说这个 value 应该是一个条件表达式。

SELECT IF(true,'OK','NO');
SELECT IF(false,'OK','NO');

2、IFNULL(value1,value2);
SELECT IFNULL('value','default');

如果给的字符串是空的字符串,它返回的也是空串,而不是返回默认值。

SELECT IFNULL('','default');

如果为null,就会返回设定的默认值。

SELECT IFNULL(null,'default');

3、CASE WHEN THEN ... ELSE END(case 函数)

emp表 初始数据:

(1)需求:查询emp表的员工姓名和工作地址(如果北京/上海---->一线城市,其他---->二线城市)
SELECT name,(CASE workaddress WHEN '北京'THEN '一线城市' WHEN '上海' THEN '一线城市' ELSE '二线城市' END ) AS '工作地址' FROM emp;

三、案例 

根据需求完成一下SQL语句的编写。

(1)统计班级各个学生的成绩。展示的规则如下:

1、>=85,展示优秀

2、>= 60,展示及格。否则,展示不及格

完成这个案例,对控制函数的操作进行学习与巩固。

(1)首先先创建一个成绩表。

CREATE TABLE score (id INT COMMENT 'ID',name VARCHAR(20) COMMENT '姓名',math INT COMMENT '数学',english INT COMMENT '英语',chinese INT COMMENT '语文'
) COMMENT '学生成绩表';
INSERT INTO score(ID, NAME, MATH, ENGLISH, CHINESE) VALUES (1,'Tom',67,88,95),(2,'Rose',23,66,90),(3,'Jack',56,98,76);
SELECT * FROM score;

(2)接着完成题目的需求。

最终我们的表中的数据全部查询出来之后,要把分数变成对应的 '优秀'、'及格'或者是'不及格' 去展示出来。

SELECT id,name,(CASE WHEN math>=85 THEN '优秀' WHEN math>=60 THEN '及格' ELSE '不及格' END ) AS '数学',(CASE WHEN english>=85 THEN '优秀' WHEN english>=60 THEN '及格' ELSE '不及格' END ) AS '英语',(CASE WHEN chinese>=85 THEN '优秀' WHEN chinese>=60 THEN '及格' ELSE '不及格' END ) AS '语文'FROM score;

这就是这篇博客关于流程控制函数的全部内容。 

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

相关文章:

  • 2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷7(私有云)
  • Jenkins、GitLab部署项目
  • 21.Redis之分布式锁
  • Mysql基础学习:mysql8 JSON字段查询操作
  • 搭建基于Django的博客系统数据库迁移从Sqlite3到MySQL(四)
  • 24年护网工具,今年想参加护网的同学要会用
  • 解决TrueNas Scale部署immich后人脸识别失败,后台模型下载异常,immich更换支持中文搜索的CLIP大模型
  • 面试高频问题----2
  • Nginx的配置文件-详细使用说明
  • YOLOv5改进 | 卷积模块 | 提高网络的灵活性和表征能力的动态卷积【附代码+小白可上手】
  • 23、linux系统文件和日志分析
  • 安装VS2017后,离线安装Debugging Tools for Windows(QT5.9.2使用MSVC2017 64bit编译器)
  • 路由策略实验2
  • Linux网络-守护进程版字典翻译服务器
  • Python 推导式详解:高效简洁的数据处理技巧
  • 车联网安全入门——ICSim模拟器使用
  • leetcode - 20.有效的括号(LinkedHashMap)
  • 多维数组的动态内存分配(malloc和new)
  • 71、评测OrangePi AIpro开发板和USB CAMERAOAK视频解码+推理+编码+推流测试
  • 为什么需要开局调用函数?
  • QT-demo:0轴分布图表
  • git远程仓库限额的解决方法——大文件瘦身
  • 碰撞检测技术在AI中的重要作用
  • UE5 Cesium2 最新使用地理配准子关卡构造全球场景
  • 【Java数据结构】详解LinkedList与链表(二)
  • 【精读文献】J. Environ. Manage.|青藏高原生态恢复项目下植被覆盖动态及其对生态系统服务的约束效应
  • QT之常用控件
  • 【嵌入式硬件】DRV8874电机驱动
  • 考研数学:有些无穷小不能用等价无穷小的公式?
  • 谷歌浏览器的平替,内置开挂神器,我已爱不释手!