MySQL 基础 ———— 流程控制结构

引言

MySQL 中的流程控制作为基础知识的最后一块拼图,显得并不是特别重要,而且,在实际生产开发中,也往往不需要通过它来进行程序的控制,那么为什么还要学习它呢?我认为有以下几点:

1、知识的完整性:虽然MySQL 的流程控制结构并不重要,但是作为MySQL 基础知识的一部分,我认为有必要将它补充完善,最起码也要掌握其基本语法和结构,不至于到了真正用的时候临时抱佛脚。

2、任何知识都有其应用价值:虽然MySQL 的流程控制并不重要,但是知识的魅力就是,你不知道它什么时候就会用得上,所以为了有所准备,还是应该适当了解一下这部分内容。

3、给MySQL基础知识画个圆满的句号:MySQL基础系列一路走下来,可谓收获不少,虽然我敢肯定MySQL的知识内涵还远不止如此,但作为一个后端开发人员,能够将这一系列的总结掌握透彻,在实际开发中有所运用也基本算是一个优秀的开发者了。那么本篇流程控制结构的总结,不仅是要为基础知识画上句号,同时也是开启 MySQL 高级系列的起承转合之章。

一、分支结构

1.1 IF() 函数

功能:实现简单的双分支。

语法:IF(表达式1,表达式2,表达式3)

解析:IF() 函数很好理解,和Java 中的三目运算符完全一样,都是先判断第一表达式是否为 true,如果是,则执行表达式2的语句,如果是false,则执行表达式3 的语句。它可以应用与MySQL 中的任何地方,包括存储过程和函数中。

1.2 CASE  结构

功能:实现多分支。

语法

CASE 变量 | 表达式 | 字段WHEN 值1或表达式1  THEN  返回值1 [或语句1;]WHEN 值2或表达式2  THEN  返回值2 [或语句2;]...ELSE 其他情况返回值 [或语句;]END [CASE;]

解析:case 结构可以实现类似 Java 的switch 语句的等值判断,也可以实现类似 if...else if 的区间判断。它既可以嵌套在其他语句中,同时也可以作为独立的语句执行。BEGIN-END内外都可以使用。

1.3 IF 结构

IF 结构可以实现多分支结构,但只能用于 BEGIN-END 中。

语法:

IF 条件1 THEN 语句1;
ELSEIF 条件2 THEN 语句2;
...
ELSE 语句n;
END IF;

二、循环结构

MySQL 中的循环结构分为三类:

WHILE、LOOP、REPEAT

另外还有一些循环控制符:

ITERATE:类似于 Java 中的 continue,用于结束本次循环,继续下一次。

LEAVE : 类似于 Java 中的 break,用于结束循环。

WHILE 循环语法:

[标签:] WHILE 循环条件 DO循环体;
END WHILE [标签];

标签可以省略,但如果希望使用 LEAVE 等流程控制语句,则必须指定标签。

LOOP语法和 WHILE 类似,只是把 WHILE 关键字换成了 LOOP,可以用LOOP 模拟一些简单的死循环。

REPEAT 循环语法:

[标签:] REPEAT循环体;
UNTIL 结束循环的条件
END REPEAT [标签];

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 高级 ———— MySQL逻辑架构图简介

引言 本篇文章介绍MySQL的逻辑架构图。 MySQL并不完美,但足够灵活,能够适应高要求环境。MySQL不仅可以嵌入到应用程序中,同时也可以支持数据仓库、内容搜索、和部署软件、高可用的冗余系统、在线事务处理系统等各种应用类型。 一、MySQL逻…

Java正则表达式总结

引言 正则表达式(英文:regular expression)是用于描述字符串规则的工具,是记录文本规则的代码。 它可以用来搜索、编辑、处理文本。现有编程语言都支持正则表达式的处理,但每种语言都有细微的差别。 在Java 中&…

Linux 实操 —— 日志筛选操作(sed与wc命令介绍)

引言 在处理数据交互业务场景的问题时,经常会出现需要统计日志中出现某些指定关键字的行数,或者行数,那么如何通过Linux 命令来快速统计一段时间之内,某个特定关键字出现的行数呢?这篇文章将会给你答案。 一、快速统…

Java 注解知识总结

引言 本博客总结自《Java 编程思想》第 20 章。 一、什么是注解 注解是 Java 5 引入的一种通过反射机制实现的语法特性,开发者可以通过在类、域、方法等元素前面标记一个“标签”达到对程序的源码、类信息或运行时进行某种说明或处理的效果,尽可能地简…

Linux 实操 —— Linux 系统性能分析

引言 最近配合解决压测(性能测试)方面的问题,了解到了一些可以监控 Linux 系统性能指标,如CPU、IO、内存等的工具。 此篇博客主要讲解 Linux 系统监控的一些重点内容以及 sar 命令的使用。 一、Linux 性能分析聚焦 Linux 性能…

Java 动态代理解析

引言 本博客总结自《Java 编程思想》第十四章 一、实现第一个动态代理程序 代理是软件设计中重要的设计思想,它允许我们在调用实际操作之前或之后解耦式地编写额外的操作,而一旦不需要这些操作了,就可以轻易的移除它们。 浏览了《编程思想…

