返回顶部
首页 > 资讯 > 精选 >Mariadb复合语句和流程控制怎么实现
  • 708
分享到

Mariadb复合语句和流程控制怎么实现

2023-06-27 08:06:25 708人浏览 安东尼
摘要

本篇内容主要讲解“Mariadb复合语句和流程控制怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mariadb复合语句和流程控制怎么实现”吧!复合语句在MariaDB 10.1.1+版本

本篇内容主要讲解“Mariadb复合语句和流程控制怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mariadb复合语句和流程控制怎么实现”吧!

复合语句

在MariaDB 10.1.1+版本中,我们可以在存储过程以外来使用复合语句了,顾名思义,复合语句就是将多条语句作为一个整体来执行,可以在其中使用一些逻辑判断,循环等功能,大大提高了sql语言的可编程性。

Mariadb复合语句和流程控制怎么实现

在存储过程以外使用复合语句需要遵守以下约定:

  • 仅可使用BEGIN, IF, CASE, LOOP, WHILE, REPEAT语句
  • BEGIN必须使用BEGIN NOT ATOMIC,这样不会规避autocommit
  • 不能以标签开头

当要使用复合语句时,可以使用如下的格式来使用:

BEGIN [NOT ATOMIC]   [statement_list]END

因为SQL语句要使用;来作为结束的标识符,但是,多条SQL语句,到底哪个才是结束符了?所以我们可以将复合语句的结束符修改为其他字符,使用如下命令即可:|可以替换为任意数量的任意字符。

delimiter |//该命令在当前会话有效,会影响后续所有SQL语句的结束符

复合语句例子

MariaDB [world]> DELIMITER ||MariaDB [world]> BEGIN NOT ATOMIC   -> SELECT * FROM user;   -> SELECT * FROM department;   -> END   -> ||

会顺序显示两张表的内容,但是,有什么呢?

嘿,都说了,增加了可编程性,还没判断、循环呢。

定义本地变量

本地变量仅在当前BEGIN..END内生效**,定义一个本地变量的语法如下:

DECLARE var_name [, var_name] type [DEFAULT value]type就是MariaDB中支持的那些数据类型。

比如如下例子:查询test1用户的组ID并放入到tmpdid变量中去

MariaDB [world]> BEGIN NOT ATOMIC   ->     DECLARE tmpdid INT DEFAULT 0;   ->     SELECT deptid INTO tmpdid FROM user WHERE name='test1';   ->     SELECT tmpdid;   ->     END|+--------+| tmpdid |+--------+|      1 |+--------+1 row in set (0.00 sec)

所以说,BEGIN…END是可以嵌套使用的,如在IF语句中使用BEGIN…END来创建一个新的定义域,当然BEGIN…END也是开启事务的标志

IF语句

语法如下:

IF search_condition THEN statement_list   [ELSEIF search_condition THEN statement_list] ...   [ELSE statement_list]END IF

这个就跟编程语言中的一样了,不再絮叨,来试试吧。

BEGIN NOT ATOMIC   DECLARE tmpdid INT DEFAULT 0;   SELECT deptid INTO tmpdid FROM user WHERE name='test1';   IF (tmpdid = 1) THEN   SELECT 'The User test1 is the member of salse';   ELSE   SELECT * FROM department WHERE id = tmpdid;   END IF;   END|

所以search_condition只要是可以表达TRUE或FALSE的表达式都行,比如:

BEGIN NOT ATOMIC   IF EXISTS(SELECT * FROM user WHERE name = 'lucy') THEN   SELECT 'Find the user lucy';   ELSE   SELECT 'Not Find';   END IF;   END|+--------------------+| Find the user lucy |+--------------------+| Find the user lucy |+--------------------+1 row in set (0.00 sec)
CASE 语句

CASE有两种用法,一种是像编程语言中的SWITCH一样,进行数据的挑选,另一种则是实现了多分支的IF-ELSE语句,语法如下:

//对某一个值进行筛选CASE case_value   WHEN when_value THEN statement_list   [WHEN when_value THEN statement_list] ...   [ELSE statement_list]END CASE//多分支的IF-ELSECASE   WHEN search_condition THEN statement_list   [WHEN search_condition THEN statement_list] ...   [ELSE statement_list]END CASE

…想不出来例子,放弃,哪天想到了再来补吧。

附官方例子一枚:

DELIMITER |CREATE PROCEDURE p()BEGIN DECLARE v INT DEFAULT 1; CASE v   WHEN 2 THEN SELECT v;   WHEN 3 THEN SELECT 0;   ELSE BEGIN END; END CASE;END;|
LOOP语句

LOOP之前没有用过,好像很多编程语言里都没有LOOP这个关键字了,用来实现简单的循环,需要配合LEAVE语句跳出循环。

设置一变量,将其加到100并退出:为啥要加到100?鬼知道,哈哈哈。

BEGIN NOT ATOMIC    DECLARE tempNum INT DEFAULT 0;    test:LOOP    SET tempNum=tempNum+1;    IF tempNum=100 THEN    LEAVE test;    END IF;    END LOOP test;    SELECT tempNum;END;    |

所以LOOP的语法如下:

[begin_label:] LOOP   statement_listEND LOOP [end_label]

通常,需要设置一个begin_label,用于标识该循环,以方便使用LEAVE跳出该循环,而end_label可以省略,但是如果想要给end_label的话,必须与begin_label的名称相同,而LEAVE的语法就很简单了:

LEAVE label
WHILE语句

WHILE就与编程语言中的一样了,语法如下:

[begin_label:] WHILE search_condition DO   statement_listEND WHILE [end_label]

当search_condition表达式不为TRUE时则不再执行循环。

查找某一用户的ID值为多少,为什么要写个循环呢?不知道呀,用WHERE不更好吗?

REPEAT..LOOP循环

REPEAT循环看起来非常像do…while循环,好吧,其实就是一回事。

第一次循环体不判断任何条件执行一次,然后再判断条件,如果条件还满足则继续执行,直到条件不满足为之,语法如下:

[begin_label:] REPEAT   statement_listUNTIL search_conditionEND REPEAT [end_label]

拼接所有用户名为一个字符串

MariaDB [world]> BEGIN NOT ATOMIC   ->     DECLARE i INT DEFAULT 1;   ->     DECLARE userNames VARCHAR(200) DEFAULT '';   ->     DECLARE tmpName VARCHAR(10) DEFAULT '';   ->     DECLARE userNums INT DEFAULT 0;   ->     SELECT COUNT(id) INTO userNums FROM user;   ->     REPEAT   ->         SELECT name INTO tmpName FROM user WHERE id = i;   ->         SET userNames = CONCAT(userNames,',',tmpName);   ->         SET i = i +1;   ->     UNTIL NOT i     END REPEAT;   ->     SELECT userNames;   ->     END|+--------------------------------------------------------------------------------------------+| userNames                                                                                  |+--------------------------------------------------------------------------------------------+| ,test,test1,lucy,mars,mark,test6,test7,test7,test8,test8,test9,test10,test11,test12,test13 |+--------------------------------------------------------------------------------------------+

到此,相信大家对“Mariadb复合语句和流程控制怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Mariadb复合语句和流程控制怎么实现