MySQL 基础 ————高频函数总结

一、MySQL函数调用方式 函数调用的基本语法: SELECT 函数(实参列表) [FROM 表] 其中,对于函数,需要重点关注三点: 1、函数的名称 2、参数列表 3、函数功能 二、函数的分类 在 MySQL中,函数分为两类:1、…

MySQL 高级 —— 复合索引简介(多列索引)

引言 复合索引是指包含多个数据列的索引,与之概念相对的是单列索引,仅包含一个数据列。在大多数情况下,建立多列索引的好处都要多于单列索引。另外,复合索引最多支持16个列,但请一定不要让复合索引包含太多的列&#…

MySQL 优化 —— SQL优化概述(优化专题开篇词)

引言 最近为了研究索引的知识,特地去MySQL 官网研读了一番,发现MySQL官网有比较全面的MySQL优化方案和知识背景,所以希望通过一系列文章,将官网的知识翻译总结一下,避免日后去网上胡乱搜索产生不必要的知识勘误风险。…

MySQL 优化 —— WHERE 子句优化

引言 本文翻译自 MySQL 官网:WHERE Clause Optimization WHERE 子句优化 这一部分我们来讨论对 WHERE 子句的优化处理。本部分的案例都是以 SELECT 语句为例,但这些优化同样适用于 DELETE 和 UPDATE 语句中的 WHERE 子句。 注意 因为对 MySQL 优化器的…

MySQL 优化 —— IS NULL 优化

引言 本博客翻译自 MySQL 官网:IS NULL Optimization, MySQL版本 5.7。 MySQL 对 IS NULL 的优化 MySQL 可以对 IS NULL 执行和常量等值判断(列名 常量表达式,如name Tom)相同的优化。MySQL 可以利用索引和范围来…

MySQL 优化 —— ORDER BY 优化

引言 本文翻译自MySQL 官网:ORDER BY Optimization,MySQL 版本:5.7。 这一部分描述了MySQL何时会使用索引来满足order by子句,filesort 操作会在索引不能生效的时候被用到,以及优化器对order by的执行计划信息。 or…

MySQL 高级 —— 索引实现的思考

引言 最近看了一个公开课,是有关MySQL对索引设计的思考。详细讲解了几种索引实现的设计思考与利弊辨析,讨论了为什么MySQL默认情况下会使用B树索引,B树索引又对B树做了哪些结构改进。 本片博客通过个人的学习理解和总结,由几种简…

MySQL 优化 —— MySQL 如何使用索引

引言 本文翻译自MySQL 官网 :How MySQL Uses Indexes ,MySQL 版本 5.7 。 提升 SELECT 操作性能最好的方式就是在查询的一列或多列上建立索引。索引的行为类似指向表数据的指针,可以让查询能够快速判断哪个记录满足 WHERE 子句中的条件&…

MySQL 优化 —— EXPLAIN 执行计划详解

引言 本博客大部分内容翻译自MySQL 官网 Understanding the Query Execution Plan 专题。另外有一些补充,则来自于网课以及《高性能MySQL(第三版)》。 根据我们的表、字段、索引、以及 where 子句中的条件等信息,MySQL 优化器会…

Git 初学札记(十)—— Reset 回退的三种状态解析

引言 工作中经常会涉及到需要本地代码覆盖更新的操作。有时候可能是从远端git 上直接覆盖更新,或者是其他本地分支覆盖更新当前分支等等。这个时候就需要用到 reset 操作。 reset 操作分为三种类型:Soft、Mixed、Hard。今天我们就来说说这三种类型究竟…

MySQL 高级 —— 深入理解 InnoDB 与 MyISAM

引言 在文件系统中,MySQL将每个数据库(也可以称之为schema)保存为数据目录下的一个子目录。创建表时,MySQL会在数据库子目录下创建一个与表同名的.frm文件保存表的定义。因为MySQL使用文件系统的目录和文件来保存数据库和表的定义…

Ts声明ElementUI控件

初用Ts&#xff0c;有时候想获取三方控件不太会声明类型&#xff0c;记录一下使用InstanceType导入类型 例如声明一个el-select <el-form-item label"类型:" prop"year" :loading"state.loading"><el-select v-model"props.ruleF…

关于 OutOfMemoryError 的总结与解决方法

引言 本文总结自周志明的《深入理解Java虚拟机》第二章部分内容。 这部分内容&#xff0c;可以为后续性能调优方面的工作起到铺垫作用。 一、什么是 OutOfMemoryError OurOfMemory 简称“OOM”&#xff0c; 直译为“内存耗尽”或“内存溢出”&#xff0c;当然&#xff0c;并…

Windows误关闭资源管理器重启的办法

引言 有时候Windows系统在开机后&#xff0c;在桌面底部的任务栏中无法正常加载必要的网络连接图标或音量图标等&#xff0c;导致无法手动操作音量或连接网络。这时候就会需要打开“任务管理器”重新启动“资源管理器”使其重新加载这些必要的控制图标。 但是由于操作失误&am…