本文链接: https://lsjlt.com/news/309098.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mariadb复合语句和流程控制怎么实现
    本篇内容主要讲解“Mariadb复合语句和流程控制怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mariadb复合语句和流程控制怎么实现”吧!复合语句在MariaDB 10.1.1+版本...
    99+
    2023-06-27
  • JavaScript流程控制语句怎么用
    这篇文章主要介绍“JavaScript流程控制语句怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript流程控制语句怎么用”文章能帮助大家解决问题...
    99+
    2024-04-02
  • Python流程控制语句怎么用
    这篇文章主要介绍了Python流程控制语句怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python流程控制语句怎么用文章都会有所收获,下面我们一起来看看吧。Python 中有 while&nb...
    99+
    2023-06-30
  • PHP流程控制语句怎么使用
    在PHP中,流程控制语句用于根据不同的条件来执行不同的代码块。下面是一些常用的流程控制语句的使用方法:1. if语句:用于判断一个条...
    99+
    2023-09-05
    PHP
  • golang流程控制语句怎么使用
    本文小编为大家详细介绍“golang流程控制语句怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang流程控制语句怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。流程控制语句:1、if语句,由...
    99+
    2023-07-04
  • python循环控制之break和continue流程控制语句
    目录1.流程控制语 break1.1while循环1.2for循环二、循环控制语 continue1.流程控制语 break 用于结束整个循环结构,直接退出整个循环 例: 用两种循环...
    99+
    2024-04-02
  • mysql流程控制语句是什么
    这篇文章将为大家详细讲解有关mysql流程控制语句是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql中的流程控制语句包括有:IF语句、CASE语句、LOOP语...
    99+
    2024-04-02
  • JavaScript中有哪些循环语句和流程控制语句
    这篇文章将为大家详细讲解有关JavaScript中有哪些循环语句和流程控制语句,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。循环语句众所周知,常用的循环语句...
    99+
    2024-04-02
  • javascript流程控制语句集合的示例分析
    这篇文章将为大家详细讲解有关javascript流程控制语句集合的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、if语句   &...
    99+
    2024-04-02
  • Go语言流程控制语句是什么
    这篇文章主要讲解了“Go语言流程控制语句是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言流程控制语句是什么”吧!1.条件语句几个注意点和C#不一样的。if a ...
    99+
    2023-07-02
  • Python中的程序流程控制语句怎么用
    这篇文章主要介绍了Python中的程序流程控制语句怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中的程序流程控制语句怎么用文章都会有所收获,下面我们一起来看看吧。一、分支语句在Python中分...
    99+
    2023-06-29
  • javascript流程控制语句有什么用
    这篇文章主要讲解了“javascript流程控制语句有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript流程控制语句有什么用”吧! ...
    99+
    2024-04-02
  • Mysql流程控制语句的介绍和使用
    平时绝大部分时间可能都用不到Mysql的流程控制语句,但如果我们需要写存储过程的话,就会用到了。有了流程控制语句,mysql就能想其他编程语言一样写程序了。下面分别来介绍条件分支与循环体。条件分支mysql...
    99+
    2024-04-02
  • 实践中的Golang流程控制语句应用
    golang 流程控制语句可控制程序流,根据特定条件执行或跳过代码块。常用语句包括:if-else 语句:根据条件值执行不同的代码块。switch 语句:根据表达式值执行与特定值匹配的代...
    99+
    2024-04-03
    golang 流程控制 键值对
  • linux shell流程控制语句实例讲解(if、for、while、case语句实例)
    一、shell条件语句(if用法) if语句结构[if/then/elif/else/fi] if 条件测试语句 then action [elif 条件 action else action ] fi...
    99+
    2022-06-04
    语句 实例 流程
  • php流程控制语句的作用是什么
    php流程控制语句的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php流程控制语句的作用就是能基于不同条件执行不同的动作,PHP中流程控制语句有三种...
    99+
    2023-06-21
  • Java中的三种流程控制语句是什么
    这篇文章主要讲解了“Java中的三种流程控制语句是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的三种流程控制语句是什么”吧!顺序语句顺序顾名思义就是程序自上而下执行publi...
    99+
    2023-06-30
  • JAVA流程控制这么实现
    本篇内容介绍了“JAVA流程控制这么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!流程控制JAVA输入输出输入两种输入方法:方法一:ja...
    99+
    2023-06-29
  • MySQL 5.7 复制控制语句SET GLOBAL sql_slave_skip_counter怎么用
    小编给大家分享一下MySQL 5.7 复制控制语句SET GLOBAL sql_slave_skip_counter怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章...
    99+
    2024-04-02
  • Python中怎么实现程序流程控制条件
    这篇文章将为大家详细讲解有关Python中怎么实现程序流程控制条件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python 程序流程控制条件判断结构flag1 = so...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作